mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-13 15:44:36 +00:00
Merge pull request #616 from BeamNG/water_object_use_shader_param
Fix WaterObject TODO: Retrieve sampler numbers from parameter handles, see r22631.
This commit is contained in:
commit
eeb97ffa4c
2 changed files with 9 additions and 8 deletions
|
|
@ -91,6 +91,7 @@ void WaterMatParams::clear()
|
||||||
mSpecularParamsSC = NULL;
|
mSpecularParamsSC = NULL;
|
||||||
mDepthGradMaxSC = NULL;
|
mDepthGradMaxSC = NULL;
|
||||||
mReflectivitySC = NULL;
|
mReflectivitySC = NULL;
|
||||||
|
mDepthGradSamplerSC = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaterMatParams::init( BaseMatInstance* matInst )
|
void WaterMatParams::init( BaseMatInstance* matInst )
|
||||||
|
|
@ -132,6 +133,7 @@ void WaterMatParams::init( BaseMatInstance* matInst )
|
||||||
mSpecularParamsSC = matInst->getMaterialParameterHandle( "$specularParams" );
|
mSpecularParamsSC = matInst->getMaterialParameterHandle( "$specularParams" );
|
||||||
mDepthGradMaxSC = matInst->getMaterialParameterHandle( "$depthGradMax" );
|
mDepthGradMaxSC = matInst->getMaterialParameterHandle( "$depthGradMax" );
|
||||||
mReflectivitySC = matInst->getMaterialParameterHandle( "$reflectivity" );
|
mReflectivitySC = matInst->getMaterialParameterHandle( "$reflectivity" );
|
||||||
|
mDepthGradSamplerSC = matInst->getMaterialParameterHandle( "$depthGradMap" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -752,22 +754,20 @@ void WaterObject::renderObject( ObjectRenderInst *ri, SceneRenderState *state, B
|
||||||
|
|
||||||
void WaterObject::setCustomTextures( S32 matIdx, U32 pass, const WaterMatParams ¶mHandles )
|
void WaterObject::setCustomTextures( S32 matIdx, U32 pass, const WaterMatParams ¶mHandles )
|
||||||
{
|
{
|
||||||
// TODO: Retrieve sampler numbers from parameter handles, see r22631.
|
|
||||||
|
|
||||||
// Always use the ripple texture.
|
// Always use the ripple texture.
|
||||||
GFX->setTexture( 0, mRippleTex );
|
GFX->setTexture( paramHandles.mRippleSamplerSC->getSamplerRegister(pass), mRippleTex );
|
||||||
|
|
||||||
// Only above-water in advanced-lighting uses the foam texture.
|
// Only above-water in advanced-lighting uses the foam texture.
|
||||||
if ( matIdx == WaterMat )
|
if ( matIdx == WaterMat )
|
||||||
{
|
{
|
||||||
GFX->setTexture( 5, mFoamTex );
|
GFX->setTexture( paramHandles.mFoamSamplerSC->getSamplerRegister(pass), mFoamTex );
|
||||||
GFX->setTexture( 6, mDepthGradientTex );
|
GFX->setTexture( paramHandles.mDepthGradSamplerSC->getSamplerRegister(pass), mDepthGradientTex );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ( matIdx == WaterMat || matIdx == BasicWaterMat ) && mCubemap )
|
if ( ( matIdx == WaterMat || matIdx == BasicWaterMat ) && mCubemap )
|
||||||
GFX->setCubeTexture( 4, mCubemap->mCubemap );
|
GFX->setCubeTexture( paramHandles.mCubemapSamplerSC->getSamplerRegister(pass), mCubemap->mCubemap );
|
||||||
else
|
else if(paramHandles.mCubemapSamplerSC->getSamplerRegister(pass) != -1 )
|
||||||
GFX->setCubeTexture( 4, NULL );
|
GFX->setCubeTexture( paramHandles.mCubemapSamplerSC->getSamplerRegister(pass), NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaterObject::drawUnderwaterFilter( SceneRenderState *state )
|
void WaterObject::drawUnderwaterFilter( SceneRenderState *state )
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,7 @@ struct WaterMatParams
|
||||||
MaterialParameterHandle* mSpecularParamsSC;
|
MaterialParameterHandle* mSpecularParamsSC;
|
||||||
MaterialParameterHandle* mDepthGradMaxSC;
|
MaterialParameterHandle* mDepthGradMaxSC;
|
||||||
MaterialParameterHandle* mReflectivitySC;
|
MaterialParameterHandle* mReflectivitySC;
|
||||||
|
MaterialParameterHandle* mDepthGradSamplerSC;
|
||||||
|
|
||||||
void clear();
|
void clear();
|
||||||
void init(BaseMatInstance* matInst);
|
void init(BaseMatInstance* matInst);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue