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

Method Render

Components/src/VectorFieldRenderer.cpp:173–223  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

171}
172
173void VectorFieldRenderer::Render(const RenderAttribs& Attribs)
174{
175 if (Attribs.pContext == nullptr)
176 {
177 UNEXPECTED("Context must not be null");
178 return;
179 }
180
181 if (Attribs.GridSize.x == 0 || Attribs.GridSize.y == 0)
182 return;
183
184 if (Attribs.pVectorField == nullptr)
185 {
186 UNEXPECTED("Vector field must not be null");
187 return;
188 }
189
190 auto* pPSO = GetPSO({Attribs.ConvertOutputToSRGB});
191 if (pPSO == nullptr)
192 {
193 UNEXPECTED("Failed to get PSO");
194 return;
195 }
196
197 if (pPSO->GetStatus() != PIPELINE_STATE_STATUS_READY)
198 return;
199
200 if (!m_SRB)
201 {
202 pPSO->CreateShaderResourceBinding(&m_SRB, true);
203 m_SRB->GetVariableByName(SHADER_TYPE_VERTEX, "cbAttribs")->Set(m_RenderAttribsCB);
204 m_pVectorFieldVar = m_SRB->GetVariableByName(SHADER_TYPE_VERTEX, "g_tex2DVectorField");
205 VERIFY_EXPR(m_pVectorFieldVar != nullptr);
206 }
207
208 m_pVectorFieldVar->Set(Attribs.pVectorField);
209
210 {
211 MapHelper<HLSL::VectorFieldRenderAttribs> AttribsData{Attribs.pContext, m_RenderAttribsCB, MAP_WRITE, MAP_FLAG_DISCARD};
212 AttribsData->ScaleAndBias = {Attribs.Scale, Attribs.Bias};
213 AttribsData->f2GridSize = {static_cast<float>(Attribs.GridSize.x), static_cast<float>(Attribs.GridSize.y)};
214 AttribsData->u2GridSize = {Attribs.GridSize.x, Attribs.GridSize.y};
215 AttribsData->StartColor = Attribs.StartColor;
216 AttribsData->EndColor = Attribs.EndColor;
217 }
218
219 Attribs.pContext->SetPipelineState(pPSO);
220 Attribs.pContext->CommitShaderResources(m_SRB, RESOURCE_STATE_TRANSITION_MODE_VERIFY);
221 DrawAttribs drawAttribs{Attribs.GridSize.x * Attribs.GridSize.y * 2, DRAW_FLAG_VERIFY_ALL};
222 Attribs.pContext->Draw(drawAttribs);
223}
224
225} // namespace Diligent

Callers

nothing calls this directly

Calls 2

SetPipelineStateMethod · 0.80
CommitShaderResourcesMethod · 0.80

Tested by

no test coverage detected