Код: Выделить всё
tex = new Texture3D(8, 8, 8, TextureFormat.RFloat, false);
for (int x = 0; x < 8; x++) {
for (int y = 0; y < 8; y++) {
for (int z = 0; z < 8; z++) {
if (x == 0 || y == 0 || z == 0 || x == 7 || y == 7 || z == 7) {
points_f[z * 8 * 8 + y * 8 + x] = -1000.0f;
} else {
points_f[z * 8 * 8 + y * 8 + x] = 1.0f;
}
}
}
}
tex.SetPixelData(points_f, 0);
tex.Apply();
Код: Выделить всё
shader.SetTexture (0, "points", tex);
Я определил Texture3D code> как RWTexture3D в HLSL:
Код: Выделить всё
RWTexture3D points;
Код: Выделить всё
Property (points) at kernel index (0): Attempting to bind texture as UAV but the texture wasn't created with the UAV usage flag set!Он жалуется, что флаг БПЛА не установлен для Texture3D. — мне не удалось найти способ сделать это доступным для записи.
Он жалуется, что флаг БПЛА не установлен для Texture3D. p>
Я хотел бы, чтобы это была текстура 3D, данные которой существуют полностью на графическом процессоре, потому что мне не нужны точки в оперативной памяти, и все вычисления выполняются на графическом процессоре. Я бы не хотел переносить точки в графический процессор каждый раз, когда мы хотим внести в них какие-то изменения.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/787 ... u-in-unity
Мобильная версия