aboutsummaryrefslogtreecommitdiff
path: root/demo/DemoApp/sceneFlow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'demo/DemoApp/sceneFlow.cpp')
-rw-r--r--demo/DemoApp/sceneFlow.cpp70
1 files changed, 69 insertions, 1 deletions
diff --git a/demo/DemoApp/sceneFlow.cpp b/demo/DemoApp/sceneFlow.cpp
index 80f87b1..5cdb70a 100644
--- a/demo/DemoApp/sceneFlow.cpp
+++ b/demo/DemoApp/sceneFlow.cpp
@@ -205,7 +205,7 @@ void FlowContext::computeContextEnd()
}
}
-bool FlowContext::updateBegin()
+bool FlowContext::updateBegin(float dt)
{
m_framesInFlight = computeContextBegin();
bool shouldFlush = (m_framesInFlight < m_maxFramesInFlight);
@@ -217,6 +217,12 @@ bool FlowContext::updateBegin()
NvFlowContextFlushRequestPush(m_renderCopyContext);
}
+ m_statUpdateAttemptCount += 1.0;
+ if (shouldFlush) m_statUpdateSuccessCount += 1.0;
+ m_statUpdateAttemptCount *= 0.99;
+ m_statUpdateSuccessCount *= 0.99;
+ m_statUpdateDt = dt;
+
return shouldFlush;
}
@@ -357,6 +363,12 @@ void FlowGridActor::init(FlowContext* flowContext, AppGraphCtx* appctx)
m_crossSection = NvFlowCreateCrossSection(flowContext->m_renderContext, &crossSectionDesc);
+ NvFlowGridSummaryDesc gridSummaryDesc = {};
+ gridSummaryDesc.gridExport = gridExport;
+
+ m_gridSummary = NvFlowCreateGridSummary(flowContext->m_gridContext, &gridSummaryDesc);
+ m_gridSummaryStateCPU = NvFlowCreateGridSummaryStateCPU(m_gridSummary);
+
NvFlowRenderMaterialPoolDesc materialPoolDesc = {};
materialPoolDesc.colorMapResolution = 64u;
m_colorMap.m_materialPool = NvFlowCreateRenderMaterialPool(flowContext->m_renderContext, &materialPoolDesc);
@@ -393,6 +405,8 @@ void FlowGridActor::release()
NvFlowReleaseGridProxy(m_gridProxy);
NvFlowReleaseVolumeRender(m_volumeRender);
NvFlowReleaseCrossSection(m_crossSection);
+ NvFlowReleaseGridSummary(m_gridSummary);
+ NvFlowReleaseGridSummaryStateCPU(m_gridSummaryStateCPU);
NvFlowReleaseRenderMaterialPool(m_colorMap.m_materialPool);
if (m_volumeShadow) NvFlowReleaseVolumeShadow(m_volumeShadow);
m_volumeShadow = nullptr;
@@ -405,6 +419,25 @@ void FlowGridActor::updatePreEmit(FlowContext* flowContext, float dt)
NvFlowRenderMaterialUpdate(m_colorMap.m_materialDefault, &m_renderMaterialDefaultParams);
NvFlowRenderMaterialUpdate(m_colorMap.m_material0, &m_renderMaterialMat0Params);
NvFlowRenderMaterialUpdate(m_colorMap.m_material1, &m_renderMaterialMat1Params);
+
+ if (m_enableTranslationTest)
+ {
+ m_enableTranslationTestOld = true;
+
+ m_translationTestTime += m_translationTimeScale * dt;
+ if (m_translationTestTime > 120.f) m_translationTestTime = 0.f;
+
+ bool parity = (m_translationTestTime - floorf(m_translationTestTime)) > 0.5f;
+ NvFlowFloat3 gridLocation = parity ? m_translationOffsetA : m_translationOffsetB;
+ NvFlowGridSetTargetLocation(m_grid, gridLocation);
+ }
+ else if(m_enableTranslationTestOld)
+ {
+ NvFlowFloat3 gridLocation = NvFlowFloat3{ 0.f, 0.f, 0.f };
+ NvFlowGridSetTargetLocation(m_grid, gridLocation);
+
+ m_enableTranslationTestOld = false;
+ }
}
void FlowGridActor::updatePostEmit(FlowContext* flowContext, float dt, bool shouldUpdate, bool shouldReset)
@@ -492,6 +525,27 @@ void FlowGridActor::updatePostEmit(FlowContext* flowContext, float dt, bool shou
}
auto gridExport = NvFlowGridGetGridExport(flowContext->m_gridContext, m_grid);
+
+ if (m_enableGridSummary)
+ {
+ NvFlowGridSummaryUpdateParams updateParams = {};
+ updateParams.gridExport = gridExport;
+ updateParams.stateCPU = m_gridSummaryStateCPU;
+
+ NvFlowGridSummaryUpdate(m_gridSummary, flowContext->m_gridContext, &updateParams);
+
+ NvFlowUint numLayers = NvFlowGridSummaryGetNumLayers(m_gridSummaryStateCPU);
+ for (NvFlowUint layerIdx = 0u; layerIdx < numLayers; layerIdx++)
+ {
+ NvFlowGridSummaryResult* results = nullptr;
+ NvFlowUint numResults = 0u;
+
+ NvFlowGridSummaryGetSummaries(m_gridSummaryStateCPU, &results, &numResults, layerIdx);
+
+ //printf("GridSummary layer(%d) numResults(%d)", layerIdx, numResults);
+ }
+ }
+
NvFlowGridProxyFlushParams flushParams = {};
flushParams.gridContext = flowContext->m_gridContext;
flushParams.gridCopyContext = flowContext->m_gridCopyContext;
@@ -686,6 +740,20 @@ void FlowGridActor::draw(FlowContext* flowContext, DirectX::CXMMATRIX projection
NvFlowVolumeShadowDebugRender(m_volumeShadow, flowContext->m_renderContext, &params);
}
+
+ if (m_enableGridSummary && m_enableGridSummaryDebugVis)
+ {
+ NvFlowGridSummaryDebugRenderParams params = {};
+
+ params.stateCPU = m_gridSummaryStateCPU;
+
+ params.renderTargetView = flowContext->m_rtv;
+
+ memcpy(&params.projectionMatrix, &projection, sizeof(NvFlowFloat4x4));
+ memcpy(&params.viewMatrix, &view, sizeof(NvFlowFloat4x4));
+
+ NvFlowGridSummaryDebugRender(m_gridSummary, flowContext->m_renderContext, &params);
+ }
}
// *********************** Flow Color Map *****************************************