-----------------------------------------------------------------------
| 879 | } |
| 880 | //----------------------------------------------------------------------- |
| 881 | static void updateShadowSplitOptions(const SceneManager* sceneManager, RenderQueue* queue) |
| 882 | { |
| 883 | int shadowTechnique = sceneManager->getShadowTechnique(); |
| 884 | if(!sceneManager->getCurrentViewport()->getShadowsEnabled()) |
| 885 | shadowTechnique = SHADOWTYPE_NONE; |
| 886 | |
| 887 | bool notIntegrated = (shadowTechnique & SHADOWDETAILTYPE_INTEGRATED) == 0; |
| 888 | |
| 889 | // Stencil Casters can always be receivers |
| 890 | queue->setShadowCastersCannotBeReceivers(!(shadowTechnique & SHADOWDETAILTYPE_STENCIL) && |
| 891 | !sceneManager->getShadowTextureSelfShadow()); |
| 892 | |
| 893 | // Additive lighting, we need to split everything by illumination stage |
| 894 | queue->setSplitPassesByLightingType((shadowTechnique & SHADOWDETAILTYPE_ADDITIVE) && notIntegrated); |
| 895 | |
| 896 | // Tell render queue to split off non-shadowable materials |
| 897 | queue->setSplitNoShadowPasses(shadowTechnique && notIntegrated); |
| 898 | } |
| 899 | |
| 900 | void SceneManager::prepareRenderQueue(void) |
| 901 | { |
no test coverage detected