MCPcopy Create free account
hub / github.com/MethanePowered/MethaneKit / Init

Method Init

Apps/07-ParallelRendering/ParallelRenderingApp.cpp:124–303  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122}
123
124void ParallelRenderingApp::Init()
125{
126 META_FUNCTION_TASK();
127 UserInterfaceApp::Init();
128
129 const rhi::CommandQueue render_cmd_queue = GetRenderContext().GetRenderCommandKit().GetQueue();
130 m_camera.Resize(GetRenderContext().GetSettings().frame_size);
131
132 // Create cube mesh
133 gfx::CubeMesh<CubeVertex> cube_mesh(CubeVertex::layout);
134
135 // Create render state with program
136 rhi::RenderState::Settings render_state_settings
137 {
138 .program = GetRenderContext().CreateProgram(
139 rhi::Program::Settings
140 {
141 .shader_set = rhi::Program::ShaderSet
142 {
143 { rhi::ShaderType::Vertex, { Data::ShaderProvider::Get(), { "ParallelRendering", "CubeVS" } } },
144 { rhi::ShaderType::Pixel, { Data::ShaderProvider::Get(), { "ParallelRendering", "CubePS" } } },
145 },
146 .input_buffer_layouts = rhi::ProgramInputBufferLayouts
147 {
148 rhi::Program::InputBufferLayout
149 {
150 rhi::Program::InputBufferLayout::ArgumentSemantics { cube_mesh.GetVertexLayout().GetSemantics() }
151 }
152 },
153 .argument_accessors = rhi::ProgramArgumentAccessors
154 {
155 // Addressable argument is manually defined
156#ifdef ROOT_CONSTANTS_ENABLED
157 META_PROGRAM_ARG_ROOT_BUFFER_MUTABLE(rhi::ShaderType::All, "g_uniforms")
158#else
159 META_PROGRAM_ARG_BUFFER_ADDRESS_MUTABLE(rhi::ShaderType::All, "g_uniforms")
160#endif
161 // Other arguments are defined in shader register spaces
162 },
163 .attachment_formats = GetScreenRenderPattern().GetAttachmentFormats()
164 }
165 ),
166 .render_pattern = GetScreenRenderPattern()
167 };
168 render_state_settings.program.SetName("Render Pipeline State");
169 render_state_settings.depth.enabled = true;
170 m_render_state = GetRenderContext().CreateRenderState( render_state_settings);
171
172 // Create cube mesh buffer resources
173 const uint32_t cubes_count = m_settings.GetTotalCubesCount();
174 const gfx::Mesh::Subsets mesh_subsets(cubes_count,
175 gfx::Mesh::Subset(gfx::Mesh::Type::Cube,
176 gfx::Mesh::Subset::Slice(0U, cube_mesh.GetVertexCount()),
177 gfx::Mesh::Subset::Slice(0U, cube_mesh.GetIndexCount()),
178 false));
179 m_cube_array_buffers_ptr = std::make_unique<MeshBuffers>(render_cmd_queue, std::move(cube_mesh), "Cube", mesh_subsets);
180
181 // Create cube-map render target texture

Callers

nothing calls this directly

Calls 15

SubsetClass · 0.85
GetQueueMethod · 0.80
GetRenderCommandKitMethod · 0.80
GetSemanticsMethod · 0.80
GetTotalCubesCountMethod · 0.80
GetVertexCountMethod · 0.80
GetIndexCountMethod · 0.80
GetUniformsBufferSizeMethod · 0.80
SliceClass · 0.50
ProgramBindingsClass · 0.50

Tested by

no test coverage detected