diff --git a/Templates/Full/game/core/scripts/client/lighting/advanced/shaders.cs b/Templates/Full/game/core/scripts/client/lighting/advanced/shaders.cs index 12925d102..950919afb 100644 --- a/Templates/Full/game/core/scripts/client/lighting/advanced/shaders.cs +++ b/Templates/Full/game/core/scripts/client/lighting/advanced/shaders.cs @@ -327,6 +327,12 @@ singleton GFXStateBlockData( PFX_ReflectionProbeArrayStateBlock ) { samplersDefined = true; samplerStates[0] = SamplerClampLinear; + + blendDefined = true; + blendEnable = true; + blendSrc = GFXBlendSrcAlpha; + blendDest = GFXBlendInvSrcAlpha; + blendOp = GFXBlendOpAdd; }; singleton PostEffect( reflectionProbeArrayPostFX ) diff --git a/Templates/Full/game/shaders/common/lighting/advanced/reflectionProbeArrayP.hlsl b/Templates/Full/game/shaders/common/lighting/advanced/reflectionProbeArrayP.hlsl index 477657405..15dc398e3 100644 --- a/Templates/Full/game/shaders/common/lighting/advanced/reflectionProbeArrayP.hlsl +++ b/Templates/Full/game/shaders/common/lighting/advanced/reflectionProbeArrayP.hlsl @@ -114,14 +114,11 @@ float4 main( PFXVertToPix IN ) : SV_TARGET float invBlendSum = 0; for(i=0; i < numProbes; i++) - { - float3 probeWS = inProbePosArray[i].xyz; - float3 L = probeWS - surface.P; - + { if(useSphereMode[i].r) { float3 L = inProbePosArray[i].xyz - surface.P; - blendVal[i] = 1.0-length(L)/radius[i]; + blendVal[i] = 1.0-length(L)/radius[i].r; blendVal[i] = max(0,blendVal[i]); } else @@ -179,7 +176,7 @@ float4 main( PFXVertToPix IN ) : SV_TARGET } //final diffuse color float3 diffuse = kD * irradiance * surface.baseColor.rgb; - float4 finalColor = float4(diffuse + specular * surface.ao, 1); + float4 finalColor = float4(diffuse + specular * surface.ao, blendSum); return finalColor; }