MCPcopy Create free account
hub / github.com/GarageGames/Torque3D / _render

Method _render

Engine/source/lighting/shadowMap/paraboloidLightShadowMap.cpp:77–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75}
76
77void ParaboloidLightShadowMap::_render( RenderPassManager* renderPass,
78 const SceneRenderState *diffuseState )
79{
80 PROFILE_SCOPE(ParaboloidLightShadowMap_render);
81
82 const LightMapParams *lmParams = mLight->getExtended<LightMapParams>();
83 const bool bUseLightmappedGeometry = lmParams ? !lmParams->representedInLightmap || lmParams->includeLightmappedGeometryInShadow : true;
84
85 const U32 texSize = getBestTexSize();
86
87 if ( mShadowMapTex.isNull() ||
88 mTexSize != texSize )
89 {
90 mTexSize = texSize;
91
92 mShadowMapTex.set( mTexSize, mTexSize,
93 ShadowMapFormat, &ShadowMapProfile,
94 "ParaboloidLightShadowMap" );
95 }
96
97 GFXFrustumSaver frustSaver;
98 GFXTransformSaver saver;
99
100 // Render the shadowmap!
101 GFX->pushActiveRenderTarget();
102
103 // Calc matrix and set up visible distance
104 mWorldToLightProj = mLight->getTransform();
105 mWorldToLightProj.inverse();
106 GFX->setWorldMatrix(mWorldToLightProj);
107
108 const F32 &lightRadius = mLight->getRange().x;
109 GFX->setOrtho(-lightRadius, lightRadius, -lightRadius, lightRadius, 1.0f, lightRadius, true);
110
111 // Set up target
112 mTarget->attachTexture( GFXTextureTarget::Color0, mShadowMapTex );
113 mTarget->attachTexture( GFXTextureTarget::DepthStencil,
114 _getDepthTarget( mShadowMapTex->getWidth(), mShadowMapTex->getHeight() ) );
115 GFX->setActiveRenderTarget(mTarget);
116 GFX->clear(GFXClearTarget | GFXClearStencil | GFXClearZBuffer, ColorI(255,255,255,255), 1.0f, 0);
117
118 // Create scene state, prep it
119 SceneManager* sceneManager = diffuseState->getSceneManager();
120
121 SceneRenderState shadowRenderState
122 (
123 sceneManager,
124 SPT_Shadow,
125 SceneCameraState::fromGFXWithViewport( diffuseState->getViewport() ),
126 renderPass
127 );
128
129 shadowRenderState.getMaterialDelegate().bind( this, &LightShadowMap::getShadowMaterial );
130 shadowRenderState.renderNonLightmappedMeshes( true );
131 shadowRenderState.renderLightmappedMeshes( bUseLightmappedGeometry );
132 shadowRenderState.setDiffuseCameraTransform( diffuseState->getCameraTransform() );
133 shadowRenderState.setWorldToScreenScale( diffuseState->getWorldToScreenScale() );
134

Callers

nothing calls this directly

Calls 15

getRangeMethod · 0.80
setOrthoMethod · 0.80
setActiveRenderTargetMethod · 0.80
setWorldToScreenScaleMethod · 0.80
getWorldToScreenScaleMethod · 0.80
renderSceneNoLightsMethod · 0.80
popActiveRenderTargetMethod · 0.80
ColorIFunction · 0.50

Tested by

no test coverage detected