diff --git a/engine/materials/customMaterial.cpp b/engine/materials/customMaterial.cpp index 011062fe..bff79c32 100644 --- a/engine/materials/customMaterial.cpp +++ b/engine/materials/customMaterial.cpp @@ -77,6 +77,15 @@ bool CustomMaterial::onAdd() mShaderData = static_cast(Sim::findObject(mShaderDataName)); + // TEMP: Disable this until we can figure out the z-fighting and brightness issues with this. + // Allow translucent objects to be seen behind each other + /*for (S32 i = 0; i < MAX_PASSES; i++) + { + CustomMaterial* mat = pass[i]; + if (mat && mat->translucent) + subPassTranslucent = true; + }*/ + return true; } @@ -489,7 +498,7 @@ bool CustomMaterial::setupPass(SceneGraphData& sgData) } - if (translucent) + if (isTranslucent()) { GFX->setAlphaBlendEnable(true); setBlendState(translucentBlendOp); @@ -511,6 +520,12 @@ bool CustomMaterial::setupPass(SceneGraphData& sgData) setupSubPass(sgData); + /*if (!setNextRefractPass(sgData.refractPass)) + { + cleanup(); + return false; + }*/ + return true; } diff --git a/engine/materials/material.cpp b/engine/materials/material.cpp index 852ea65c..b36f1c1d 100644 --- a/engine/materials/material.cpp +++ b/engine/materials/material.cpp @@ -101,6 +101,7 @@ Material::Material() doubleSided = false; translucent = false; + subPassTranslucent = false; translucentBlendOp = LerpAlpha; translucentZWrite = false; diff --git a/engine/materials/material.h b/engine/materials/material.h index 5e22c63b..97236ce3 100644 --- a/engine/materials/material.h +++ b/engine/materials/material.h @@ -159,6 +159,7 @@ class Material : public SimObject bool dynamicCubemap; bool translucent; + bool subPassTranslucent; BlendOp translucentBlendOp; bool translucentZWrite; @@ -220,6 +221,7 @@ class Material : public SimObject virtual void setStageData(); MatType getType() { return mType; } + bool isTranslucent() { return translucent || subPassTranslucent; } DECLARE_CONOBJECT(Material); }; diff --git a/engine/renderInstance/renderInstMgr.cpp b/engine/renderInstance/renderInstMgr.cpp index 2925d3b4..e2e3d870 100644 --- a/engine/renderInstance/renderInstMgr.cpp +++ b/engine/renderInstance/renderInstMgr.cpp @@ -157,7 +157,7 @@ void RenderInstManager::addInst(RenderInst* inst) AssertFatal(instMat->renderBin >= 0 && instMat->renderBin < NumRenderBins, "doh, invalid bin, check the renderBin property for this material"); mRenderBins[instMat->renderBin]->addElement(inst); } - else if (inst->translucent || (instMat && instMat->translucent) || (inst->visibility < 1.0f)) + else if (inst->translucent || (instMat && instMat->isTranslucent()) || (inst->visibility < 1.0f)) { PROFILE_END(); if (!hasGlow)