Я начал с 3DJS WebGL рендеринга после выполнения некоторого "обычного" WebGL без дополнительных библиотек + шейдеров GLSL. Я пытаюсь написать пользовательские шейдеры сейчас в моей программе ThreeJS, и я заметил, что ThreeJS заботится о многих стандартных вещах, таких как матрица проекции и модели/представления. Теперь мой простой шейдерный шейдер выглядит следующим образом:
// All of these seem to be predefined:
// vec3 position;
// mat4 projectionMatrix;
// mat4 modelViewMatrix;
// mat3 normalMatrix;
// vec3 normal;
// I added this
varying vec3 vNormal;
void main() {
vNormal = normalMatrix * vec3(normal);
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
Мой вопрос: какие другие переменные (я предполагаю, что они являются общими) предопределены для шейдеров вершин и фрагментов, которые я мог бы использовать? Может ли ThreeJS справляться со светлыми векторами/светлым цветом (например, предположив, что я добавил один или несколько огней в мою сцену ThreeJS)?
Обновление (9 октября 2014 года): этот вопрос получил довольно много просмотров, и пользователь Киллах отметил, что существующие ответы больше не приводят к решению проблемы с текущей версией Three.js. Я добавил и принял свой собственный ответ, см. Ниже.