@@ -2921,9 +2921,6 @@ static void ClearLightLists( in BuildGPULightListParameters parameters,
29212921 in BuildGPULightListResources resources ,
29222922 CommandBuffer cmd )
29232923 {
2924- // ClearLightLists is the first pass, we push the global parameters for light list building here.
2925- ConstantBuffer . PushGlobal ( cmd , parameters . lightListCB , HDShaderIDs . _ShaderVariablesLightList ) ;
2926-
29272924 if ( parameters . clearLightLists && ! parameters . runLightList )
29282925 {
29292926 // Note we clear the whole content and not just the header since it is fast enough, happens only in one frame and is a bit more robust
@@ -2953,6 +2950,9 @@ static void GenerateLightsScreenSpaceAABBs(in BuildGPULightListParameters parame
29532950 // With XR single-pass, we have one set of light bounds per view to iterate over (bounds are in view space for each view)
29542951 cmd . SetComputeBufferParam ( parameters . screenSpaceAABBShader , parameters . screenSpaceAABBKernel , HDShaderIDs . g_data , tileAndCluster . convexBoundsBuffer ) ;
29552952 cmd . SetComputeBufferParam ( parameters . screenSpaceAABBShader , parameters . screenSpaceAABBKernel , HDShaderIDs . g_vBoundsBuffer , tileAndCluster . AABBBoundsBuffer ) ;
2953+
2954+ ConstantBuffer . Push ( cmd , parameters . lightListCB , parameters . screenSpaceAABBShader , HDShaderIDs . _ShaderVariablesLightList ) ;
2955+
29562956 cmd . DispatchCompute ( parameters . screenSpaceAABBShader , parameters . screenSpaceAABBKernel , ( parameters . totalLightCount + 7 ) / 8 , parameters . viewCount , 1 ) ;
29572957 }
29582958 }
@@ -2969,6 +2969,8 @@ static void BigTilePrepass(in BuildGPULightListParameters parameters, in BuildGP
29692969 cmd . SetComputeBufferParam ( parameters . bigTilePrepassShader , parameters . bigTilePrepassKernel , HDShaderIDs . _LightVolumeData , tileAndCluster . lightVolumeDataBuffer ) ;
29702970 cmd . SetComputeBufferParam ( parameters . bigTilePrepassShader , parameters . bigTilePrepassKernel , HDShaderIDs . g_data , tileAndCluster . convexBoundsBuffer ) ;
29712971
2972+ ConstantBuffer . Push ( cmd , parameters . lightListCB , parameters . bigTilePrepassShader , HDShaderIDs . _ShaderVariablesLightList ) ;
2973+
29722974 cmd . DispatchCompute ( parameters . bigTilePrepassShader , parameters . bigTilePrepassKernel , parameters . numBigTilesX , parameters . numBigTilesY , parameters . viewCount ) ;
29732975 }
29742976 }
@@ -2989,6 +2991,8 @@ static void BuildPerTileLightList(in BuildGPULightListParameters parameters, in
29892991 if ( parameters . runBigTilePrepass )
29902992 cmd . SetComputeBufferParam ( parameters . buildPerTileLightListShader , parameters . buildPerTileLightListKernel , HDShaderIDs . g_vBigTileLightList , tileAndCluster . bigTileLightList ) ;
29912993
2994+ var localLightListCB = parameters . lightListCB ;
2995+
29922996 if ( parameters . enableFeatureVariants )
29932997 {
29942998 uint baseFeatureFlags = 0 ;
@@ -3011,14 +3015,14 @@ static void BuildPerTileLightList(in BuildGPULightListParameters parameters, in
30113015 baseFeatureFlags |= ( uint ) LightFeatureFlags . ProbeVolume ;
30123016 }
30133017
3014- var localLightListCB = parameters . lightListCB ;
30153018 localLightListCB . g_BaseFeatureFlags = baseFeatureFlags ;
3016- ConstantBuffer . PushGlobal ( cmd , localLightListCB , HDShaderIDs . _ShaderVariablesLightList ) ;
30173019
30183020 cmd . SetComputeBufferParam ( parameters . buildPerTileLightListShader , parameters . buildPerTileLightListKernel , HDShaderIDs . g_TileFeatureFlags , tileAndCluster . tileFeatureFlags ) ;
30193021 tileFlagsWritten = true ;
30203022 }
30213023
3024+ ConstantBuffer . Push ( cmd , localLightListCB , parameters . buildPerTileLightListShader , HDShaderIDs . _ShaderVariablesLightList ) ;
3025+
30223026 cmd . DispatchCompute ( parameters . buildPerTileLightListShader , parameters . buildPerTileLightListKernel , parameters . numTilesFPTLX , parameters . numTilesFPTLY , parameters . viewCount ) ;
30233027 }
30243028 }
@@ -3049,6 +3053,8 @@ static void VoxelLightListGeneration(in BuildGPULightListParameters parameters,
30493053 cmd . SetComputeBufferParam ( parameters . buildPerVoxelLightListShader , parameters . buildPerVoxelLightListKernel , HDShaderIDs . _LightVolumeData , tileAndCluster . lightVolumeDataBuffer ) ;
30503054 cmd . SetComputeBufferParam ( parameters . buildPerVoxelLightListShader , parameters . buildPerVoxelLightListKernel , HDShaderIDs . g_data , tileAndCluster . convexBoundsBuffer ) ;
30513055
3056+ ConstantBuffer . Push ( cmd , parameters . lightListCB , parameters . buildPerVoxelLightListShader , HDShaderIDs . _ShaderVariablesLightList ) ;
3057+
30523058 cmd . DispatchCompute ( parameters . buildPerVoxelLightListShader , parameters . buildPerVoxelLightListKernel , parameters . numTilesClusterX , parameters . numTilesClusterY , parameters . viewCount ) ;
30533059 }
30543060 }
@@ -3100,7 +3106,6 @@ static void BuildDispatchIndirectArguments(in BuildGPULightListParameters parame
31003106
31013107 var localLightListCB = parameters . lightListCB ;
31023108 localLightListCB . g_BaseFeatureFlags = baseFeatureFlags ;
3103- ConstantBuffer . PushGlobal ( cmd , localLightListCB , HDShaderIDs . _ShaderVariablesLightList ) ;
31043109
31053110 cmd . SetComputeBufferParam ( parameters . buildMaterialFlagsShader , buildMaterialFlagsKernel , HDShaderIDs . g_TileFeatureFlags , tileAndCluster . tileFeatureFlags ) ;
31063111
@@ -3116,6 +3121,8 @@ static void BuildDispatchIndirectArguments(in BuildGPULightListParameters parame
31163121 cmd . SetComputeTextureParam ( parameters . buildMaterialFlagsShader , buildMaterialFlagsKernel , HDShaderIDs . _StencilTexture , resources . stencilTexture , 0 , RenderTextureSubElement . Stencil ) ;
31173122 }
31183123
3124+ ConstantBuffer . Push ( cmd , localLightListCB , parameters . buildMaterialFlagsShader , HDShaderIDs . _ShaderVariablesLightList ) ;
3125+
31193126 cmd . DispatchCompute ( parameters . buildMaterialFlagsShader , buildMaterialFlagsKernel , parameters . numTilesFPTLX , parameters . numTilesFPTLY , parameters . viewCount ) ;
31203127 }
31213128
@@ -3142,7 +3149,6 @@ static void BuildDispatchIndirectArguments(in BuildGPULightListParameters parame
31423149 cmd . SetComputeIntParam ( parameters . buildDispatchIndirectShader , HDShaderIDs . g_NumTilesX , parameters . numTilesFPTLX ) ;
31433150 // Round on k_ThreadGroupOptimalSize so we have optimal thread for buildDispatchIndirectShader kernel
31443151 cmd . DispatchCompute ( parameters . buildDispatchIndirectShader , s_BuildIndirectKernel , ( parameters . numTilesFPTL + k_ThreadGroupOptimalSize - 1 ) / k_ThreadGroupOptimalSize , 1 , parameters . viewCount ) ;
3145-
31463152 }
31473153 }
31483154
@@ -3352,9 +3358,6 @@ static void ClearLightListsProbeVolumes(
33523358 in BuildGPULightListResources resources ,
33533359 CommandBuffer cmd )
33543360 {
3355- // ClearLightLists is the first pass, we push the global parameters for light list building here.
3356- ConstantBuffer . PushGlobal ( cmd , parameters . lightListCB , HDShaderIDs . _ShaderVariablesLightList ) ;
3357-
33583361 if ( parameters . probeVolumesClearLightLists && ! parameters . probeVolumesRunLightList )
33593362 {
33603363 // Note we clear the whole content and not just the header since it is fast enough, happens only in one frame and is a bit more robust
@@ -3417,6 +3420,8 @@ static void GenerateProbeVolumesScreenSpaceAABBs(in BuildGPULightListParameters
34173420 cmd . SetComputeBufferParam ( parameters . screenSpaceAABBShader , parameters . screenSpaceAABBKernel , HDShaderIDs . g_data , tileAndCluster . probeVolumesConvexBoundsBuffer ) ;
34183421 cmd . SetComputeBufferParam ( parameters . screenSpaceAABBShader , parameters . screenSpaceAABBKernel , HDShaderIDs . g_vBoundsBuffer , tileAndCluster . probeVolumesAABBBoundsBuffer ) ;
34193422
3423+ ConstantBuffer . Push ( cmd , parameters . lightListCB , parameters . screenSpaceAABBShader , HDShaderIDs . _ShaderVariablesLightList ) ;
3424+
34203425 cmd . DispatchCompute ( parameters . screenSpaceAABBShader , parameters . screenSpaceAABBKernel , ( probeVolumesCount + 7 ) / 8 , parameters . viewCount , 1 ) ;
34213426 }
34223427 }
@@ -3437,6 +3442,8 @@ static void ProbeVolumesBigTilePrepass(in BuildGPULightListParameters parameters
34373442 cmd . SetComputeBufferParam ( parameters . bigTilePrepassShader , parameters . bigTilePrepassKernel , HDShaderIDs . _LightVolumeData , tileAndCluster . probeVolumesLightVolumeDataBuffer ) ;
34383443 cmd . SetComputeBufferParam ( parameters . bigTilePrepassShader , parameters . bigTilePrepassKernel , HDShaderIDs . g_data , tileAndCluster . probeVolumesConvexBoundsBuffer ) ;
34393444
3445+ ConstantBuffer . Push ( cmd , parameters . lightListCB , parameters . bigTilePrepassShader , HDShaderIDs . _ShaderVariablesLightList ) ;
3446+
34403447 cmd . DispatchCompute ( parameters . bigTilePrepassShader , parameters . bigTilePrepassKernel , parameters . numBigTilesX , parameters . numBigTilesY , parameters . viewCount ) ;
34413448 }
34423449 }
@@ -3474,6 +3481,8 @@ static void ProbeVolumesVoxelLightListGeneration(in BuildGPULightListParameters
34743481 cmd . SetComputeBufferParam ( parameters . buildPerVoxelLightListShader , parameters . probeVolumesBuildPerVoxelLightListKernel , HDShaderIDs . _LightVolumeData , tileAndCluster . probeVolumesLightVolumeDataBuffer ) ;
34753482 cmd . SetComputeBufferParam ( parameters . buildPerVoxelLightListShader , parameters . probeVolumesBuildPerVoxelLightListKernel , HDShaderIDs . g_data , tileAndCluster . probeVolumesConvexBoundsBuffer ) ;
34763483
3484+ ConstantBuffer . Push ( cmd , parameters . lightListCB , parameters . buildPerVoxelLightListShader , HDShaderIDs . _ShaderVariablesLightList ) ;
3485+
34773486 cmd . DispatchCompute ( parameters . buildPerVoxelLightListShader , parameters . probeVolumesBuildPerVoxelLightListKernel , parameters . numTilesClusterX , parameters . numTilesClusterY , parameters . viewCount ) ;
34783487 }
34793488 }
0 commit comments