2024-06-04 21:34:14 +02:00
|
|
|
import Common;
|
|
|
|
|
import Scene;
|
|
|
|
|
|
|
|
|
|
struct VisibilityCullingData
|
|
|
|
|
{
|
|
|
|
|
Texture2D<uint> visibilityTexture;
|
2024-06-19 10:33:19 +02:00
|
|
|
RWStructuredBuffer<MeshletCullingInfo> cullingInfos;
|
2024-06-04 21:34:14 +02:00
|
|
|
};
|
|
|
|
|
ParameterBlock<VisibilityCullingData> pVisibilityParams;
|
|
|
|
|
|
2024-06-07 18:43:10 +02:00
|
|
|
[numthreads(BLOCK_SIZE, BLOCK_SIZE, 1)]
|
2024-06-04 21:34:14 +02:00
|
|
|
[shader("compute")]
|
|
|
|
|
void computeMain(
|
2024-06-07 09:19:47 +02:00
|
|
|
uint3 dispatchThreadID: SV_DispatchThreadID,
|
2024-06-04 21:34:14 +02:00
|
|
|
){
|
2024-06-07 18:43:10 +02:00
|
|
|
int3 texCoords = int3(dispatchThreadID.xy, 0);
|
|
|
|
|
uint encoded = pVisibilityParams.visibilityTexture.Load(texCoords).r;
|
2024-06-19 10:33:19 +02:00
|
|
|
uint meshletId = decodePrimitive(encoded);
|
|
|
|
|
pVisibilityParams.cullingInfos[meshletId].visible = 1;
|
2024-06-04 21:34:14 +02:00
|
|
|
}
|