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

Method _setupTarget

Engine/source/postFx/postEffect.cpp:1215–1368  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1213}
1214
1215void PostEffect::_setupTarget( const SceneRenderState *state, bool *outClearTarget )
1216{
1217 if ( mNamedTarget.isRegistered() ||
1218 mTargetName.compare( "$outTex", 0, String::NoCase ) == 0 )
1219 {
1220 // Size it relative to the texture of the first stage or
1221 // if NULL then use the current target.
1222
1223 Point2I targetSize;
1224
1225 // If we have an absolute target size then use that.
1226 if ( !mTargetSize.isZero() )
1227 targetSize = mTargetSize;
1228
1229 // Else generate a relative size using the target scale.
1230 else if ( mActiveTextures[ 0 ] )
1231 {
1232 const Point3I &texSize = mActiveTextures[ 0 ]->getSize();
1233
1234 targetSize.set( texSize.x * mTargetScale.x,
1235 texSize.y * mTargetScale.y );
1236 }
1237 else
1238 {
1239 GFXTarget *oldTarget = GFX->getActiveRenderTarget();
1240 const Point2I &oldTargetSize = oldTarget->getSize();
1241
1242 targetSize.set( oldTargetSize.x * mTargetScale.x,
1243 oldTargetSize.y * mTargetScale.y );
1244 }
1245
1246 // Make sure its at least 1x1.
1247 targetSize.setMax( Point2I::One );
1248
1249 if ( mNamedTarget.isRegistered() ||
1250 !mTargetTex ||
1251 mTargetTex.getWidthHeight() != targetSize )
1252 {
1253 mTargetTex.set( targetSize.x, targetSize.y, mTargetFormat,
1254 &PostFxTargetProfile, "PostEffect::_setupTarget" );
1255
1256 if ( mTargetClear == PFXTargetClear_OnCreate )
1257 *outClearTarget = true;
1258
1259 if(mTargetViewport == PFXTargetViewport_GFXViewport)
1260 {
1261 // We may need to scale the GFX viewport to fit within
1262 // our target texture size
1263 GFXTarget *oldTarget = GFX->getActiveRenderTarget();
1264 const Point2I &oldTargetSize = oldTarget->getSize();
1265 Point2F scale(targetSize.x / F32(oldTargetSize.x), targetSize.y / F32(oldTargetSize.y));
1266
1267 const RectI &viewport = GFX->getViewport();
1268
1269 mNamedTarget.setViewport( RectI( viewport.point.x*scale.x, viewport.point.y*scale.y, viewport.extent.x*scale.x, viewport.extent.y*scale.y ) );
1270 }
1271 else if(mTargetViewport == PFXTargetViewport_NamedInTexture0 && mActiveNamedTarget[0] && mActiveNamedTarget[0]->getTexture())
1272 {

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