From ea57679d92c87b812fdd6e41b2dad8d41c986fc5 Mon Sep 17 00:00:00 2001 From: Massimiliano Corsini maxcorsini Date: Tue, 10 Oct 2006 14:28:47 +0000 Subject: [PATCH] minnaert reflection model --- src/meshlab/shaders/minnaert.frag | 26 +++++++++++++++++ src/meshlab/shaders/minnaert.gdp | 46 +++++++++++++++++++++++++++++++ src/meshlab/shaders/minnaert.vert | 22 +++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 src/meshlab/shaders/minnaert.frag create mode 100644 src/meshlab/shaders/minnaert.gdp create mode 100644 src/meshlab/shaders/minnaert.vert diff --git a/src/meshlab/shaders/minnaert.frag b/src/meshlab/shaders/minnaert.frag new file mode 100644 index 000000000..71ee5cdcc --- /dev/null +++ b/src/meshlab/shaders/minnaert.frag @@ -0,0 +1,26 @@ +// +// Minnaert reflection model (per-pixel) +// +// by +// Massimiliano Corsini +// Visual Computing Lab (2006) +// + +varying vec3 normal; +varying vec3 vpos; + +void main (void) +{ + vec3 N = normalize(normal); + vec3 V = normalize(-vpos); + vec3 L = normalize(gl_LightSource[0].position.xyz - vpos); + + // diffuse color + vec4 kd = gl_LightSource[0].diffuse * gl_FrontMaterial.diffuse; + + // Minnaert reflection model + float NdotV = dot(N,V); + float NdotL = dot(N,L); + + gl_FragColor = max(0.0, NdotV * NdotL) * kd; +} diff --git a/src/meshlab/shaders/minnaert.gdp b/src/meshlab/shaders/minnaert.gdp new file mode 100644 index 000000000..6d51003f1 --- /dev/null +++ b/src/meshlab/shaders/minnaert.gdp @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/meshlab/shaders/minnaert.vert b/src/meshlab/shaders/minnaert.vert new file mode 100644 index 000000000..2cefdec12 --- /dev/null +++ b/src/meshlab/shaders/minnaert.vert @@ -0,0 +1,22 @@ +// +// Minnaert reflection model (per-pixel) +// +// by +// Massimiliano Corsini +// Visual Computing Lab (2006) +// + +varying vec3 normal; +varying vec3 vpos; + +void main (void) +{ + // vertex normal + normal = gl_NormalMatrix * gl_Normal; + + // vertex position (in eye-space) + vpos = vec3(gl_ModelViewMatrix * gl_Vertex); + + + gl_Position = ftransform(); +}