fixed: auto_ptr -> unique_ptr
[opensg.git] / Examples / Advanced / Character / vertex_skinned.vp.glsl
blobf985c6ebd17c667bd5976309a676b493c72b54cf
1 #version 120
2 #define OSG_HAS_DIFFUSE_MAP 1
4 #ifdef OSG_HAS_NORMAL_MAP
5 void calcSkin(inout vec4 pos,    inout vec3 norm,
6               inout vec3 tang,
7               in    vec4 matIdx, in    vec4 weight );
8 #else
9 void calcSkin(inout vec4 pos,    inout vec3 norm,
10               in    vec4 matIdx, in    vec4 weight );
11 #endif
13 varying vec4 vertPos;
14 varying vec3 vertNorm;
16 #ifdef OSG_HAS_NORMAL_MAP
17 varying vec3 vertTangent;
18 #endif
20 void main(void)
22     vertPos          = gl_Vertex;
23     vertNorm         = gl_Normal;
25 #ifdef OSG_HAS_DIFFUSE_MAP
26     gl_TexCoord[0]   = gl_MultiTexCoord0;
27 #endif
29 #ifdef OSG_HAS_NORMAL_MAP
30     vertTangent      = gl_MultiTexCoord1.xyz;
31 #endif
33     vec4 jointIdx    = gl_MultiTexCoord2;
34     vec4 jointWeight = gl_MultiTexCoord3;
36 #ifdef OSG_HAS_NORMAL_MAP
37     calcSkin(vertPos, vertNorm, vertTangent, jointIdx, jointWeight);
38 #else
39     calcSkin(vertPos, vertNorm, jointIdx, jointWeight);
40 #endif
42     vertPos  = gl_ModelViewMatrix * vertPos;
43     vertNorm = gl_NormalMatrix    * vertNorm;
45 #ifdef OSG_HAS_NORMAL_MAP
46     vertTangent = gl_NormalMatrix * vertTangent;
47 #endif
49     gl_Position = gl_ProjectionMatrix * vertPos;