3D-текстуры в WebGL / three.js, используя обходной путь 2D-текстуры?

Я хотел бы использовать некоторые 3D-текстуры для объектов, которые я рендерил в WebGL. В настоящее время я использую следующий метод во фрагментном шейдере, как предложено наРазличия в WebGL и OpenGL:

// tex is a texture with each slice of the cube placed horizontally across the texture.
// texCoord is a 3d texture coord
// size is the size if the cube in pixels.

vec4 sampleAs3DTexture(sampler2D tex, vec3 texCoord, float size) {
   float sliceSize = 1.0 / size;                         // space of 1 slice
   float slicePixelSize = sliceSize / size;              // space of 1 pixel
   float sliceInnerSize = slicePixelSize * (size - 1.0); // space of size pixels
   float zSlice0 = min(floor(texCoord.z * size), size - 1.0);
   float zSlice1 = min(zSlice0 + 1.0, size - 1.0);
   float xOffset = slicePixelSize * 0.5 + texCoord.x * sliceInnerSize;
   float s0 = xOffset + (zSlice0 * sliceSize);
   float s1 = xOffset + (zSlice1 * sliceSize);
   vec4 slice0Color = texture2D(tex, vec2(s0, texCoord.y));
   vec4 slice1Color = texture2D(tex, vec2(s1, texCoord.y));
   float zOffset = mod(texCoord.z * size, 1.0);
   return mix(slice0Color, slice1Color, zOffset);
}

Проблема в том, что самая большая трехмерная текстура, которую я могу использовать, имеет размер 64x64x64 (поскольку максимальная ширина 2D-текстуры составляет 4096 = 64 * 64). Я хотел бы попытаться использовать более крупные текстуры, если это возможно, поэтому я хотел бы посмотреть, есть ли у кого-нибудь предложения по использованию 3D-текстур с более высоким разрешением с подобным обходным путем. Предположительно, я должен быть в состоянии организовать 2D-текстуру таким образом, чтобы у меня были 3D-фрагменты, расположенные горизонтально и вертикально, но мой гугл-фу до сих пор не смог найти работоспособное решение.

Ответы на вопрос(1)

Ваш ответ на вопрос