0
私は、グレイスケールの1Dテクスチャからサンプリングされた値を乗法項として使用して鏡面反射を実装しようとしています。シェーダは光がない黒を描いていませんか?
私は2つの違いを見ることができるようにトグルを実装しましたが、サンプリングされた色が有効な何らかの理由で、ライトがないシーンの領域はライトグレーとして表示されます。同じ領域が黒色で表示されます。
これはなぜですか?ここで私が断片色を設定している領域があります。
if(u_specularRamp == 1)
{
specularAmount = clamp(specularAmount, 0.0, 1.0);
vec2 texCoords = vec2(specularAmount, 0.5);
vec4 sampledColor = texture(u_ramp_tex, texCoords);
specularReflection = vec3(0.3 * sampledColor.x);
}
else
{
specularReflection = vec3(0.3 * specularAmount);
}
FragColor = vec4(specularReflection, 1.0);
u_specularRampは、サンプリングされた色のオンとオフを切り替えるために渡しています。
'FragColor = vec4(specularReflection、1.0);' - **出力するスペキュラカラー**のみです。 – Matso
明らかに、これはサンプルのテクスチャによって異なります。そして、明らかに、テクスチャは左端で黒ではありません。 –
@Matsoはい、これは、私がより簡単に何が起こっていたかを見ることができたためです。これは鏡面ハイライトがないところでは黒を出力し、テクスチャからサンプリングする場合を除いて出力します。 –