Вот ответ на ваш вопрос.Сначала он рассматривает сцену как кубик размером 256 x 256 x 256.Для каждой оси он отображает 256 квадратов (каждый из двух треугольников) полного размера куба при каждом значении оси (т. Е. От 0,0,0 до 0,256,256, а затем от 1,0,0 до 1,256,256 и т. Д. ДоОт 256,0,0 до 256,256,256).Затем он делает то же самое, обращаясь к другому направлению - с противоположными нормалями - чтобы получить в общей сложности 512 квадратов / 1024 треугольника на ось.Этот процесс повторяется для y и z, чтобы получить в общей сложности 3072 треугольника и 3072 вершины (вершины встречаются только по краям куба 256 x 256 x 256).
Теперь текстурирование.Фактически он рисует каждый куб, но делает его невидимым, делая текстуру прозрачной в этом месте.У него есть две текстуры: трехмерная текстура 256 x 256 x 256 и атлас текстуры 16 x 16 , состоящий из более мелких текстур.Чтобы нарисовать текстуру, сначала он использует координаты куба, который он рисует, в качестве координат текстуры в трехмерной текстуре.Так что, если он рисует куб в позиции, например, 42, 7, 13, то координаты 3D-текстуры равны 42, 7, 13. Внутри 3D-текстуры все, что он хранит, это зеленые и синие значения, которые соответствуют координатам u, v элемента-текстура в текстурном атласе для рисования.Таким образом, в его примере цвет в 3D текстуре имеет вид R = 0 (не используется), G = 2, B = 4, A = 0 (не используется).Он использует 2 & 4 в качестве координат u, v, а затем рисует текстуру в позиции 2, 4 в текстурном атласе.Поскольку текстурный атлас в основном представляет собой одну огромную текстуру, которая соответствует 16 x 16 (256) меньшим текстурам, рисуется только одна из меньших текстур (в этом случае 2 и 4 будут преобразованы в координаты текстуры путем деления их на 16,поэтому они становятся 2/16 = 0,125 и 4/16 = 0,25. Они соответствуют 0,0 для суб-текстуры в положении 2,4 в атласе, а 1,1 для этой суб-текстуры составляют 0,125 + 1./ 16 и 0,25 + 1/16. Эти координаты используются для текстуры куба.
Если он хочет выкопать куб, все, что ему нужно сделать, это изменить значение, сохраненное в 3D текстуре в этой точкечтобы указать на прозрачную суб-текстуру в атласе, поэтому, если 0,0 в текстурном атласе является полностью прозрачной суб-текстурой, он может просто установить текстуру в 3D-атласе в этом месте на R = 0 (не используется), G = 0, B = 0, A = 0 (не используется).