跳到主要内容
← Lighting Basics

Lighting Basics

Diffuse Lighting

shader-learning 自学第 3 课:Diffuse Lighting

实时渲染 · 网格 GLSL

第 3 课:Diffuse Lighting

实现

uniform sampler2D iChannel0;

varying vec3 vPos;
varying vec3 vNormal;
varying vec2 vUv;

void main() {
  vec3 objectColor = texture2D(iChannel0, vUv).rgb;
  vec3 fragNormal = normalize(vNormal);
  vec3 lightColor = vec3(1.0, 1.0, 0.75);
  vec3 lightDir = normalize(vPos - vec3(-1.0, 2.0, 2.0));

  float ambient = 0.2;
  float diffuse = max(dot(fragNormal, -lightDir), 0.0);

  vec3 result = objectColor * lightColor * (ambient + diffuse);
  gl_FragColor = vec4(result, 1.0);
}