1

テクスチャにはすべてのシェーダーで「value」というフィールド名があることに気づきましたが、このフィールドは使用されていないようです。

例 :

tDiffuse: { type: "t", value: 0, texture: null },

このフィールドの目的は何ですか?

ありがとう

4

1 に答える 1

1

使用されています。

テクスチャを保存する必要があるスロットを定義します。スロットは、シェーダー プログラムがサンプラーを介してテクスチャにアクセスできる場所です。シェーダーで 1 つのテクスチャしか使用しないため、これは実際にはほとんど 0 です。ただし、シェーダーで複数のテクスチャにアクセスする必要がある場合は、必要なスロットの数に値を変更する必要があります。

あなたがここに見ることができるように:

https://github.com/gero3/three.js/blob/master/src/renderers/WebGLShaders.js#L1392-1397

map は最初のテクスチャです。(スロット 0) envMap は 2 番目のテクスチャです。(スロット 1) lightMap は 3 番目のテクスチャです。(スロット 2)

shaderprogram で使用するテクスチャごとに、新しいスロットを選択する必要があります。

于 2012-08-08T10:45:56.533 に答える