You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.4 KiB
Plaintext

4 years ago

#include "Include/PlatformDefines.compute"
#pragma kernel CSInstancedRenderingVisibilityKernelLOD0
#pragma kernel CSInstancedRenderingVisibilityKernelLOD1
#pragma kernel CSInstancedRenderingVisibilityKernelLOD2
RWStructuredBuffer<float4x4> gpuiInstanceData;
RWStructuredBuffer<uint4> gpuiInstanceLODData; // lodNo - shadowLodNo - cfLodNo - cfLevel
AppendStructuredBuffer<float4x4> gpuiTransformationMatrix_LOD0;
AppendStructuredBuffer<float4x4> gpuiTransformationMatrix_LOD1;
uniform uint bufferSize;
uniform uint lodShift;
uniform uint lodAppendIndex;
[numthreads(GPUI_THREADS, 1, 1)]
void CSInstancedRenderingVisibilityKernelLOD0(uint3 id : SV_DispatchThreadID)
{
if (id.x >= bufferSize)
return;
uint lodNo = gpuiInstanceLODData[id.x][lodAppendIndex];
if (lodNo == lodShift)
gpuiTransformationMatrix_LOD0.Append(gpuiInstanceData[id.x]);
}
[numthreads(GPUI_THREADS, 1, 1)]
void CSInstancedRenderingVisibilityKernelLOD1(uint3 id : SV_DispatchThreadID)
{
if (id.x >= bufferSize)
return;
uint lodNo = gpuiInstanceLODData[id.x][lodAppendIndex];
if (lodNo == lodShift)
gpuiTransformationMatrix_LOD0.Append(gpuiInstanceData[id.x]);
else if (lodNo == lodShift + 1)
gpuiTransformationMatrix_LOD1.Append(gpuiInstanceData[id.x]);
}
[numthreads(GPUI_THREADS, 1, 1)]
void CSInstancedRenderingVisibilityKernelLOD2(uint3 id : SV_DispatchThreadID)
{
}