0
トゥーンシェイダーの強度に問題があります。強度の値は常に0ですが、頂点の法線と光の方向から計算してはいけません。私はこれを使用しました reference card。GLSLトゥーンシェイダーの強度がゼロ
vertexShader:
varying vec2 vUv;
uniform vec3 ec_light_dir;
uniform mat3 normal_matrix;
varying float intensity;
attribute vec3 a_normal;
void main() {
vec3 ec_normal = normalize(normal_matrix * a_normal);
intensity = dot(ec_light_dir,ec_normal);
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);}
fragmentShader:
uniform sampler2D tDiffuse;
varying vec2 vUv;
varying float intensity;
void main() {
vec4 color = texture2D(tDiffuse, vUv);
if (intensity > 0.95)
color = vec4(1.0,1.0,0.5,0.5);
else if (intensity > 0.5)
color = vec4(0.6,0.3,0.3,1.0);
else if (intensity > 0.25)
color = vec4(0.4,0.2,0.2,1.0);
else
color = vec4(0.2,0.1,0.1,1.0);
gl_FragColor = color;
}
私が間違っていることを教えてください。なぜ強度は常にゼロですか?
マイナスの可能性があります。試してみてください(...) – mrVoid
どのようなOpenGLのバージョンを使用していますか?未定義の変数があるため、完全なシェーダコードにすることはできません。 –