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

Method setShaderParams

Engine/source/environment/waterBlock.cpp:403–446  ·  view source on GitHub ↗

----------------------------------------------------------------------------- set shader parameters -----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

401// set shader parameters
402//-----------------------------------------------------------------------------
403void WaterBlock::setShaderParams( SceneRenderState *state, BaseMatInstance *mat, const WaterMatParams &paramHandles)
404{
405 // Set variables that will be assigned to shader consts within WaterCommon
406 // before calling Parent::setShaderParams
407
408 mUndulateMaxDist = F32_MAX;
409
410 Parent::setShaderParams( state, mat, paramHandles );
411
412 // Now set the rest of the shader consts that are either unique to this
413 // class or that WaterObject leaves to us to handle...
414
415 MaterialParameters* matParams = mat->getMaterialParameters();
416
417 // set vertex shader constants
418 //-----------------------------------
419
420 MatrixF modelMat( getRenderTransform() );
421 if ( paramHandles.mModelMatSC->isValid() )
422 matParams->set(paramHandles.mModelMatSC, modelMat, GFXSCT_Float4x4);
423 matParams->setSafe(paramHandles.mGridElementSizeSC, (F32)mGridElementSize);
424
425 // set pixel shader constants
426 //-----------------------------------
427
428 LinearColorF c( mWaterFogData.color );
429 matParams->setSafe( paramHandles.mBaseColorSC, c );
430
431 // By default we need to show a true reflection is fullReflect is enabled and
432 // we are above water.
433 F32 reflect = mPlaneReflector.isEnabled() && !isUnderwater( state->getCameraPosition() );
434
435 // If we were occluded the last frame a query was fetched ( not necessarily last frame )
436 // and we weren't updated last frame... we don't have a valid texture to show
437 // so use the cubemap / fake reflection color this frame.
438 if ( mPlaneReflector.lastUpdateMs != REFLECTMGR->getLastUpdateMs() && mPlaneReflector.isOccluded() )
439 reflect = false;
440
441 Point4F reflectParams( mWaterPos.z, 0.0f, 1000.0f, !reflect );
442 matParams->setSafe( paramHandles.mReflectParamsSC, reflectParams );
443
444 VectorF reflectNorm = mReflectNormalUp ? VectorF(0,0,1) : static_cast<VectorF>(mPlaneReflector.refplane);
445 matParams->setSafe(paramHandles.mReflectNormalSC, reflectNorm );
446}
447
448void WaterBlock::innerRender( SceneRenderState *state )
449{

Callers

nothing calls this directly

Calls 6

getMaterialParametersMethod · 0.45
isValidMethod · 0.45
setMethod · 0.45
setSafeMethod · 0.45
isEnabledMethod · 0.45
isOccludedMethod · 0.45

Tested by

no test coverage detected