Skip to content

Commit 773a48d

Browse files
mvaligurskyMartin Valigursky
and
Martin Valigursky
authored
Simplify some shadow penumbra math / avoid divide by zero (#5551)
Co-authored-by: Martin Valigursky <[email protected]>
1 parent 2b01c58 commit 773a48d

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/scene/renderer/forward-renderer.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ class ForwardRenderer extends Renderer {
259259
this.lightShadowIntensity[cnt].setValue(directional.shadowIntensity);
260260

261261
const projectionCompensation = (50.0 / lightRenderData.projectionCompensation);
262-
const pixelsPerMeter = 1.0 / (lightRenderData.shadowCamera.renderTarget.width / directional.penumbraSize);
262+
const pixelsPerMeter = directional.penumbraSize / lightRenderData.shadowCamera.renderTarget.width;
263263
this.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter * projectionCompensation);
264264

265265
const cameraParams = directional._shadowCameraParams;
@@ -333,7 +333,7 @@ class ForwardRenderer extends Renderer {
333333
this.lightShadowParamsId[cnt].setValue(params);
334334
this.lightShadowIntensity[cnt].setValue(omni.shadowIntensity);
335335

336-
const pixelsPerMeter = 1.0 / (lightRenderData.shadowCamera.renderTarget.width / omni.penumbraSize);
336+
const pixelsPerMeter = omni.penumbraSize / lightRenderData.shadowCamera.renderTarget.width;
337337
this.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter);
338338
const cameraParams = omni._shadowCameraParams;
339339

@@ -399,7 +399,7 @@ class ForwardRenderer extends Renderer {
399399
this.lightShadowParamsId[cnt].setValue(params);
400400
this.lightShadowIntensity[cnt].setValue(spot.shadowIntensity);
401401

402-
const pixelsPerMeter = 1.0 / (lightRenderData.shadowCamera.renderTarget.width / spot.penumbraSize);
402+
const pixelsPerMeter = spot.penumbraSize / lightRenderData.shadowCamera.renderTarget.width;
403403
const fov = lightRenderData.shadowCamera._fov * Math.PI / 180.0;
404404
const fovRatio = 1.0 / Math.tan(fov / 2.0);
405405
this.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter * fovRatio);

0 commit comments

Comments
 (0)