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

Method _render

Engine/source/lighting/shadowMap/singleLightShadowMap.cpp:46–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44}
45
46void SingleLightShadowMap::_render( RenderPassManager* renderPass,
47 const SceneRenderState *diffuseState )
48{
49 PROFILE_SCOPE(SingleLightShadowMap_render);
50
51 const LightMapParams *lmParams = mLight->getExtended<LightMapParams>();
52 const bool bUseLightmappedGeometry = lmParams ? !lmParams->representedInLightmap || lmParams->includeLightmappedGeometryInShadow : true;
53
54 const U32 texSize = getBestTexSize();
55
56 if ( mShadowMapTex.isNull() ||
57 mTexSize != texSize )
58 {
59 mTexSize = texSize;
60
61 mShadowMapTex.set( mTexSize, mTexSize,
62 ShadowMapFormat, &ShadowMapProfile,
63 "SingleLightShadowMap" );
64 }
65
66 GFXFrustumSaver frustSaver;
67 GFXTransformSaver saver;
68
69 MatrixF lightMatrix;
70 calcLightMatrices( lightMatrix, diffuseState->getCameraFrustum() );
71 lightMatrix.inverse();
72 GFX->setWorldMatrix(lightMatrix);
73
74 const MatrixF& lightProj = GFX->getProjectionMatrix();
75 mWorldToLightProj = lightProj * lightMatrix;
76
77 // Render the shadowmap!
78 GFX->pushActiveRenderTarget();
79 mTarget->attachTexture( GFXTextureTarget::Color0, mShadowMapTex );
80 mTarget->attachTexture( GFXTextureTarget::DepthStencil,
81 _getDepthTarget( mShadowMapTex->getWidth(), mShadowMapTex->getHeight() ) );
82 GFX->setActiveRenderTarget(mTarget);
83 GFX->clear(GFXClearStencil | GFXClearZBuffer | GFXClearTarget, ColorI(255,255,255), 1.0f, 0);
84
85 SceneManager* sceneManager = diffuseState->getSceneManager();
86
87 SceneRenderState shadowRenderState
88 (
89 sceneManager,
90 SPT_Shadow,
91 SceneCameraState::fromGFXWithViewport( diffuseState->getViewport() ),
92 renderPass
93 );
94
95 shadowRenderState.getMaterialDelegate().bind( this, &LightShadowMap::getShadowMaterial );
96 shadowRenderState.renderNonLightmappedMeshes( true );
97 shadowRenderState.renderLightmappedMeshes( bUseLightmappedGeometry );
98 shadowRenderState.setDiffuseCameraTransform( diffuseState->getCameraTransform() );
99 shadowRenderState.setWorldToScreenScale( diffuseState->getWorldToScreenScale() );
100
101 sceneManager->renderSceneNoLights( &shadowRenderState, SHADOW_TYPEMASK );
102
103 _debugRender( &shadowRenderState );

Callers

nothing calls this directly

Calls 15

getProjectionMatrixMethod · 0.80
setActiveRenderTargetMethod · 0.80
setWorldToScreenScaleMethod · 0.80
getWorldToScreenScaleMethod · 0.80
renderSceneNoLightsMethod · 0.80
popActiveRenderTargetMethod · 0.80
ColorIFunction · 0.50
isNullMethod · 0.45

Tested by

no test coverage detected