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.
|
|
|
|
|
|
|
|
|
|
|
#include "./../../../GPUInstancer/Resources/Compute/Include/PlatformDefines.compute"
|
|
|
|
|
|
|
|
|
|
|
|
#pragma kernel CSAsyncBoneUpdate
|
|
|
|
|
|
|
|
|
|
|
|
uniform RWStructuredBuffer<float4x4> asyncBoneUpdateDataBuffer;
|
|
|
|
|
|
uniform StructuredBuffer<float4x4> gpuiAnimationBuffer;
|
|
|
|
|
|
uniform StructuredBuffer<int> asyncBoneUpdateFilterBuffer;
|
|
|
|
|
|
uniform uint totalNumberOfBones;
|
|
|
|
|
|
uniform uint instanceCount;
|
|
|
|
|
|
uniform uint boneFilterCount;
|
|
|
|
|
|
|
|
|
|
|
|
[numthreads(GPUI_THREADS_2D, GPUI_THREADS_2D, 1)]
|
|
|
|
|
|
void CSAsyncBoneUpdate(uint3 id : SV_DispatchThreadID)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (id.x >= instanceCount || id.y >= boneFilterCount)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
asyncBoneUpdateDataBuffer[id.x * boneFilterCount + id.y] = gpuiAnimationBuffer[id.x * totalNumberOfBones + asyncBoneUpdateFilterBuffer[id.y]];
|
|
|
|
|
|
}
|