take ibl amount into account for translucent opacity

This commit is contained in:
AzaezelX 2025-12-13 20:52:36 -06:00
parent 9f29bee45f
commit fad8e12667
4 changed files with 12 additions and 10 deletions

View file

@ -3055,7 +3055,7 @@ void ReflectionProbeFeatGLSL::processPix(Vector<ShaderComponent*>& componentList
Var *ibl = (Var *)LangElement::find("ibl"); Var *ibl = (Var *)LangElement::find("ibl");
if (!ibl) if (!ibl)
{ {
ibl = new Var("ibl", "float3"); ibl = new Var("ibl", "float4");
} }
Var* eyePos = (Var*)LangElement::find("eyePosWorld"); Var* eyePos = (Var*)LangElement::find("eyePosWorld");
@ -3086,7 +3086,7 @@ void ReflectionProbeFeatGLSL::processPix(Vector<ShaderComponent*>& componentList
//Reflection vec //Reflection vec
String computeForwardProbes = String(" @ = computeForwardProbes(@,@,@,@,@,@,@,@,@,\r\n\t\t"); String computeForwardProbes = String(" @ = computeForwardProbes(@,@,@,@,@,@,@,@,@,\r\n\t\t");
computeForwardProbes += String("@,@,@,@,@,@,\r\n\t\t"); computeForwardProbes += String("@,@,@,@,@,@,\r\n\t\t");
computeForwardProbes += String("@,@).rgb; \r\n"); computeForwardProbes += String("@,@); \r\n");
meta->addStatement(new GenOp(computeForwardProbes.c_str(), new DecOp(ibl), surface, cubeMips, numProbes, worldToObjArray, probeConfigData, inProbePosArray, refScaleArray, inRefPosArray, eyePos, meta->addStatement(new GenOp(computeForwardProbes.c_str(), new DecOp(ibl), surface, cubeMips, numProbes, worldToObjArray, probeConfigData, inProbePosArray, refScaleArray, inRefPosArray, eyePos,
skylightCubemapIdx, SkylightDamp, BRDFTexture, WetnessTexture, accumTime, dampness, skylightCubemapIdx, SkylightDamp, BRDFTexture, WetnessTexture, accumTime, dampness,
@ -3100,7 +3100,7 @@ void ReflectionProbeFeatGLSL::processPix(Vector<ShaderComponent*>& componentList
ambient->constSortPos = cspPass; ambient->constSortPos = cspPass;
} }
meta->addStatement(new GenOp(" @.rgb *= @.rgb;\r\n", ibl, ambient)); meta->addStatement(new GenOp(" @.rgb *= @.rgb;\r\n", ibl, ambient));
meta->addStatement(new GenOp(" @.rgb = @.rgb;\r\n", curColor, ibl)); meta->addStatement(new GenOp(" @ = @;\r\n", curColor, ibl));
output = meta; output = meta;
} }

View file

@ -3143,7 +3143,7 @@ void ReflectionProbeFeatHLSL::processPix(Vector<ShaderComponent*> &componentList
Var* ibl = (Var*)LangElement::find("ibl"); Var* ibl = (Var*)LangElement::find("ibl");
if (!ibl) if (!ibl)
{ {
ibl = new Var("ibl", "float3"); ibl = new Var("ibl", "float4");
} }
Var* eyePos = (Var*)LangElement::find("eyePosWorld"); Var* eyePos = (Var*)LangElement::find("eyePosWorld");
@ -3174,7 +3174,7 @@ void ReflectionProbeFeatHLSL::processPix(Vector<ShaderComponent*> &componentList
String computeForwardProbes = String(" @ = computeForwardProbes(@,@,@,@,@,@,@,@,@,\r\n\t\t"); String computeForwardProbes = String(" @ = computeForwardProbes(@,@,@,@,@,@,@,@,@,\r\n\t\t");
computeForwardProbes += String("@,@,TORQUE_SAMPLER2D_MAKEARG(@),TORQUE_SAMPLER2D_MAKEARG(@), @, @,\r\n\t\t"); computeForwardProbes += String("@,@,TORQUE_SAMPLER2D_MAKEARG(@),TORQUE_SAMPLER2D_MAKEARG(@), @, @,\r\n\t\t");
computeForwardProbes += String("TORQUE_SAMPLERCUBEARRAY_MAKEARG(@),TORQUE_SAMPLERCUBEARRAY_MAKEARG(@)).rgb; \r\n"); computeForwardProbes += String("TORQUE_SAMPLERCUBEARRAY_MAKEARG(@),TORQUE_SAMPLERCUBEARRAY_MAKEARG(@)); \r\n");
meta->addStatement(new GenOp(computeForwardProbes.c_str(), new DecOp(ibl), surface, cubeMips, numProbes, worldToObjArray, probeConfigData, inProbePosArray, refScaleArray, inRefPosArray, eyePos, meta->addStatement(new GenOp(computeForwardProbes.c_str(), new DecOp(ibl), surface, cubeMips, numProbes, worldToObjArray, probeConfigData, inProbePosArray, refScaleArray, inRefPosArray, eyePos,
skylightCubemapIdx, SkylightDamp, BRDFTexture, WetnessTexture, accumTime, dampness, skylightCubemapIdx, SkylightDamp, BRDFTexture, WetnessTexture, accumTime, dampness,
@ -3188,7 +3188,7 @@ void ReflectionProbeFeatHLSL::processPix(Vector<ShaderComponent*> &componentList
ambient->constSortPos = cspPass; ambient->constSortPos = cspPass;
} }
meta->addStatement(new GenOp(" @.rgb *= @.rgb;\r\n", ibl, ambient)); meta->addStatement(new GenOp(" @.rgb *= @.rgb;\r\n", ibl, ambient));
meta->addStatement(new GenOp(" @.rgb = @.rgb;\r\n", curColor, ibl)); meta->addStatement(new GenOp(" @ = @;\r\n", curColor, ibl));
output = meta; output = meta;
} }

View file

@ -605,10 +605,11 @@ vec4 computeForwardProbes(Surface surface,
finalColor *= surface.ao; finalColor *= surface.ao;
if(isCapturing == 1) if(isCapturing == 1)
return vec4(lerp((finalColor), surface.baseColor.rgb,surface.metalness),0); return vec4(lerp((finalColor), surface.baseColor.rgb,surface.metalness),surface.baseColor.a);
else else
{ {
return vec4(finalColor, 0); float reflectionOpacity = min(max(surface.baseColor.a,length(specular+irradiance)),1.0);
return vec4(finalColor, reflectionOpacity);
} }
} }

View file

@ -610,10 +610,11 @@ float4 computeForwardProbes(Surface surface,
finalColor *= surface.ao; finalColor *= surface.ao;
if(isCapturing == 1) if(isCapturing == 1)
return float4(lerp((finalColor), surface.baseColor.rgb,surface.metalness),0); return float4(lerp((finalColor), surface.baseColor.rgb,surface.metalness),surface.baseColor.a);
else else
{ {
return float4(finalColor, 0); float reflectionOpacity = min(max(surface.baseColor.a,length(specular+irradiance)),1.0);
return float4(finalColor, reflectionOpacity);
} }
} }