#include "./../../../GPUInstancer/Resources/Compute/Include/PlatformDefines.compute" #pragma kernel CSAnimationBufferToTextureKernel uniform StructuredBuffer gpuiAnimationBuffer; RWTexture2D gpuiAnimationBufferTexture; uniform uint totalNumberOfBones; uniform uint instanceCount; uniform uint maxTextureSize; [numthreads(GPUI_THREADS_2D, GPUI_THREADS_2D, 1)] void CSAnimationBufferToTextureKernel(uint3 id : SV_DispatchThreadID) { if (id.x >= instanceCount || id.y >= totalNumberOfBones) return; uint index = id.y + totalNumberOfBones * id.x; uint indexX = index % maxTextureSize; uint indexY = floor(index / float(maxTextureSize)); float4x4 boneMarix = gpuiAnimationBuffer[index]; gpuiAnimationBufferTexture[uint2(indexX, 0 + indexY * 4)] = boneMarix._11_12_13_14; // row0 gpuiAnimationBufferTexture[uint2(indexX, 1 + indexY * 4)] = boneMarix._21_22_23_24; // row1 gpuiAnimationBufferTexture[uint2(indexX, 2 + indexY * 4)] = boneMarix._31_32_33_34; // row2 gpuiAnimationBufferTexture[uint2(indexX, 3 + indexY * 4)] = boneMarix._41_42_43_44; // row3 }