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(); +}