Я занимаюсь переносом приложения OpenGL в Интернет и обнаружил, что WebGL 1.0 не поддерживает 3D-текстуры (будет поддерживаться в версии 2.0). Я использую текстуры 16 x 16 x 16 для информации о цвете некоторых простых моделей (для блочного вида).
Теперь, без поддержки 3D-моделей, я понял, что вместо этого могу распределить 16 слоев на плоскости 4 x 4, вот так:
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 = layer
В результате получается "псевдо-3D" текстура 64 x 64.
Это приводит меня к моему вопросу: в чем разница между 3D- и 2D-текстурами на графических процессорах? И в ситуации, когда 2D-текстура может использоваться вместо 3D-текстуры (как в моем примере), будет ли разница в производительности между ними?
Я предполагаю, что 3D-текстуры имеют аппаратную поддержку интерполяции по оси Z, тогда как для 2D-текстуры потребуются две выборки текселей и ручная интерполяция между ними для того же результата.