mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-04-29 16:25:42 +00:00
Fix ORM maps in terrain textures
Fix default target for Composite Terrain GLSL
This commit is contained in:
parent
8b8f725fae
commit
49a8c0ad36
3 changed files with 53 additions and 33 deletions
|
|
@ -1260,7 +1260,7 @@ void TerrainORMMapFeatGLSL::processPix(Vector<ShaderComponent*> &componentList,
|
||||||
|
|
||||||
// search for material var
|
// search for material var
|
||||||
Var * ormConfig;
|
Var * ormConfig;
|
||||||
OutputTarget targ = RenderTarget1;
|
OutputTarget targ = DefaultTarget;
|
||||||
if (fd.features[MFT_isDeferred])
|
if (fd.features[MFT_isDeferred])
|
||||||
{
|
{
|
||||||
targ = RenderTarget2;
|
targ = RenderTarget2;
|
||||||
|
|
@ -1283,23 +1283,20 @@ void TerrainORMMapFeatGLSL::processPix(Vector<ShaderComponent*> &componentList,
|
||||||
String matinfoName(String::ToString("matinfoCol%d", compositeIndex));
|
String matinfoName(String::ToString("matinfoCol%d", compositeIndex));
|
||||||
Var *matinfoCol = new Var(matinfoName, "vec3");
|
Var *matinfoCol = new Var(matinfoName, "vec3");
|
||||||
|
|
||||||
Var *priorComp = (Var*)LangElement::find(String::ToString("matinfoCol%d", compositeIndex - 1));
|
if (compositeIndex == 0)
|
||||||
if (priorComp)
|
|
||||||
{
|
|
||||||
meta->addStatement(new GenOp(" @ = @.rgb*@;\r\n", new DecOp(matinfoCol), texOp, detailBlend));
|
|
||||||
meta->addStatement(new GenOp(" @.gba += @;\r\n", ormConfig, matinfoCol));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
meta->addStatement(new GenOp(" @ = lerp(vec3(1.0,1.0,0.0),@.rgb,@);\r\n", new DecOp(matinfoCol), texOp, detailBlend));
|
|
||||||
meta->addStatement(new GenOp(" @ = vec4(0.0,@);\r\n", ormConfig, matinfoCol));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fd.features[MFT_InvertRoughness])
|
|
||||||
{
|
{
|
||||||
meta->addStatement(new GenOp(" @.b = 1.0-@.b;\r\n", ormConfig, ormConfig));
|
meta->addStatement(new GenOp(" @ = vec4(0.0, 0.0, 0.0, 0.0);\r\n", ormConfig));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
meta->addStatement(new GenOp(" @ = @.rgb;\r\n", new DecOp(matinfoCol), texOp));
|
||||||
|
|
||||||
|
if (fd.features.hasFeature(MFT_InvertRoughness, compositeIndex))
|
||||||
|
{
|
||||||
|
meta->addStatement(new GenOp(" @.b = 1.0 - @.b;\r\n", matinfoCol, matinfoCol));
|
||||||
|
}
|
||||||
|
|
||||||
|
meta->addStatement(new GenOp(" @.gba += @ * @;\r\n", ormConfig, matinfoCol, detailBlend));
|
||||||
|
|
||||||
output = meta;
|
output = meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1321,9 +1318,11 @@ U32 TerrainBlankInfoMapFeatGLSL::getOutputTargets(const MaterialFeatureData &fd)
|
||||||
void TerrainBlankInfoMapFeatGLSL::processPix(Vector<ShaderComponent*> &componentList,
|
void TerrainBlankInfoMapFeatGLSL::processPix(Vector<ShaderComponent*> &componentList,
|
||||||
const MaterialFeatureData &fd)
|
const MaterialFeatureData &fd)
|
||||||
{
|
{
|
||||||
|
S32 compositeIndex = getProcessIndex();
|
||||||
|
|
||||||
// search for material var
|
// search for material var
|
||||||
Var *material;
|
Var *material;
|
||||||
OutputTarget targ = RenderTarget1;
|
OutputTarget targ = DefaultTarget;
|
||||||
if (fd.features[MFT_isDeferred])
|
if (fd.features[MFT_isDeferred])
|
||||||
{
|
{
|
||||||
targ = RenderTarget2;
|
targ = RenderTarget2;
|
||||||
|
|
@ -1340,7 +1339,17 @@ void TerrainBlankInfoMapFeatGLSL::processPix(Vector<ShaderComponent*> &component
|
||||||
material->setStructName("OUT");
|
material->setStructName("OUT");
|
||||||
}
|
}
|
||||||
|
|
||||||
meta->addStatement(new GenOp(" @ = vec4(0.0,1.0,1.0,0.0);\r\n", material));
|
if (compositeIndex == 0)
|
||||||
|
{
|
||||||
|
meta->addStatement(new GenOp(" @ = vec4(0.0, 0.0, 0.0, 0.0);\r\n", material));
|
||||||
|
}
|
||||||
|
|
||||||
|
Var* detailBlend = (Var*)LangElement::find(String::ToString("detailBlend%d", compositeIndex));
|
||||||
|
AssertFatal(detailBlend, "The detail blend is missing!");
|
||||||
|
|
||||||
|
String matinfoName(String::ToString("matinfoCol%d", compositeIndex));
|
||||||
|
|
||||||
|
meta->addStatement(new GenOp(" @.gba += vec3(@, @, 0.0);\r\n", material, detailBlend, detailBlend));
|
||||||
|
|
||||||
output = meta;
|
output = meta;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1300,24 +1300,21 @@ void TerrainORMMapFeatHLSL::processPix(Vector<ShaderComponent*> &componentList,
|
||||||
|
|
||||||
String matinfoName(String::ToString("matinfoCol%d", compositeIndex));
|
String matinfoName(String::ToString("matinfoCol%d", compositeIndex));
|
||||||
Var *matinfoCol = new Var(matinfoName, "float3");
|
Var *matinfoCol = new Var(matinfoName, "float3");
|
||||||
|
|
||||||
Var *priorComp = (Var*)LangElement::find(String::ToString("matinfoCol%d", compositeIndex - 1));
|
if (compositeIndex == 0)
|
||||||
if (priorComp)
|
|
||||||
{
|
{
|
||||||
meta->addStatement(new GenOp(" @ = @.rgb*@;\r\n", new DecOp(matinfoCol), texOp, detailBlend));
|
meta->addStatement(new GenOp(" @ = float4(0.0, 0.0, 0.0, 0.0);\r\n", ormConfig));
|
||||||
meta->addStatement(new GenOp(" @.gba += @;\r\n", ormConfig, matinfoCol));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
meta->addStatement(new GenOp(" @ = lerp(float3(1.0,1.0,0.0),@.rgb,@);\r\n", new DecOp(matinfoCol), texOp, detailBlend));
|
|
||||||
meta->addStatement(new GenOp(" @ = float4(0.0,@);\r\n", ormConfig, matinfoCol));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fd.features[MFT_InvertRoughness])
|
meta->addStatement(new GenOp(" @ = @.rgb;\r\n", new DecOp(matinfoCol), texOp));
|
||||||
|
|
||||||
|
if (fd.features.hasFeature(MFT_InvertRoughness, compositeIndex))
|
||||||
{
|
{
|
||||||
meta->addStatement(new GenOp(" @.b = 1.0-@.b;\r\n", ormConfig, ormConfig));
|
meta->addStatement(new GenOp(" @.b = 1.0 - @.b;\r\n", matinfoCol, matinfoCol));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
meta->addStatement(new GenOp(" @.gba += @ * @;\r\n", ormConfig, matinfoCol, detailBlend));
|
||||||
|
|
||||||
output = meta;
|
output = meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1337,6 +1334,8 @@ U32 TerrainBlankInfoMapFeatHLSL::getOutputTargets(const MaterialFeatureData &fd)
|
||||||
void TerrainBlankInfoMapFeatHLSL::processPix(Vector<ShaderComponent*> &componentList,
|
void TerrainBlankInfoMapFeatHLSL::processPix(Vector<ShaderComponent*> &componentList,
|
||||||
const MaterialFeatureData &fd)
|
const MaterialFeatureData &fd)
|
||||||
{
|
{
|
||||||
|
S32 compositeIndex = getProcessIndex();
|
||||||
|
|
||||||
// search for material var
|
// search for material var
|
||||||
Var *material;
|
Var *material;
|
||||||
OutputTarget targ = DefaultTarget;
|
OutputTarget targ = DefaultTarget;
|
||||||
|
|
@ -1356,7 +1355,17 @@ void TerrainBlankInfoMapFeatHLSL::processPix(Vector<ShaderComponent*> &component
|
||||||
material->setStructName("OUT");
|
material->setStructName("OUT");
|
||||||
}
|
}
|
||||||
|
|
||||||
meta->addStatement(new GenOp(" @ = float4(0.0,1.0,1.0,0.0);\r\n", material));
|
if (compositeIndex == 0)
|
||||||
|
{
|
||||||
|
meta->addStatement(new GenOp(" @ = float4(0.0, 0.0, 0.0, 0.0);\r\n", material));
|
||||||
|
}
|
||||||
|
|
||||||
|
Var* detailBlend = (Var*)LangElement::find(String::ToString("detailBlend%d", compositeIndex));
|
||||||
|
AssertFatal(detailBlend, "The detail blend is missing!");
|
||||||
|
|
||||||
|
String matinfoName(String::ToString("matinfoCol%d", compositeIndex));
|
||||||
|
|
||||||
|
meta->addStatement(new GenOp(" @.gba += float3(@, @, 0.0);\r\n", material, detailBlend, detailBlend));
|
||||||
|
|
||||||
output = meta;
|
output = meta;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -390,7 +390,6 @@ bool TerrainCellMaterial::_createPass( Vector<MaterialInfo*> *materials,
|
||||||
// if HDR is not enabled in the engine.
|
// if HDR is not enabled in the engine.
|
||||||
features.addFeature( MFT_HDROut );
|
features.addFeature( MFT_HDROut );
|
||||||
}
|
}
|
||||||
features.addFeature(MFT_DeferredTerrainBlankInfoMap);
|
|
||||||
|
|
||||||
// Enable lightmaps and fogging if we're in BL.
|
// Enable lightmaps and fogging if we're in BL.
|
||||||
if ( reflectMat || useBLM )
|
if ( reflectMat || useBLM )
|
||||||
|
|
@ -444,10 +443,13 @@ bool TerrainCellMaterial::_createPass( Vector<MaterialInfo*> *materials,
|
||||||
if (deferredMat)
|
if (deferredMat)
|
||||||
features.addFeature(MFT_isDeferred, featureIndex);
|
features.addFeature(MFT_isDeferred, featureIndex);
|
||||||
features.addFeature(MFT_TerrainORMMap, featureIndex);
|
features.addFeature(MFT_TerrainORMMap, featureIndex);
|
||||||
features.removeFeature(MFT_DeferredTerrainBlankInfoMap);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
features.addFeature(MFT_DeferredTerrainBlankInfoMap, featureIndex);
|
||||||
}
|
}
|
||||||
if (mat->getInvertRoughness())
|
if (mat->getInvertRoughness())
|
||||||
features.addFeature(MFT_InvertRoughness);
|
features.addFeature(MFT_InvertRoughness, featureIndex);
|
||||||
|
|
||||||
pass->materials.push_back( (*materials)[i] );
|
pass->materials.push_back( (*materials)[i] );
|
||||||
normalMaps.increment();
|
normalMaps.increment();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue