All Downloads are FREE. Search and download functionalities are using the official Maven repository.

shaders.Chapter5.fs Maven / Gradle / Ivy

The newest version!
#version 330

uniform vec4 Ambient;
uniform vec4 LightPosition[8];
uniform vec4 LightColor[8];
uniform int LightCount = 0;
uniform mat4 ModelView = mat4(1);

in vec3 vViewNormal;
in vec4 vViewPosition;
in vec3 vModelPosition;
in vec4 vColor;
out vec4 FragColor;

void main() {
  vec3 light;

  // Poor man's wireframe: blacken every unit cube near its vertices
  if ((abs(vModelPosition.x) >= 0.475 && abs(vModelPosition.x) < 0.49999)
      || (abs(vModelPosition.y) >= 0.475 && abs(vModelPosition.y) < 0.49999)
      || (abs(vModelPosition.z) >= 0.475 && abs(vModelPosition.z) < 0.49999)) {
    light = vec3(0, 0, 0);
  } else {
    vec3 normal = normalize(vViewNormal);
    light = Ambient.rgb;
    for (int i = 0; i < int(LightCount); i++) {
      vec4 lightPos = ModelView * LightPosition[i];
      vec3 pointToLight = normalize(lightPos.xyz - vViewPosition.xyz);
      light += LightColor[i].rgb * clamp(dot(normal, pointToLight), 0, 1);
    }
  }
  FragColor = vec4(light, 1) * vColor;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy