11/*
2- * Copyright (c) 2009-2021 jMonkeyEngine
2+ * Copyright (c) 2009-2025 jMonkeyEngine
33 * All rights reserved.
44 *
55 * Redistribution and use in source and binary forms, with or without
5353/**
5454 * PointLightShadowRenderer renders shadows for a point light
5555 *
56- * @author Rémy Bouquet aka Nehon
56+ * @author Nehon
5757 */
5858public class PointLightShadowRenderer extends AbstractShadowRenderer {
5959
6060 public static final int CAM_NUMBER = 6 ;
6161 protected PointLight light ;
6262 protected Camera [] shadowCams ;
6363 private Geometry [] frustums = null ;
64+ private final Vector3f X_NEG = Vector3f .UNIT_X .mult (-1f );
65+ private final Vector3f Y_NEG = Vector3f .UNIT_Y .mult (-1f );
66+ private final Vector3f Z_NEG = Vector3f .UNIT_Z .mult (-1f );
6467
6568 /**
66- * Used for serialization.
67- * Use PointLightShadowRenderer#PointLightShadowRenderer(AssetManager
68- * assetManager, int shadowMapSize)
69- * instead.
69+ * For serialization only. Do not use.
7070 */
7171 protected PointLightShadowRenderer () {
7272 super ();
7373 }
7474
7575 /**
76- * Creates a PointLightShadowRenderer
76+ * Creates a PointLightShadowRenderer.
7777 *
78- * @param assetManager the application asset manager
79- * @param shadowMapSize the size of the rendered shadowmaps (512,1024,2048,
80- * etc...)
78+ * @param assetManager the application's asset manager
79+ * @param shadowMapSize the size of the rendered shadow maps (512, 1024, 2048, etc...)
8180 */
8281 public PointLightShadowRenderer (AssetManager assetManager , int shadowMapSize ) {
8382 super (assetManager , shadowMapSize , CAM_NUMBER );
@@ -95,9 +94,9 @@ private void init(int shadowMapSize) {
9594 protected void initFrustumCam () {
9695 Camera viewCam = viewPort .getCamera ();
9796 frustumCam = viewCam .clone ();
98- frustumCam .setFrustum (viewCam .getFrustumNear (), zFarOverride , viewCam .getFrustumLeft (), viewCam .getFrustumRight (), viewCam .getFrustumTop (), viewCam .getFrustumBottom ());
97+ frustumCam .setFrustum (viewCam .getFrustumNear (), zFarOverride ,
98+ viewCam .getFrustumLeft (), viewCam .getFrustumRight (), viewCam .getFrustumTop (), viewCam .getFrustumBottom ());
9999 }
100-
101100
102101 @ Override
103102 protected void updateShadowCams (Camera viewCam ) {
@@ -108,30 +107,24 @@ protected void updateShadowCams(Camera viewCam) {
108107 }
109108
110109 //bottom
111- shadowCams [0 ].setAxes (Vector3f .UNIT_X .mult (-1f ), Vector3f .UNIT_Z .mult (-1f ), Vector3f .UNIT_Y .mult (-1f ));
112-
110+ shadowCams [0 ].setAxes (X_NEG , Z_NEG , Y_NEG );
113111 //top
114- shadowCams [1 ].setAxes (Vector3f .UNIT_X .mult (-1f ), Vector3f .UNIT_Z , Vector3f .UNIT_Y );
115-
112+ shadowCams [1 ].setAxes (X_NEG , Vector3f .UNIT_Z , Vector3f .UNIT_Y );
116113 //forward
117- shadowCams [2 ].setAxes (Vector3f .UNIT_X .mult (-1f ), Vector3f .UNIT_Y , Vector3f .UNIT_Z .mult (-1f ));
118-
114+ shadowCams [2 ].setAxes (X_NEG , Vector3f .UNIT_Y , Z_NEG );
119115 //backward
120116 shadowCams [3 ].setAxes (Vector3f .UNIT_X , Vector3f .UNIT_Y , Vector3f .UNIT_Z );
121-
122117 //left
123- shadowCams [4 ].setAxes (Vector3f .UNIT_Z , Vector3f .UNIT_Y , Vector3f .UNIT_X .mult (-1f ));
124-
118+ shadowCams [4 ].setAxes (Vector3f .UNIT_Z , Vector3f .UNIT_Y , X_NEG );
125119 //right
126- shadowCams [5 ].setAxes (Vector3f . UNIT_Z . mult (- 1f ) , Vector3f .UNIT_Y , Vector3f .UNIT_X );
120+ shadowCams [5 ].setAxes (Z_NEG , Vector3f .UNIT_Y , Vector3f .UNIT_X );
127121
128122 for (int i = 0 ; i < CAM_NUMBER ; i ++) {
129123 shadowCams [i ].setFrustumPerspective (90f , 1f , 0.1f , light .getRadius ());
130124 shadowCams [i ].setLocation (light .getPosition ());
131125 shadowCams [i ].update ();
132126 shadowCams [i ].updateViewProjection ();
133127 }
134-
135128 }
136129
137130 @ Override
@@ -237,13 +230,13 @@ protected boolean checkCulling(Camera viewCam) {
237230 }
238231
239232 Camera cam = viewCam ;
240- if (frustumCam != null ){
241- cam = frustumCam ;
233+ if (frustumCam != null ) {
234+ cam = frustumCam ;
242235 cam .setLocation (viewCam .getLocation ());
243236 cam .setRotation (viewCam .getRotation ());
244237 }
245238 TempVars vars = TempVars .get ();
246- boolean intersects = light .intersectsFrustum (cam ,vars );
239+ boolean intersects = light .intersectsFrustum (cam , vars );
247240 vars .release ();
248241 return intersects ;
249242 }
0 commit comments