diff --git a/Engine/source/renderInstance/renderProbeMgr.cpp b/Engine/source/renderInstance/renderProbeMgr.cpp index f27ad4a97..a2af1c297 100644 --- a/Engine/source/renderInstance/renderProbeMgr.cpp +++ b/Engine/source/renderInstance/renderProbeMgr.cpp @@ -344,7 +344,14 @@ void RenderProbeMgr::_setupStaticParameters() probePositionsData[mEffectiveProbeCount] = Point4F(probePos.x, probePos.y, probePos.z,0); probeRefPositionsData[mEffectiveProbeCount] = Point4F(refPos.x, refPos.y, refPos.z, 0); - probeWorldToObjData[mEffectiveProbeCount] = curEntry.getTransform(); + Point3F projectScale=curEntry.mBounds.getExtents(); + MatrixF transform = curEntry.getTransform(); + transform.scale(projectScale); + //transform.setPosition(curEntry.getTransform().getPosition()); + transform.fullInverse(); + //transform.transpose(); + + probeWorldToObjData[mEffectiveProbeCount] = transform;// curEntry.getTransform(); Point3F bbMin = refPos - curEntry.mProbeRefScale/2; Point3F bbMax = refPos + curEntry.mProbeRefScale/2; probeBBMinData[mEffectiveProbeCount] = Point4F(bbMin.x, bbMin.y, bbMin.z, 0); diff --git a/Templates/Full/game/shaders/common/lighting/advanced/reflectionProbeArrayP.hlsl b/Templates/Full/game/shaders/common/lighting/advanced/reflectionProbeArrayP.hlsl index 17b2206c2..2323d410d 100644 --- a/Templates/Full/game/shaders/common/lighting/advanced/reflectionProbeArrayP.hlsl +++ b/Templates/Full/game/shaders/common/lighting/advanced/reflectionProbeArrayP.hlsl @@ -69,11 +69,11 @@ float defineBoxSpaceInfluence(Surface surface, ProbeData probe, float3 wsEyeRay) float3 boxMinLS = mul(probe.worldToLocal, float4(probe.boxMin, 1.0)).xyz; float3 boxMaxLS = mul(probe.worldToLocal, float4(probe.boxMax, 1.0)).xyz; - float boxOuterRange = length(boxMaxLS - boxMinLS); + float boxOuterRange = 2;//length(boxMaxLS - boxMinLS); float boxInnerRange = boxOuterRange / probe.attenuation; float3 localDir = float3(abs(surfPosLS.x), abs(surfPosLS.y), abs(surfPosLS.z)); - localDir = (localDir - boxInnerRange) / (boxOuterRange - boxInnerRange); + localDir = (localDir - boxInnerRange) / max((boxOuterRange - boxInnerRange),0.0001); float contribution = max(localDir.x, max(localDir.y, localDir.z)) * -1; return contribution;