Browse Source

fix distance falloff misassignmen. fix uninitialized attenuation in root probes

AzaezelX 8 tháng trước cách đây
mục cha
commit
a4266a1336

+ 0 - 1
Engine/source/T3D/lighting/boxEnvironmentProbe.cpp

@@ -78,7 +78,6 @@ BoxEnvironmentProbe::BoxEnvironmentProbe() : ReflectionProbe()
 {
    mCaptureMask = REFLECTION_PROBE_CAPTURE_TYPEMASK;
    mProbeShapeType = ProbeInfo::Box;
-   mAtten = 0.0;
 }
 
 BoxEnvironmentProbe::~BoxEnvironmentProbe()

+ 1 - 0
Engine/source/T3D/lighting/reflectionProbe.cpp

@@ -133,6 +133,7 @@ ReflectionProbe::ReflectionProbe()
 
    mCaptureMask = REFLECTION_PROBE_CAPTURE_TYPEMASK;
    mCanDamp = false;
+   mAtten = 0.0f;
 }
 
 ReflectionProbe::~ReflectionProbe()

+ 1 - 1
Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl

@@ -349,7 +349,7 @@ vec4 compute4Lights( Surface surface,
 }
 
 //Probe IBL stuff
-float defineSphereSpaceInfluence(vec3 wsPosition, vec3 wsProbePosition, float radius)
+float defineSphereSpaceInfluence(vec3 wsPosition, vec3 wsProbePosition, float radius, float atten)
 {
    float3 L = (wsProbePosition.xyz - wsPosition);
    float innerRadius = radius-(radius*atten);

+ 1 - 1
Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/gl/reflectionProbeArrayP.glsl

@@ -94,7 +94,7 @@ void main()
          }
          else if (probeConfigData[i].r == 1) //sphere
          {
-            contribution[i] = defineSphereSpaceInfluence(surface.P, probePosArray[i].xyz, probeConfigData[i].g, probeConfigData[i].b*atten); 
+            contribution[i] = defineSphereSpaceInfluence(surface.P, probePosArray[i].xyz, probeConfigData[i].g, probeConfigData[i].b)*atten; 
          }
 
          if (contribution[i]>0.0)

+ 2 - 2
Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/reflectionProbeArrayP.hlsl

@@ -87,8 +87,8 @@ float4 main(PFXVertToPix IN) : SV_TARGET
             contribution[i] = defineBoxSpaceInfluence(surface.P, worldToObjArray[i], probeConfigData[i].b)*atten;
          }
          else if (probeConfigData[i].r == 1) //sphere  
-         {
-            contribution[i] = defineSphereSpaceInfluence(surface.P, probePosArray[i].xyz, probeConfigData[i].g, probeConfigData[i].b*atten); 
+         { 
+            contribution[i] = defineSphereSpaceInfluence(surface.P, probePosArray[i].xyz, probeConfigData[i].g, probeConfigData[i].b)*atten; 
          }
 
             if (contribution[i]>0.0)