@@ -62,6 +62,8 @@ public ShadowResolutionRequest(int _visibleLightIndex, int _perLightShadowSliceI
6262 internal RTHandle m_AdditionalLightsShadowmapHandle ;
6363
6464 private bool m_CreateEmptyShadowmap ;
65+ private bool m_EmptyShadowmapNeedsClear = false ;
66+
6567 private RTHandle m_EmptyAdditionalLightShadowmapTexture ;
6668 private const int k_EmptyShadowMapDimensions = 1 ;
6769 private const string k_AdditionalLightShadowMapTextureName = "_AdditionalLightsShadowmapTexture" ;
@@ -142,7 +144,8 @@ public AdditionalLightsShadowCasterPass(RenderPassEvent evt)
142144 m_ShadowResolutionRequests . Capacity = maxVisibleAdditionalLights ;
143145 }
144146
145- m_EmptyAdditionalLightShadowmapTexture = RTHandles . Alloc ( Texture2D . blackTexture ) ;
147+ m_EmptyAdditionalLightShadowmapTexture = ShadowUtils . AllocShadowRT ( 1 , 1 , k_ShadowmapBufferBits , 1 , 0 , name : "_EmptyAdditionalLightShadowmapTexture" ) ;
148+ m_EmptyShadowmapNeedsClear = true ;
146149 }
147150
148151 /// <summary>
@@ -151,6 +154,7 @@ public AdditionalLightsShadowCasterPass(RenderPassEvent evt)
151154 public void Dispose ( )
152155 {
153156 m_AdditionalLightsShadowmapHandle ? . Release ( ) ;
157+ m_EmptyAdditionalLightShadowmapTexture ? . Release ( ) ;
154158 }
155159
156160 private int GetPunctualLightShadowSlicesCount ( in LightType lightType )
@@ -850,6 +854,10 @@ bool SetupForEmptyRendering(ref RenderingData renderingData)
850854 m_CreateEmptyShadowmap = true ;
851855 useNativeRenderPass = false ;
852856
857+ // Required for scene view camera(URP renderer not initialized)
858+ if ( ShadowUtils . ShadowRTReAllocateIfNeeded ( ref m_EmptyAdditionalLightShadowmapTexture , 1 , 1 , k_ShadowmapBufferBits , name : "_EmptyAdditionalLightShadowmapTexture" ) )
859+ m_EmptyShadowmapNeedsClear = true ;
860+
853861 // initialize _AdditionalShadowParams
854862 for ( int i = 0 ; i < m_AdditionalLightIndexToShadowParams . Length ; ++ i )
855863 m_AdditionalLightIndexToShadowParams [ i ] = c_DefaultShadowParams ;
@@ -860,13 +868,18 @@ bool SetupForEmptyRendering(ref RenderingData renderingData)
860868 /// <inheritdoc/>
861869 public override void Configure ( CommandBuffer cmd , RenderTextureDescriptor cameraTextureDescriptor )
862870 {
863-
864- if ( m_CreateEmptyShadowmap )
871+ if ( m_CreateEmptyShadowmap && ! m_EmptyShadowmapNeedsClear )
865872 {
866873 // Reset pass RTs to null
867874 ResetTarget ( ) ;
868875 return ;
869876 }
877+ if ( m_CreateEmptyShadowmap )
878+ {
879+ ConfigureTarget ( m_EmptyAdditionalLightShadowmapTexture ) ;
880+ m_EmptyShadowmapNeedsClear = false ;
881+ }
882+ else
870883 ConfigureTarget ( m_AdditionalLightsShadowmapHandle ) ;
871884
872885 ConfigureClear ( ClearFlag . All , Color . black ) ;
0 commit comments