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
@@ -65,9 +65,9 @@ public class SpotLightShadowRenderer extends AbstractShadowRenderer {
6565
6666 protected Camera shadowCam ;
6767 protected SpotLight light ;
68- protected Vector3f [] points = new Vector3f [ 8 ];
69- //Holding the info for fading shadows in the far distance
70-
68+ protected final Camera [] tempCams = new Camera [ 1 ];
69+ protected final Vector3f [] points = new Vector3f [ 8 ];
70+ protected final Vector3f tempVec = new Vector3f ();
7171
7272 /**
7373 * Used for serialization use SpotLightShadowRenderer#SpotLightShadowRenderer(AssetManager assetManager, int shadowMapSize)
@@ -100,7 +100,8 @@ private void init(int shadowMapSize) {
100100 protected void initFrustumCam () {
101101 Camera viewCam = viewPort .getCamera ();
102102 frustumCam = viewCam .clone ();
103- frustumCam .setFrustum (viewCam .getFrustumNear (), zFarOverride , viewCam .getFrustumLeft (), viewCam .getFrustumRight (), viewCam .getFrustumTop (), viewCam .getFrustumBottom ());
103+ frustumCam .setFrustum (viewCam .getFrustumNear (), zFarOverride , viewCam .getFrustumLeft (),
104+ viewCam .getFrustumRight (), viewCam .getFrustumTop (), viewCam .getFrustumBottom ());
104105 }
105106
106107 /**
@@ -140,7 +141,7 @@ protected void updateShadowCams(Camera viewCam) {
140141 //shadowCam.setDirection(direction);
141142
142143 shadowCam .setFrustumPerspective (light .getSpotOuterAngle () * FastMath .RAD_TO_DEG * 2.0f , 1 , 1f , light .getSpotRange ());
143- shadowCam .getRotation ().lookAt (light .getDirection (), shadowCam .getUp ());
144+ shadowCam .getRotation ().lookAt (light .getDirection (), shadowCam .getUp (tempVec ));
144145 shadowCam .setLocation (light .getPosition ());
145146
146147 shadowCam .update ();
@@ -158,10 +159,9 @@ protected GeometryList getOccludersToRender(int shadowMapIndex, GeometryList sha
158159 @ Override
159160 protected void getReceivers (GeometryList lightReceivers ) {
160161 lightReceivers .clear ();
161- Camera [] cameras = new Camera [1 ];
162- cameras [0 ] = shadowCam ;
162+ tempCams [0 ] = shadowCam ;
163163 for (Spatial scene : viewPort .getScenes ()) {
164- ShadowUtil .getLitGeometriesInViewPort (scene , viewPort .getCamera (), cameras , RenderQueue .ShadowMode .Receive , lightReceivers );
164+ ShadowUtil .getLitGeometriesInViewPort (scene , viewPort .getCamera (), tempCams , RenderQueue .ShadowMode .Receive , lightReceivers );
165165 }
166166 }
167167
0 commit comments