diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/renderers/rhi/renderer/renderer.cpp | 3 | ||||
-rw-r--r-- | src/plugins/renderers/rhi/renderer/renderview.cpp | 7 |
2 files changed, 5 insertions, 5 deletions
diff --git a/src/plugins/renderers/rhi/renderer/renderer.cpp b/src/plugins/renderers/rhi/renderer/renderer.cpp index ccf2a0584..81d1194f3 100644 --- a/src/plugins/renderers/rhi/renderer/renderer.cpp +++ b/src/plugins/renderers/rhi/renderer/renderer.cpp @@ -1360,6 +1360,7 @@ Renderer::prepareCommandsSubmission(const std::vector<RenderView *> &renderViews rhiPassesInfo.push_back(bucket); } + RHIShaderManager *rhiShaderManager = m_RHIResourceManagers->rhiShaderManager(); // Assign a Graphics Pipeline to each RenderCommand for (size_t i = 0; i < renderViewCount; ++i) { RenderView *rv = renderViews[i]; @@ -1376,6 +1377,8 @@ Renderer::prepareCommandsSubmission(const std::vector<RenderView *> &renderViews GeometryRenderer *rGeometryRenderer = m_nodesManager->data<GeometryRenderer, GeometryRendererManager>( command.m_geometryRenderer); + + command.m_rhiShader = rhiShaderManager->lookupResource(command.m_shaderId); // By this time shaders should have been loaded RHIShader *shader = command.m_rhiShader; if (!shader) diff --git a/src/plugins/renderers/rhi/renderer/renderview.cpp b/src/plugins/renderers/rhi/renderer/renderview.cpp index b37f57c45..c750373da 100644 --- a/src/plugins/renderers/rhi/renderer/renderview.cpp +++ b/src/plugins/renderers/rhi/renderer/renderview.cpp @@ -819,7 +819,6 @@ EntityRenderCommandData RenderView::buildDrawRenderCommands(const Entity **entit int offset, int count) const { EntityRenderCommandData commands; - RHIShaderManager *rhiShaderManager = m_renderer->rhiResourceManagers()->rhiShaderManager(); commands.reserve(count); @@ -869,11 +868,9 @@ EntityRenderCommandData RenderView::buildDrawRenderCommands(const Entity **entit m_renderer->defaultRenderState()->changeCost(command.m_stateSet.data()); } command.m_shaderId = pass->shaderProgram(); - command.m_rhiShader = rhiShaderManager->lookupResource(command.m_shaderId); - - // It takes two frames to have a valid command as we can only - // reference a glShader at frame n if it has been loaded at frame n - 1 + // At submission time, shaderId is used to retrieve a RHIShader + // No point in continuing if shaderId is null if (!command.m_shaderId) continue; |