From de10dfb03278c20120f9163af33239ad85e1666a Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 7 Aug 2018 11:17:18 -0700 Subject: [PATCH] don't bind materials during shadow pass --- .../src/RenderableMaterialEntityItem.cpp | 11 +++++++---- .../src/RenderableShapeEntityItem.cpp | 6 ++++-- libraries/render-utils/src/MeshPartPayload.cpp | 12 ++++++++---- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp index eabcb68e4f..d7a0cfd18d 100644 --- a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp @@ -112,11 +112,14 @@ void MaterialEntityRenderer::doRender(RenderArgs* args) { } batch.setModelTransform(renderTransform); - drawMaterial->setTextureTransforms(textureTransform); - // bind the material - RenderPipelines::bindMaterial(drawMaterial, batch, args->_enableTexturing); - args->_details._materialSwitches++; + if (args->_renderMode != render::Args::RenderMode::SHADOW_RENDER_MODE) { + drawMaterial->setTextureTransforms(textureTransform); + + // bind the material + RenderPipelines::bindMaterial(drawMaterial, batch, args->_enableTexturing); + args->_details._materialSwitches++; + } // Draw! DependencyManager::get()->renderSphere(batch); diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index de26f846ae..530566ac97 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -268,8 +268,10 @@ void ShapeEntityRenderer::doRender(RenderArgs* args) { geometryCache->renderSolidShapeInstance(args, batch, geometryShape, outColor, pipeline); } } else { - RenderPipelines::bindMaterial(mat, batch, args->_enableTexturing); - args->_details._materialSwitches++; + if (args->_renderMode != render::Args::RenderMode::SHADOW_RENDER_MODE) { + RenderPipelines::bindMaterial(mat, batch, args->_enableTexturing); + args->_details._materialSwitches++; + } geometryCache->renderShape(batch, geometryShape); } diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 9e335c9213..ca6e736a65 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -157,8 +157,10 @@ void MeshPartPayload::render(RenderArgs* args) { bindMesh(batch); // apply material properties - RenderPipelines::bindMaterial(!_drawMaterials.empty() ? _drawMaterials.top().material : DEFAULT_MATERIAL, batch, args->_enableTexturing); - args->_details._materialSwitches++; + if (args->_renderMode != render::Args::RenderMode::SHADOW_RENDER_MODE) { + RenderPipelines::bindMaterial(!_drawMaterials.empty() ? _drawMaterials.top().material : DEFAULT_MATERIAL, batch, args->_enableTexturing); + args->_details._materialSwitches++; + } // Draw! { @@ -417,8 +419,10 @@ void ModelMeshPartPayload::render(RenderArgs* args) { bindMesh(batch); // apply material properties - RenderPipelines::bindMaterial(!_drawMaterials.empty() ? _drawMaterials.top().material : DEFAULT_MATERIAL, batch, args->_enableTexturing); - args->_details._materialSwitches++; + if (args->_renderMode != render::Args::RenderMode::SHADOW_RENDER_MODE) { + RenderPipelines::bindMaterial(!_drawMaterials.empty() ? _drawMaterials.top().material : DEFAULT_MATERIAL, batch, args->_enableTexturing); + args->_details._materialSwitches++; + } // Draw! {