| 829 | } |
| 830 | |
| 831 | void RenderProbeMgr::render( SceneRenderState *state ) |
| 832 | { |
| 833 | if (getProbeArrayEffect() == nullptr) |
| 834 | { |
| 835 | mActiveProbes.clear(); |
| 836 | return; |
| 837 | } |
| 838 | |
| 839 | GFXDEBUGEVENT_SCOPE(RenderProbeMgr_render, ColorI::WHITE); |
| 840 | |
| 841 | //Sort the active probes |
| 842 | mActiveProbes.sort(_probeScoreCmp); |
| 843 | |
| 844 | // Initialize and set the per-frame data |
| 845 | _setupPerFrameParameters(state); |
| 846 | |
| 847 | // Early out if nothing to draw. |
| 848 | if ((!RenderProbeMgr::smRenderReflectionProbes && !dStrcmp(Con::getVariable("$Probes::Capturing", "0"), "1")) || (!mHasSkylight && mProbeData.effectiveProbeCount == 0)) |
| 849 | { |
| 850 | getProbeArrayEffect()->setSkip(true); |
| 851 | mActiveProbes.clear(); |
| 852 | return; |
| 853 | } |
| 854 | |
| 855 | GFXTransformSaver saver; |
| 856 | |
| 857 | //Visualization |
| 858 | String useDebugAtten = Con::getVariable("$Probes::showAttenuation", "0"); |
| 859 | mProbeArrayEffect->setShaderMacro("DEBUGVIZ_ATTENUATION", useDebugAtten); |
| 860 | |
| 861 | String useDebugSpecCubemap = Con::getVariable("$Probes::showSpecularCubemaps", "0"); |
| 862 | mProbeArrayEffect->setShaderMacro("DEBUGVIZ_SPECCUBEMAP", useDebugSpecCubemap); |
| 863 | |
| 864 | String useDebugDiffuseCubemap = Con::getVariable("$Probes::showDiffuseCubemaps", "0"); |
| 865 | mProbeArrayEffect->setShaderMacro("DEBUGVIZ_DIFFCUBEMAP", useDebugDiffuseCubemap); |
| 866 | |
| 867 | String useDebugContrib = Con::getVariable("$Probes::showProbeContrib", "0"); |
| 868 | mProbeArrayEffect->setShaderMacro("DEBUGVIZ_CONTRIB", useDebugContrib); |
| 869 | |
| 870 | if(mHasSkylight && mProbeData.effectiveProbeCount == 0) |
| 871 | mProbeArrayEffect->setShaderMacro("SKYLIGHT_ONLY", "1"); |
| 872 | else |
| 873 | mProbeArrayEffect->setShaderMacro("SKYLIGHT_ONLY", "0"); |
| 874 | |
| 875 | String probePerFrame = Con::getVariable("$pref::MaxProbesPerFrame", "8"); |
| 876 | mProbeArrayEffect->setShaderMacro("MAX_PROBES", probePerFrame); |
| 877 | |
| 878 | String probeCapturing = Con::getVariable("$Probes::Capturing", "0"); |
| 879 | mProbeArrayEffect->setShaderMacro("CAPTURING", probeCapturing); |
| 880 | |
| 881 | mProbeArrayEffect->setTexture(3, mBRDFTexture); |
| 882 | mProbeArrayEffect->setCubemapArrayTexture(4, mPrefilterArray); |
| 883 | mProbeArrayEffect->setCubemapArrayTexture(5, mIrradianceArray); |
| 884 | mProbeArrayEffect->setTexture(6, mWetnessTexture); |
| 885 | //ssao mask |
| 886 | if (AdvancedLightBinManager::smUseSSAOMask) |
| 887 | { |
| 888 | //find ssaoMask |
nothing calls this directly
no test coverage detected