File: glass.frag

package info (click to toggle)
meshlab 2022.02%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 47,348 kB
  • sloc: cpp: 536,635; ansic: 27,783; sh: 539; makefile: 36
file content (51 lines) | stat: -rw-r--r-- 1,035 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

//
// glass.frag: Fragment shader for doing a glass-like effect
//
// author: John Kessenich
//
// Copyright (c) 2002: 3Dlabs, Inc.
//

varying vec3 LightDir;
varying vec3 EyeDir;
varying vec3 Normal;

uniform vec4 GlassColor;
uniform vec4 SpecularColor1;
uniform vec4 SpecularColor2;
uniform float SpecularFactor1;
uniform float SpecularFactor2;

void main (void)
{
    vec4 color;

    vec3 reflectDir = -reflect(LightDir, Normal);
    
    //
    // Uncomment this line for a cool solid look.
    // Comment it out for light shining off of flat glass.
    //
 reflectDir = reflectDir;
    
    float spec = max(dot(EyeDir, reflectDir), 0.0);

    //
    // Compute two rings of specular effect.
    //
    spec = spec * spec;

    //
    // Basic glass color + first specular effect
    //
    color = GlassColor + SpecularFactor1 * spec * SpecularColor1;

    //
    // Second specular effect
    //
    spec = pow(spec, 8.0) * SpecularFactor2;
    color += spec * SpecularColor2;
    
    gl_FragColor = min(color, vec4(1.0));
}