Graphics Reference
In-Depth Information
face at that position. This normal is then used to produce the light intensity for
the shaded patch shown in the figures.
#version 400
#extension GL_ARB_tessellation_shader : enable
layout( quads, equal_spacing, ccw ) in;
out vec3 teNormal;
void main( )
{
vec3 p00 = gl_in[ 0 ].gl_Position;
vec3 p10 = gl_in[ 1 ].gl_Position;
vec3 p20 = gl_in[ 2 ].gl_Position;
vec3 p30 = gl_in[ 3 ].gl_Position;
vec3 p01 = gl_in[ 4 ].gl_Position;
vec3 p11 = gl_in[ 5 ].gl_Position;
vec3 p21 = gl_in[ 6 ].gl_Position;
vec3 p31 = gl_in[ 7 ].gl_Position;
vec3 p02 = gl_in[ 8 ].gl_Position;
vec3 p12 = gl_in[ 9 ].gl_Position;
vec3 p22 = gl_in[ 10 ].gl_Position;
vec3 p32 = gl_in[ 11 ].gl_Position;
vec3 p03 = gl_in[ 12 ].gl_Position;
vec3 p13 = gl_in[ 13 ].gl_Position;
vec3 p23 = gl_in[ 14 ].gl_Position;
vec3 p33 = gl_in[ 15 ].gl_Position;
float u = gl_TessCoord.x;
float v = gl_TessCoord.y;
// the basis functions and their derivatives:
float bu0 = (1.-u) * (1.-u) * (1.-u);
float bu1 = 3. * u * (1.-u) * (1.-u);
float bu2 = 3. * u * u * (1.-u);
float bu3 = u * u * u;
float dbu0 = -3. * (1.-u) * (1.-u);
float dbu1 = 3. * (1.-u) * (1.-3.*u);
float dbu2 = 3. * u * (2.-3.*u);
float dbu3 = 3. * u * u;
float bv0 = (1.-v) * (1.-v) * (1.-v);
float bv1 = 3. * v * (1.-v) * (1.-v);
float bv2 = 3. * v * v * (1.-v);
float bv3 = v * v * v;
Search WWH ::




Custom Search