diff --git a/libraries/render-utils/src/LightClusterGrid.slh b/libraries/render-utils/src/LightClusterGrid.slh index 5b1b765e0f..5287695b10 100644 --- a/libraries/render-utils/src/LightClusterGrid.slh +++ b/libraries/render-utils/src/LightClusterGrid.slh @@ -47,12 +47,12 @@ float projection_getFar(mat4 projection) { // end of hybrid include -uniform clusterGridBuffer { - int _clusterGridTable[10000]; +layout (std140) uniform clusterGridBuffer { + int _clusterGridTable[4096]; }; -uniform clusterContentBuffer { - int _clusterGridContent[10000]; +layout (std140) uniform clusterContentBuffer { + int _clusterGridContent[4096]; }; <@endif@> diff --git a/libraries/render-utils/src/lightClusters_drawClusterContent.slv b/libraries/render-utils/src/lightClusters_drawClusterContent.slv index 1e4246da1c..a971bb5d2c 100644 --- a/libraries/render-utils/src/lightClusters_drawClusterContent.slv +++ b/libraries/render-utils/src/lightClusters_drawClusterContent.slv @@ -53,6 +53,12 @@ void main(void) { ); vec4 pos = UNIT_BOX[UNIT_BOX_LINE_INDICES[gl_VertexID]]; + int clusterDesc = _clusterGridTable[gl_InstanceID]; + int numLights = 0xFFFF & (clusterDesc >> 16); + + if (numLights <= 0) { + return; + } ivec3 dims = frustumGrid.dims.xyz; ivec3 summedDims = ivec3(dims.x * dims.y, dims.x, 1);