Created
December 14, 2020 23:21
-
-
Save mcleary/2d09bfc9c564b5061f025a4e47215e9d to your computer and use it in GitHub Desktop.
Gooch Shading
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
precision highp float; | |
uniform float time; | |
uniform vec2 resolution; | |
varying vec3 fPosition; | |
varying vec3 fNormal; | |
varying vec3 fLight; | |
void main() | |
{ | |
vec3 N = normalize(fNormal); | |
vec3 L = normalize(vec3(0.0, -10.0, 1.0)); | |
vec3 V = normalize(-fPosition); | |
vec3 cHighlight = vec3(2.0, 2.0, 2.0); | |
vec3 cSurface = vec3(1.0, 1.0, 1.0); | |
vec3 cCool = vec3(0.0, 0.0, 0.55) + 0.25 * cSurface; | |
vec3 cWarm = vec3(0.3, 0.3, 0.0) + 0.25 * cSurface; | |
float T = (dot(N, L) + 1.0) * 0.5; | |
vec3 R = reflect(-L, N); | |
float S = clamp((100.0 * dot(R, V) - 97.0), 0.0, 1.0); | |
vec3 cGooch = mix(cWarm, cCool, T); | |
vec3 cShaded = mix(cGooch, cHighlight, S); | |
gl_FragColor = vec4(cShaded, 1.0); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment