В начале был свет
В частности, освещение OpenGL, в котором указаны определенные математические операции, которые будут применены к фрагменту, которые затем были объединены с текстурами для получения окончательного цвета.
А потом был Quake
Quake не использовал этот вид освещения для многих своих объектов. Вместо этого он использовал вторую текстуру для представления освещения, которая была умножена (или «модулирована») текстурой объекта для получения окончательного цвета.
Однако оборудование того времени не поддерживало это ни в одной операции. Поэтому Quake нужно было нарисовать объекты сцены дважды:
- Нарисуйте все один раз, чтобы сложить базовые текстуры.
- Установите режим наложения модуляции.
- Нарисуйте все во второй раз, чтобы применить текстуры освещения.
Это конечно было медленно; Мало того, что всю геометрию нужно было трансформировать и обрезать дважды (что в те дни было операцией ЦП), но и каждый пиксель на экране был дважды затронут во время рендеринга.
Введите мультитекстуру
Multitexture была решением этой проблемы, и первоначально была представлена через расширение GL_SGIS_multitexture, которое существовало только на определенных потребительских картах 3DFX. Первоначально он позволял смешивать только две текстуры (и с ограниченным набором режимов наложения).
Цитата из оригинального readme GLQuake :
GL_SGIS_multitexture
Поддержка мультитекстур позволяет определенному оборудованию отображать мир за один проход вместо двух. GLQuake использует два прохода, один для текстур мира и второй для световых карт, которые смешиваются с текстурами. На некоторых аппаратных средствах с поддержкой OpenGL GL_SIGS_multitexture это можно сделать за один проход. На оборудовании, которое поддерживает это, вы получите увеличение частоты кадров от 60 до 100%. В настоящее время только 3DFX с двумя картами TMU (такими как Obsidian 2220) поддерживают это расширение, но вскоре появится и другое оборудование.
Важно помнить, что в настоящее время такие эффекты, как нормальное отображение, любой другой вид освещения на пиксель, даже шейдеры и т. Д., Просто не существовали (что они и делали, но в основном только в научных статьях и исследовательских проектах, и не считались жизнеспособными для использования при рендеринге в реальном времени).
И так до настоящего времени
Отсюда это в значительной степени, как описано в других ответах. Мультитекстурирование стало стандартной функцией с течением времени, когда стало доступно больше режимов наложения, в конечном итоге уступивших место произвольному шейдерному коду.
Но что важно для целей вашего вопроса, так это то, что в начале стандартная функциональность просто позволяла использовать одну текстуру за раз при рендеринге. Возможность использовать более одной функции - это дополнительная функциональность, которая поддерживается только высококлассным оборудованием, и поэтому ей нужно имя. Это имя могло бы быть «двойным текстурированием» (поскольку первые реализации просто поддерживали две текстуры), но одним взглядом на будущее было выбрано имя «мультитекстура».
Дальнейшее чтение истории всего этого доступно здесь , и хорошая историческая рецензия (более широкого контекста и той роли, которую играет в нем мультитекстурирование) в этом ответе Programmers.SE .