MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / execute

Method execute

samples/application/game/src/render/forward_pass.cpp:143–323  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

141}
142
143void RenderPassForward::execute(const skr_primitive_pass_context_t* context, skr::span<const skr_primitive_draw_packet_t> drawcalls)
144{
145 auto renderGraph = context->render_graph;
146 // TODO: multi-viewport
147 auto viewport_manager = context->renderer->get_viewport_manager();
148 auto viewport = viewport_manager->find_viewport(0u); // the main viewport
149
150 auto depth = renderGraph->create_texture(
151 [=](skr::render_graph::RenderGraph& g, skr::render_graph::TextureBuilder& builder) {
152 builder.set_name(SKR_UTF8("depth"))
153 .extent(viewport->viewport_width, viewport->viewport_height)
154 .format(depth_format)
155 .allow_depth_stencil();
156 if (viewport->viewport_width > 2048) builder.allocate_dedicated();
157 });
158 (void)depth;
159 if (!drawcalls.size()) return;
160
161 // 1.IMGUI control shading rate
162 const char8_t* shadingRateNames[] = {
163 u8"1x1", u8"2x2", u8"4x4",
164 u8"1x2", u8"2x1", u8"2x4", u8"4x2"
165 };
166 const auto ButtonText = skr::format(u8"SwitchShadingRate-{}", shadingRateNames[shading_rate]);
167 ImGui::Begin("ShadingRate");
168 if (ImGui::Button(ButtonText.c_str()))
169 {
170 if (shading_rate != CGPU_SHADING_RATE_COUNT - 1)
171 shading_rate = (ECGPUShadingRate)(shading_rate + 1);
172 else
173 shading_rate = CGPU_SHADING_RATE_FULL;
174 }
175 ImGui::End();
176
177 // 2.add a render graph buffer for forward cbuffer
178 auto cbuffer = renderGraph->create_buffer(
179 [=](skr::render_graph::RenderGraph& g, skr::render_graph::BufferBuilder& builder) {
180 builder.set_name(SKR_UTF8("forward_cbuffer"))
181 .size(sizeof(skr_float4x4_t))
182 .memory_usage(CGPU_MEM_USAGE_CPU_TO_GPU)
183 .with_flags(CGPU_BCF_PERSISTENT_MAP_BIT)
184 .with_tags(kRenderGraphDynamicResourceTag)
185 .prefer_on_device()
186 .as_uniform_buffer();
187 });
188
189 // 3.barrier skin vbs
190 renderGraph->add_copy_pass(
191 [=](skr::render_graph::RenderGraph& g, skr::render_graph::CopyPassBuilder& builder) {
192 builder.set_name(SKR_UTF8("BarrierSkinVertexBuffers"))
193 .can_be_lone();
194 },
195 [=, this](skr::render_graph::RenderGraph& g, skr::render_graph::CopyPassContext& context) {
196 SkrZoneScopedN("BarrierSkinMeshes");
197 CGPUResourceBarrierDescriptor barrier_desc = {};
198 skr::stl_vector<CGPUBufferBarrier> barriers;
199 auto barrierVertices = [&](sugoi_chunk_view_t* r_cv) {
200 const skr::anim::AnimComponent* anims = nullptr;

Callers 10

receiver_mainFunction · 0.45
provider_mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
main_module_execMethod · 0.45
main_module_execMethod · 0.45
runFunction · 0.45
main_module_execMethod · 0.45
submit_render_graphMethod · 0.45
job.cppFile · 0.45

Tested by

no test coverage detected