diff options
Diffstat (limited to 'src/render/shaders/es2/diffuse.frag')
-rw-r--r-- | src/render/shaders/es2/diffuse.frag | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/render/shaders/es2/diffuse.frag b/src/render/shaders/es2/diffuse.frag new file mode 100644 index 000000000..b9c7c8919 --- /dev/null +++ b/src/render/shaders/es2/diffuse.frag @@ -0,0 +1,22 @@ +#define FP highp + +uniform FP vec4 lightPosition; +uniform FP vec3 lightIntensity; +uniform FP vec3 kd; // Diffuse reflectivity +uniform FP vec3 ka; // Ambient reflectivity + +varying FP vec3 position; +varying FP vec3 normal; + +void main() +{ + // Calculate the vector from the light to the fragment + FP vec3 s = normalize( vec3( lightPosition ) - position ); + + // Calculate the diffuse lighting factor + FP vec3 n = normalize( normal ); + FP float diffuse = max( dot( s, n ), 0.0 ); + + // Multiply by incoming light intensity + gl_FragColor = vec4( lightIntensity * (kd * diffuse + ka), 1.0 ); +} |