32

などgl_FragColor = v1 * v2、どのように乗算されるのかがよくわかりません。参照には、ベクトル乗算行列の説明が記載されているようです。
ps:v1との型v2は bothvec4です。

4

1 に答える 1

55

*演算子は、のようなベクトルに対してコンポーネントごとvec4に機能します。

vec4 a = vec4(1.0, 2.0, 3.0, 4.0);
vec4 b = vec4(0.1, 0.2, 0.3, 0.4);
vec4 c = a * b; // vec4(0.1, 0.4, 0.9, 1.6)

GLSL 言語仕様のセクション5.10 Vector and Matrix Operations には次のように記載されています。

いくつかの例外を除いて、操作はコンポーネント単位です。通常、演算子がベクトルまたは行列を操作する場合、ベクトルまたは行列の各コンポーネントに対してコンポーネントごとに独立して操作します。[...]例外は、行列にベクトルを掛けたもの、ベクトルに行列を掛けたもの、行列に行列を掛けたものです。これらはコンポーネントごとに動作するのではなく、正しい線形代数乗算を実行します。

于 2012-12-16T12:11:55.123 に答える