追加のライブラリ + GLSL シェーダーなしで「通常の」WebGL を実行した後、ThreeJS の WebGL レンダラーを使い始めました。現在、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 シーンに 1 つ以上のライトを追加したと仮定します)?
更新(2014 年 10 月 9 日): この質問はかなりの数のビューを獲得しており、ユーザー Killah は、three.js の現在のバージョンでは、既存の回答が解決策につながらなくなったと述べています。私は自分の答えを追加して受け入れました。以下を参照してください。