Skip to content

Commit

Permalink
Reduce verbosity with "using enum" for Rhi::ShaderType
Browse files Browse the repository at this point in the history
  • Loading branch information
egorodet committed Jan 9, 2025
1 parent 1725d7d commit 37eb784
Show file tree
Hide file tree
Showing 23 changed files with 219 additions and 176 deletions.
5 changes: 3 additions & 2 deletions Apps/01-HelloTriangle/HelloTriangleApp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ class HelloTriangleApp final // NOSONAR - destructor required
{
GraphicsApp::Init();

using enum Rhi::ShaderType;
m_render_state = GetRenderContext().CreateRenderState(
Rhi::RenderState::Settings
{
Expand All @@ -70,8 +71,8 @@ class HelloTriangleApp final // NOSONAR - destructor required
{
Rhi::Program::ShaderSet
{
{ Rhi::ShaderType::Vertex, { Data::ShaderProvider::Get(), { "HelloTriangle", "TriangleVS" } } },
{ Rhi::ShaderType::Pixel, { Data::ShaderProvider::Get(), { "HelloTriangle", "TrianglePS" } } },
{ Vertex, { Data::ShaderProvider::Get(), { "HelloTriangle", "TriangleVS" } } },
{ Pixel, { Data::ShaderProvider::Get(), { "HelloTriangle", "TrianglePS" } } },
},
Rhi::ProgramInputBufferLayouts{ },
Rhi::ProgramArgumentAccessors{ },
Expand Down
4 changes: 2 additions & 2 deletions Apps/01-HelloTriangle/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@ public:
{
Rhi::Program::ShaderSet
{
{ Rhi::ShaderType::Vertex, { Data::ShaderProvider::Get(), { "HelloTriangle", "TriangleVS" } } },
{ Rhi::ShaderType::Pixel, { Data::ShaderProvider::Get(), { "HelloTriangle", "TrianglePS" } } },
{ Vertex, { Data::ShaderProvider::Get(), { "HelloTriangle", "TriangleVS" } } },
{ Pixel, { Data::ShaderProvider::Get(), { "HelloTriangle", "TrianglePS" } } },
},
Rhi::ProgramInputBufferLayouts{ },
Rhi::ProgramArgumentAccessors{ },
Expand Down
10 changes: 6 additions & 4 deletions Apps/02-HelloCube/HelloCubeApp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ class HelloCubeApp final // NOSONAR - destructor required

void Init() override
{
using enum rhi::ShaderType;

GraphicsApp::Init();

m_camera.Resize(GetRenderContext().GetSettings().frame_size);
Expand All @@ -142,8 +144,8 @@ class HelloCubeApp final // NOSONAR - destructor required
{
Rhi::Program::ShaderSet
{
{ Rhi::ShaderType::Vertex, { Data::ShaderProvider::Get(), { "HelloCube", "CubeVS" }, vertex_shader_definitions } },
{ Rhi::ShaderType::Pixel, { Data::ShaderProvider::Get(), { "HelloCube", "CubePS" } } },
{ Vertex, { Data::ShaderProvider::Get(), { "HelloCube", "CubeVS" }, vertex_shader_definitions } },
{ Pixel, { Data::ShaderProvider::Get(), { "HelloCube", "CubePS" } } },
},
Rhi::ProgramInputBufferLayouts
{
Expand All @@ -155,7 +157,7 @@ class HelloCubeApp final // NOSONAR - destructor required
Rhi::ProgramArgumentAccessors
{
#ifdef UNIFORMS_ENABLED
META_PROGRAM_ARG_ROOT_BUFFER_FRAME_CONSTANT(Rhi::ShaderType::Vertex, "g_uniforms")
META_PROGRAM_ARG_ROOT_BUFFER_FRAME_CONSTANT(Vertex, "g_uniforms")
#endif
},
GetScreenRenderPattern().GetAttachmentFormats()
Expand Down Expand Up @@ -195,7 +197,7 @@ class HelloCubeApp final // NOSONAR - destructor required
// Configure program resource bindings
frame.program_bindings = m_render_state.GetProgram().CreateBindings({ }, frame.index);
frame.program_bindings.SetName(fmt::format("Cube Bindings {}", frame.index));
frame.uniforms_binding_ptr = &frame.program_bindings.Get({ Rhi::ShaderType::Vertex, "g_uniforms" });
frame.uniforms_binding_ptr = &frame.program_bindings.Get({ Vertex, "g_uniforms" });
#else
// Create vertex buffers for each frame
Rhi::Buffer vertex_buffer = GetRenderContext().CreateBuffer(Rhi::BufferSettings::ForVertexBuffer(m_cube_mesh.GetVertexDataSize(), m_cube_mesh.GetVertexSize(), true));
Expand Down
25 changes: 13 additions & 12 deletions Apps/02-HelloCube/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,11 @@ HelloCubeApp()
m_camera.ResetOrientation({ { 13.0F, 13.0F, 13.0F }, { 0.0F, 0.0F, 0.0F }, { 0.0F, 1.0F, 0.0F } });

// Setup camera rotation animation
GetAnimations().emplace_back(std::make_shared<Data::TimeAnimation>(
[this](double, double delta_seconds)
{
m_camera.Rotate(m_camera.GetOrientation().up, static_cast<float>(delta_seconds * 360.F / 8.F));
return true;
}));
GetAnimations().emplace_back(Data::MakeTimeAnimationPtr([this](double, double delta_seconds)
{
m_camera.Rotate(m_camera.GetOrientation().up, static_cast<float>(delta_seconds * 360.F / 8.F));
return true;
}));
}

```
Expand Down Expand Up @@ -140,6 +139,8 @@ public:
void Init() override
{
using enum rhi::ShaderType;
GraphicsApp::Init();
m_camera.Resize(GetRenderContext().GetSettings().frame_size);
Expand All @@ -153,8 +154,8 @@ public:
{
Rhi::Program::ShaderSet
{
{ Rhi::ShaderType::Vertex, { Data::ShaderProvider::Get(), { "HelloCube", "CubeVS" } } },
{ Rhi::ShaderType::Pixel, { Data::ShaderProvider::Get(), { "HelloCube", "CubePS" } } },
{ Vertex, { Data::ShaderProvider::Get(), { "HelloCube", "CubeVS" } } },
{ Pixel, { Data::ShaderProvider::Get(), { "HelloCube", "CubePS" } } },
},
Rhi::ProgramInputBufferLayouts
{
Expand Down Expand Up @@ -496,13 +497,13 @@ class HelloCubeApp final : public GraphicsApp
{
Rhi::Program::ShaderSet
{
{ Rhi::ShaderType::Vertex, { Data::ShaderProvider::Get(), { "HelloCube", "CubeVS" }, vertex_shader_definitions } },
{ Rhi::ShaderType::Pixel, { Data::ShaderProvider::Get(), { "HelloCube", "CubePS" } } },
{ Vertex, { Data::ShaderProvider::Get(), { "HelloCube", "CubeVS" }, vertex_shader_definitions } },
{ Pixel, { Data::ShaderProvider::Get(), { "HelloCube", "CubePS" } } },
},
...
Rhi::ProgramArgumentAccessors
{
META_PROGRAM_ARG_ROOT_BUFFER_FRAME_CONSTANT(Rhi::ShaderType::Vertex, "g_uniforms")
META_PROGRAM_ARG_ROOT_BUFFER_FRAME_CONSTANT(Vertex, "g_uniforms")
},
...
}
Expand Down Expand Up @@ -543,7 +544,7 @@ class HelloCubeApp final : public GraphicsApp
for(HelloCubeFrame& frame : GetFrames())
{
frame.program_bindings = m_render_state.GetProgram().CreateBindings({ }, frame.index);
frame.uniforms_binding_ptr = &frame.program_bindings.Get({ Rhi::ShaderType::Vertex, "g_uniforms" });
frame.uniforms_binding_ptr = &frame.program_bindings.Get({ Vertex, "g_uniforms" });
...
}
Expand Down
21 changes: 12 additions & 9 deletions Apps/03-TexturedCube/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,10 @@ TexturedCubeApp::TexturedCubeApp()
m_camera.ResetOrientation({ { 13.0F, 13.0F, -13.0F }, { 0.0F, 0.0F, 0.0F }, { 0.0F, 1.0F, 0.0F } });
// Setup animations
GetAnimations().emplace_back(std::make_shared<Data::TimeAnimation>(std::bind(&TexturedCubeApp::Animate, this, std::placeholders::_1, std::placeholders::_2)));
GetAnimations().emplace_back(Data::MakeTimeAnimationPtr([this](double elapsed_seconds, double delta_seconds)
{
return Animate(elapsed_seconds, delta_seconds);
}));
}
```

Expand Down Expand Up @@ -322,8 +325,8 @@ void TexturedCubeApp::Init()
{
rhi::Program::ShaderSet
{
{ rhi::ShaderType::Vertex, { Data::ShaderProvider::Get(), { "TexturedCube", "CubeVS" } } },
{ rhi::ShaderType::Pixel, { Data::ShaderProvider::Get(), { "TexturedCube", "CubePS" } } },
{ Vertex, { Data::ShaderProvider::Get(), { "TexturedCube", "CubeVS" } } },
{ Pixel, { Data::ShaderProvider::Get(), { "TexturedCube", "CubePS" } } },
},
rhi::ProgramInputBufferLayouts
{
Expand All @@ -334,8 +337,8 @@ void TexturedCubeApp::Init()
},
rhi::ProgramArgumentAccessors
{
META_PROGRAM_ARG_ROOT_BUFFER_CONSTANT(rhi::ShaderType::Pixel, "g_constants"),
META_PROGRAM_ARG_ROOT_BUFFER_FRAME_CONSTANT(rhi::ShaderType::All, "g_uniforms")
META_PROGRAM_ARG_ROOT_BUFFER_CONSTANT(Pixel, "g_constants"),
META_PROGRAM_ARG_ROOT_BUFFER_FRAME_CONSTANT(All, "g_uniforms")
},
GetScreenRenderPattern().GetAttachmentFormats()
}
Expand Down Expand Up @@ -369,11 +372,11 @@ void TexturedCubeApp::Init()
{
// Configure program resource bindings
frame.program_bindings = m_render_state.GetProgram().CreateBindings({
{ { rhi::ShaderType::Pixel, "g_constants" }, rhi::RootConstant(g_shader_constants) },
{ { rhi::ShaderType::Pixel, "g_texture" }, m_cube_texture.GetResourceView() },
{ { rhi::ShaderType::Pixel, "g_sampler" }, m_texture_sampler.GetResourceView() }
{ { Pixel, "g_constants" }, rhi::RootConstant(g_shader_constants) },
{ { Pixel, "g_texture" }, m_cube_texture.GetResourceView() },
{ { Pixel, "g_sampler" }, m_texture_sampler.GetResourceView() }
}, frame.index);
frame.uniforms_binding_ptr = &frame.program_bindings.Get({ rhi::ShaderType::All, "g_uniforms" });
frame.uniforms_binding_ptr = &frame.program_bindings.Get({ All, "g_uniforms" });

// Create command list for rendering
frame.render_cmd_list = render_cmd_queue.CreateRenderCommandList(frame.screen_pass);
Expand Down
19 changes: 11 additions & 8 deletions Apps/03-TexturedCube/TexturedCubeApp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ TexturedCubeApp::~TexturedCubeApp()

void TexturedCubeApp::Init()
{
using enum rhi::ShaderType;

UserInterfaceApp::Init();

const rhi::CommandQueue render_cmd_queue = GetRenderContext().GetRenderCommandKit().GetQueue();
Expand Down Expand Up @@ -114,10 +116,11 @@ void TexturedCubeApp::Init()
GetRenderContext().CreateProgram(
rhi::Program::Settings
{

rhi::Program::ShaderSet
{
{ rhi::ShaderType::Vertex, { Data::ShaderProvider::Get(), { "TexturedCube", "CubeVS" } } },
{ rhi::ShaderType::Pixel, { Data::ShaderProvider::Get(), { "TexturedCube", "CubePS" } } },
{ Vertex, { Data::ShaderProvider::Get(), { "TexturedCube", "CubeVS" } } },
{ Pixel, { Data::ShaderProvider::Get(), { "TexturedCube", "CubePS" } } },
},
rhi::ProgramInputBufferLayouts
{
Expand All @@ -128,8 +131,8 @@ void TexturedCubeApp::Init()
},
rhi::ProgramArgumentAccessors
{
META_PROGRAM_ARG_ROOT_BUFFER_CONSTANT(rhi::ShaderType::Pixel, "g_constants"),
META_PROGRAM_ARG_ROOT_BUFFER_FRAME_CONSTANT(rhi::ShaderType::All, "g_uniforms")
META_PROGRAM_ARG_ROOT_BUFFER_CONSTANT(Pixel, "g_constants"),
META_PROGRAM_ARG_ROOT_BUFFER_FRAME_CONSTANT(All, "g_uniforms")
},
GetScreenRenderPattern().GetAttachmentFormats()
}
Expand Down Expand Up @@ -158,12 +161,12 @@ void TexturedCubeApp::Init()
{
// Configure program resource bindings
frame.program_bindings = m_render_state.GetProgram().CreateBindings({
{ { rhi::ShaderType::Pixel, "g_constants" }, rhi::RootConstant(g_shader_constants) },
{ { rhi::ShaderType::Pixel, "g_texture" }, m_cube_texture.GetResourceView() },
{ { rhi::ShaderType::Pixel, "g_sampler" }, m_texture_sampler.GetResourceView() }
{ { Pixel, "g_constants" }, rhi::RootConstant(g_shader_constants) },
{ { Pixel, "g_texture" }, m_cube_texture.GetResourceView() },
{ { Pixel, "g_sampler" }, m_texture_sampler.GetResourceView() }
}, frame.index);
frame.program_bindings.SetName(fmt::format("Cube Bindings {}", frame.index));
frame.uniforms_binding_ptr = &frame.program_bindings.Get({ rhi::ShaderType::All, "g_uniforms" });
frame.uniforms_binding_ptr = &frame.program_bindings.Get({ All, "g_uniforms" });

// Create command list for rendering
frame.render_cmd_list = render_cmd_queue.CreateRenderCommandList(frame.screen_pass);
Expand Down
Loading

0 comments on commit 37eb784

Please sign in to comment.