MCPcopy Create free account
hub / github.com/DiligentGraphics/DiligentFX / RenderGridAxes

Method RenderGridAxes

Components/src/CoordinateGridRenderer.cpp:233–283  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

231}
232
233void CoordinateGridRenderer::RenderGridAxes(const RenderAttributes& RenderAttribs)
234{
235 auto& pPSO = GetPSO(RenderAttribs.FeatureFlags, RenderAttribs.pColorRTV->GetDesc().Format);
236 if (!pPSO)
237 {
238 const SHADER_COMPILE_FLAGS ShaderFlags = m_Settings.PackMatrixRowMajor ? SHADER_COMPILE_FLAG_PACK_MATRIX_ROW_MAJOR : SHADER_COMPILE_FLAG_NONE;
239
240 ShaderMacroHelper Macros;
241 AddShaderMacros(RenderAttribs.FeatureFlags, Macros);
242
243 const auto VS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "FullScreenTriangleVS.fx", "FullScreenTriangleVS", SHADER_TYPE_VERTEX, {}, ShaderFlags);
244 const auto PS = PostFXRenderTechnique::CreateShader(RenderAttribs.pDevice, RenderAttribs.pStateCache, "CoordinateGridPS.psh", "ComputeGridAxesPS", SHADER_TYPE_PIXEL, Macros, ShaderFlags);
245
246 PipelineResourceLayoutDescX ResourceLayout;
247 ResourceLayout
248 .AddVariable(SHADER_TYPE_PIXEL, "cbCameraAttribs", SHADER_RESOURCE_VARIABLE_TYPE_STATIC)
249 .AddVariable(SHADER_TYPE_PIXEL, "cbGridAxesAttribs", SHADER_RESOURCE_VARIABLE_TYPE_STATIC)
250 .AddVariable(SHADER_TYPE_PIXEL, "g_TextureDepth", SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC, SHADER_VARIABLE_FLAG_UNFILTERABLE_FLOAT_TEXTURE_WEBGPU);
251
252 GraphicsPipelineStateCreateInfoX PSOCreateInfo{"CoordinateGridRenderer::GridAxes"};
253 PSOCreateInfo
254 .AddShader(VS)
255 .AddShader(PS)
256 .AddRenderTarget(RenderAttribs.pColorRTV->GetDesc().Format)
257 .SetResourceLayout(ResourceLayout)
258 .SetRasterizerDesc(RS_SolidFillNoCull)
259 .SetDepthStencilDesc(DSS_DisableDepth)
260 .SetBlendDesc(BS_AlphaBlend)
261 .SetPrimitiveTopology(PRIMITIVE_TOPOLOGY_TRIANGLE_LIST);
262
263 RenderAttribs.pDevice->CreatePipelineState(PSOCreateInfo, &pPSO);
264 }
265
266 if (!m_SRB)
267 {
268 ShaderResourceVariableX{pPSO, SHADER_TYPE_PIXEL, "cbCameraAttribs"}.Set(m_Resources[RESOURCE_IDENTIFIER_CAMERA_CONSTANT_BUFFER].AsBuffer());
269 ShaderResourceVariableX{pPSO, SHADER_TYPE_PIXEL, "cbGridAxesAttribs"}.Set(m_Resources[RESOURCE_IDENTIFIER_SETTINGS_CONSTANT_BUFFER].AsBuffer());
270 pPSO->CreateShaderResourceBinding(&m_SRB, true);
271 }
272
273 ShaderResourceVariableX{m_SRB, SHADER_TYPE_PIXEL, "g_TextureDepth"}.Set(m_Resources[RESOURCE_IDENTIFIER_INPUT_DEPTH].GetTextureSRV());
274
275 ITextureView* pRTVs[] = {
276 RenderAttribs.pColorRTV};
277
278 RenderAttribs.pDeviceContext->SetRenderTargets(_countof(pRTVs), pRTVs, nullptr, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
279 RenderAttribs.pDeviceContext->SetPipelineState(pPSO);
280 RenderAttribs.pDeviceContext->CommitShaderResources(m_SRB, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
281 RenderAttribs.pDeviceContext->Draw({3, DRAW_FLAG_VERIFY_ALL, 1});
282 RenderAttribs.pDeviceContext->SetRenderTargets(0, nullptr, nullptr, RESOURCE_STATE_TRANSITION_MODE_NONE);
283}
284
285RefCntAutoPtr<IPipelineState>& CoordinateGridRenderer::GetPSO(FEATURE_FLAGS FeatureFlags, TEXTURE_FORMAT RTVFormat)
286{

Callers

nothing calls this directly

Calls 3

CreateShaderFunction · 0.85
SetPipelineStateMethod · 0.80
CommitShaderResourcesMethod · 0.80

Tested by

no test coverage detected