我正在开发一个统一的行进立方体计算着色器,在某个时候我需要找到一个索引,这样我就可以通过连接这些边来制作顶点。这里是代码
uint cubeIndex = 0;
for (int i = 0; i < 8; i++)
{
if (cube[i].isInside == 1)
{
cubeIndex |= 1 << i;
}
}
return cubeIndex;
问题是当我使用";立方体索引";作为数组索引,它给出了以下错误:程序"CSMain",错误X4505:在内核CSMain上,临时寄存器和可索引临时寄存器之和超过4096的限制。
如果将数组索引更改为任何其他int,则代码有效!
这是我的主要内核
uint myCubeIndex = CubeInit(cube);
Edges midPoints = CalMidPoints(cube);
int edge = triTable[myCubeIndex][0];
float3 position = midPoints.midPoints[edge];
vertexArray.Append(position);
我相信单元的位移要么进入负数,要么溢出。或
如何在HLSL中使用巨大的阵列(错误X4505(
这个问题是因为这里有人试图在hlsl着色器中放置太多顶点,试图使行进立方体工作,并需要将其限制在4096