性能上の理由から、移動中の四面体を100個表示する必要があります。カスタムシェーダが必要なインスタンス化されたバッファフィジオメトリを使用しています。Threejs:カスタムシェーダを標準レンダリングと一致させる
シーンには、通常のジオメトリ(非バッファ)といくつかのライト(ぼんやりとした抜粋:https://jsfiddle.net/negan/xs3k1yz4/)を持つオブジェクトも含まれています。
私の問題は、照明がシーンの残りの部分に当てはまるように四面体が陰影付けされていないということです。
<script id="vertexShader" type="x-shader/x-vertex">
attribute vec3 offset;
attribute vec4 color;
varying vec4 vColor;
varying vec3 vNormal;
void main() {
\t vColor = color;
\t vNormal = normalMatrix * vec3(normal);
\t gl_Position = projectionMatrix *
\t \t \t \t modelViewMatrix *
\t \t \t \t vec4(position*1.0+offset,1.0);
}
</script>
<script id="fragmentShader" type="x-shader/x-fragment">
\t varying vec4 vColor;
varying vec3 vNormal;
\t void main() {
\t \t float di = 0.4*dot(vNormal,normalize(vec3(1.,1.,0.)))+0.4*dot(vNormal,normalize(vec3(1.,0.,1.)));
\t \t di = di+0.2;
\t \t vec4 vColor2= vColor*vec4(1.0,1.,1.,0.2)*di;
\t \t gl_FragColor = vColor2;// adjust the alpha
\t }
</script>
カスタムシェーダが、私はシーンに定義されているライトを適合させるための方法があります:理由はおそらく、私が建てプリミティブシェーダのですか?シェーダはまた、指示された光の印象を与えないような方法で面をレンダリングする。私はむしろ、頂点から補間された色を持つ単一の面を均等に照明したいと思っていましたが、私はそれを達成できませんでした。
任意のポインタまたはヘルプが評価されます。