959e80cf72
assets upload description.
195 lines
7.2 KiB
Plaintext
195 lines
7.2 KiB
Plaintext
#pragma kernel MergeInstancedIndirectBuffers
|
|
|
|
struct IndirectShaderData
|
|
{
|
|
float4x4 PositionMatrix;
|
|
//float4x4 InversePositionMatrix;
|
|
float4 ControlData;
|
|
};
|
|
|
|
uint MergeSourceBufferCount0;
|
|
uint MergeSourceBufferCount1;
|
|
uint MergeSourceBufferCount2;
|
|
uint MergeSourceBufferCount3;
|
|
uint MergeSourceBufferCount4;
|
|
uint MergeSourceBufferCount5;
|
|
uint MergeSourceBufferCount6;
|
|
uint MergeSourceBufferCount7;
|
|
uint MergeSourceBufferCount8;
|
|
uint MergeSourceBufferCount9;
|
|
uint MergeSourceBufferCount10;
|
|
uint MergeSourceBufferCount11;
|
|
uint MergeSourceBufferCount12;
|
|
uint MergeSourceBufferCount13;
|
|
uint MergeSourceBufferCount14;
|
|
//uint MergeSourceBufferCount15;
|
|
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer0;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer1;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer2;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer3;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer4;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer5;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer6;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer7;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer8;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer9;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer10;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer11;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer12;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer13;
|
|
StructuredBuffer<IndirectShaderData> MergeSourceBuffer14;
|
|
//StructuredBuffer<IndirectShaderData> MergeSourceBuffer15;
|
|
|
|
AppendStructuredBuffer<IndirectShaderData> MergeBuffer;
|
|
|
|
[numthreads(32,1,1)]
|
|
void MergeInstancedIndirectBuffers (uint3 id : SV_DispatchThreadID)
|
|
{
|
|
uint instanceId = id.x;
|
|
if (instanceId < MergeSourceBufferCount0)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer0[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer0[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer0[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount1)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer1[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer1[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer1[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount2)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer2[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer2[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer2[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount3)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer3[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer3[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer3[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount4)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer4[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer4[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer4[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount5)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer5[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer5[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer5[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount6)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer6[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer6[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer6[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount7)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer7[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer7[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer7[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
|
|
if (instanceId < MergeSourceBufferCount8)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer8[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer8[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer8[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount9)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer9[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer9[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer9[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount10)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer10[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer10[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer10[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount11)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer11[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer11[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer11[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount12)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer12[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer12[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer12[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount13)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer13[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer13[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer13[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
if (instanceId < MergeSourceBufferCount14)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer14[id.x].PositionMatrix;
|
|
//instanceData.InversePositionMatrix = MergeSourceBuffer14[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer14[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}
|
|
|
|
/*if (instanceId < MergeSourceBufferCount15)
|
|
{
|
|
IndirectShaderData instanceData;
|
|
instanceData.PositionMatrix = MergeSourceBuffer15[id.x].PositionMatrix;
|
|
instanceData.InversePositionMatrix = MergeSourceBuffer15[id.x].InversePositionMatrix;
|
|
instanceData.ControlData = MergeSourceBuffer15[id.x].ControlData;
|
|
MergeBuffer.Append(instanceData);
|
|
}*/
|
|
}
|