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

Method setShaderParams

Engine/source/environment/waterObject.cpp:931–1063  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

929}
930
931void WaterObject::setShaderParams( SceneRenderState *state, BaseMatInstance *mat, const WaterMatParams &paramHandles )
932{
933 MaterialParameters* matParams = mat->getMaterialParameters();
934
935 matParams->setSafe( paramHandles.mElapsedTimeSC, (F32)Sim::getCurrentTime() / 1000.0f );
936
937 // set vertex shader constants
938 //-----------------------------------
939
940 Point2F reflectTexSize( mPlaneReflector.reflectTex.getWidth(), mPlaneReflector.reflectTex.getHeight() );
941 matParams->setSafe( paramHandles.mReflectTexSizeSC, reflectTexSize );
942
943 static AlignedArray<Point2F> mConstArray( MAX_WAVES, sizeof( Point4F ) );
944
945 // Ripples...
946
947 for ( U32 i = 0; i < MAX_WAVES; i++ )
948 mConstArray[i].set( -mRippleDir[i].x, -mRippleDir[i].y );
949 matParams->setSafe( paramHandles.mRippleDirSC, mConstArray );
950
951 Point3F rippleSpeed( mRippleSpeed[0], mRippleSpeed[1], mRippleSpeed[2] );
952 matParams->setSafe( paramHandles.mRippleSpeedSC, rippleSpeed );
953
954 Point4F rippleMagnitude( mRippleMagnitude[0],
955 mRippleMagnitude[1],
956 mRippleMagnitude[2],
957 mOverallRippleMagnitude );
958 matParams->setSafe( paramHandles.mRippleMagnitudeSC, rippleMagnitude );
959
960 for ( U32 i = 0; i < MAX_WAVES; i++ )
961 {
962 Point2F texScale = mRippleTexScale[i];
963 if ( texScale.x > 0.0 )
964 texScale.x = 1.0 / texScale.x;
965 if ( texScale.y > 0.0 )
966 texScale.y = 1.0 / texScale.y;
967
968 mConstArray[i].set( texScale.x, texScale.y );
969 }
970 matParams->setSafe(paramHandles.mRippleTexScaleSC, mConstArray);
971
972 static AlignedArray<Point4F> mConstArray4F( 3, sizeof( Point4F ) );
973
974 F32 angle, cosine, sine;
975
976 for ( U32 i = 0; i < MAX_WAVES; i++ )
977 {
978 angle = mAtan2( mRippleDir[i].x, -mRippleDir[i].y );
979 cosine = mCos( angle );
980 sine = mSin( angle );
981
982 mConstArray4F[i].set( cosine, sine, -sine, cosine );
983 matParams->setSafe( paramHandles.mRippleMatSC, mConstArray4F );
984 }
985
986 // Waves...
987
988 for ( U32 i = 0; i < MAX_WAVES; i++ )

Callers

nothing calls this directly

Calls 15

mAtan2Function · 0.85
mCosFunction · 0.85
mSinFunction · 0.85
getFarPlaneMethod · 0.80
getSpecialLightMethod · 0.80
getBrightnessMethod · 0.80
getCurrentTimeFunction · 0.50
getMaterialParametersMethod · 0.45
setSafeMethod · 0.45
getWidthMethod · 0.45
getHeightMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected