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

Method _setupTarget

Engine/source/postFx/postEffect.cpp:967–1120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

965}
966
967void PostEffect::_setupTarget( const SceneRenderState *state, bool *outClearTarget )
968{
969 if ( mNamedTarget.isRegistered() ||
970 mTargetName.compare( "$outTex", 0, String::NoCase ) == 0 )
971 {
972 // Size it relative to the texture of the first stage or
973 // if NULL then use the current target.
974
975 Point2I targetSize;
976
977 // If we have an absolute target size then use that.
978 if ( !mTargetSize.isZero() )
979 targetSize = mTargetSize;
980
981 // Else generate a relative size using the target scale.
982 else if ( mActiveTextures[ 0 ] )
983 {
984 const Point3I &texSize = mActiveTextures[ 0 ]->getSize();
985
986 targetSize.set( texSize.x * mTargetScale.x,
987 texSize.y * mTargetScale.y );
988 }
989 else
990 {
991 GFXTarget *oldTarget = GFX->getActiveRenderTarget();
992 const Point2I &oldTargetSize = oldTarget->getSize();
993
994 targetSize.set( oldTargetSize.x * mTargetScale.x,
995 oldTargetSize.y * mTargetScale.y );
996 }
997
998 // Make sure its at least 1x1.
999 targetSize.setMax( Point2I::One );
1000
1001 if ( mNamedTarget.isRegistered() ||
1002 !mTargetTex ||
1003 mTargetTex.getWidthHeight() != targetSize )
1004 {
1005 mTargetTex.set( targetSize.x, targetSize.y, mTargetFormat,
1006 &PostFxTargetProfile, "PostEffect::_setupTarget" );
1007
1008 if ( mTargetClear == PFXTargetClear_OnCreate )
1009 *outClearTarget = true;
1010
1011 if(mTargetViewport == PFXTargetViewport_GFXViewport)
1012 {
1013 // We may need to scale the GFX viewport to fit within
1014 // our target texture size
1015 GFXTarget *oldTarget = GFX->getActiveRenderTarget();
1016 const Point2I &oldTargetSize = oldTarget->getSize();
1017 Point2F scale(targetSize.x / F32(oldTargetSize.x), targetSize.y / F32(oldTargetSize.y));
1018
1019 const RectI &viewport = GFX->getViewport();
1020
1021 mNamedTarget.setViewport( RectI( viewport.point.x*scale.x, viewport.point.y*scale.y, viewport.extent.x*scale.x, viewport.extent.y*scale.y ) );
1022 }
1023 else if(mTargetViewport == PFXTargetViewport_NamedInTexture0 && mActiveNamedTarget[0] && mActiveNamedTarget[0]->getTexture())
1024 {

Callers

nothing calls this directly

Calls 12

getActiveRenderTargetMethod · 0.80
getWidthHeightMethod · 0.80
RectIClass · 0.50
isRegisteredMethod · 0.45
compareMethod · 0.45
isZeroMethod · 0.45
getSizeMethod · 0.45
setMethod · 0.45
setMaxMethod · 0.45
setViewportMethod · 0.45
getTextureMethod · 0.45

Tested by

no test coverage detected