mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Companion PR to #719
Adds the OGL side. redoing it to make sure the PR history is clean.
This commit is contained in:
parent
95ab3a33a5
commit
71c19a6151
|
|
@ -347,8 +347,16 @@ void ParallaxFeatGLSL::processPix( Vector<ShaderComponent*> &componentList,
|
|||
Var *normalMap = getNormalMapTex();
|
||||
|
||||
// Call the library function to do the rest.
|
||||
meta->addStatement( new GenOp( " @.xy += parallaxOffset( @, @.xy, @, @ );\r\n",
|
||||
texCoord, normalMap, texCoord, negViewTS, parallaxInfo ) );
|
||||
if (fd.features.hasFeature(MFT_IsDXTnm, getProcessIndex()))
|
||||
{
|
||||
meta->addStatement(new GenOp(" @.xy += parallaxOffsetDxtnm( @, @.xy, @, @ );\r\n",
|
||||
texCoord, normalMap, texCoord, negViewTS, parallaxInfo));
|
||||
}
|
||||
else
|
||||
{
|
||||
meta->addStatement(new GenOp(" @.xy += parallaxOffset( @, @.xy, @, @ );\r\n",
|
||||
texCoord, normalMap, texCoord, negViewTS, parallaxInfo));
|
||||
}
|
||||
|
||||
// TODO: Fix second UV maybe?
|
||||
|
||||
|
|
|
|||
|
|
@ -468,8 +468,16 @@ void TerrainDetailMapFeatGLSL::processPix( Vector<ShaderComponent*> &component
|
|||
Var *normalMap = _getNormalMapTex();
|
||||
|
||||
// Call the library function to do the rest.
|
||||
meta->addStatement( new GenOp( " @.xy += parallaxOffset( @, @.xy, @, @.z * @ );\r\n",
|
||||
inDet, normalMap, inDet, negViewTS, detailInfo, detailBlend ) );
|
||||
if (fd.features.hasFeature(MFT_IsDXTnm, detailIndex))
|
||||
{
|
||||
meta->addStatement(new GenOp(" @.xy += parallaxOffsetDxtnm( @, @.xy, @, @.z * @ );\r\n",
|
||||
inDet, normalMap, inDet, negViewTS, detailInfo, detailBlend));
|
||||
}
|
||||
else
|
||||
{
|
||||
meta->addStatement(new GenOp(" @.xy += parallaxOffset( @, @.xy, @, @.z * @ );\r\n",
|
||||
inDet, normalMap, inDet, negViewTS, detailInfo, detailBlend));
|
||||
}
|
||||
}
|
||||
|
||||
// If this is a prepass then we skip color.
|
||||
|
|
|
|||
|
|
@ -150,6 +150,21 @@ vec2 parallaxOffset( sampler2D texMap, vec2 texCoord, vec3 negViewTS, float dept
|
|||
return offset;
|
||||
}
|
||||
|
||||
/// Same as parallaxOffset but for dxtnm where depth is stored in the red channel instead of the alpha
|
||||
vec2 parallaxOffsetDxtnm(sampler2D texMap, vec2 texCoord, vec3 negViewTS, float depthScale)
|
||||
{
|
||||
float depth = texture(texMap, texCoord).r;
|
||||
vec2 offset = negViewTS.xy * (depth * depthScale);
|
||||
|
||||
for (int i = 0; i < PARALLAX_REFINE_STEPS; i++)
|
||||
{
|
||||
depth = (depth + texture(texMap, texCoord + offset).r) * 0.5;
|
||||
offset = negViewTS.xy * (depth * depthScale);
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
/// The maximum value for 16bit per component integer HDR encoding.
|
||||
const float HDR_RGB16_MAX = 100.0;
|
||||
|
|
|
|||
|
|
@ -150,6 +150,21 @@ vec2 parallaxOffset( sampler2D texMap, vec2 texCoord, vec3 negViewTS, float dept
|
|||
return offset;
|
||||
}
|
||||
|
||||
/// Same as parallaxOffset but for dxtnm where depth is stored in the red channel instead of the alpha
|
||||
vec2 parallaxOffsetDxtnm(sampler2D texMap, vec2 texCoord, vec3 negViewTS, float depthScale)
|
||||
{
|
||||
float depth = texture(texMap, texCoord).r;
|
||||
vec2 offset = negViewTS.xy * (depth * depthScale);
|
||||
|
||||
for (int i = 0; i < PARALLAX_REFINE_STEPS; i++)
|
||||
{
|
||||
depth = (depth + texture(texMap, texCoord + offset).r) * 0.5;
|
||||
offset = negViewTS.xy * (depth * depthScale);
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
/// The maximum value for 16bit per component integer HDR encoding.
|
||||
const float HDR_RGB16_MAX = 100.0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue