Files
Seele/res/shaders/VisibilityCompute.slang
T

20 lines
580 B
Plaintext
Raw Normal View History

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
}