4 // - what to do with ftransform? can it stay in the current form?
5 // - implement texture1DLod, texture2DLod, texture3DLod, textureCubeLod,
6 // - implement shadow1DLod, shadow2DLod,
10 // From Shader Spec, ver. 1.10, rev. 59
13 __fixed_output vec4 gl_Position;
14 __fixed_output float gl_PointSize;
15 __fixed_output vec4 gl_ClipVertex;
17 attribute vec4 gl_Color;
18 attribute vec4 gl_SecondaryColor;
19 attribute vec3 gl_Normal;
20 attribute vec4 gl_Vertex;
21 attribute vec4 gl_MultiTexCoord0;
22 attribute vec4 gl_MultiTexCoord1;
23 attribute vec4 gl_MultiTexCoord2;
24 attribute vec4 gl_MultiTexCoord3;
25 attribute vec4 gl_MultiTexCoord4;
26 attribute vec4 gl_MultiTexCoord5;
27 attribute vec4 gl_MultiTexCoord6;
28 attribute vec4 gl_MultiTexCoord7;
29 attribute float gl_FogCoord;
31 varying vec4 gl_FrontColor;
32 varying vec4 gl_BackColor;
33 varying vec4 gl_FrontSecondaryColor;
34 varying vec4 gl_BackSecondaryColor;
35 varying vec4 gl_TexCoord[gl_MaxTextureCoords];
36 varying float gl_FogFragCoord;
39 // Geometric Functions
43 return gl_ModelViewProjectionMatrix * gl_Vertex;
47 // 8.7 Texture Lookup Functions
50 vec4 texture1DLod (sampler1D sampler, float coord, float lod) {
55 vec4 texture1DProjLod (sampler1D sampler, vec2 coord, float lod) {
56 return texture1DLod (sampler, coord.s / coord.t, lod);
59 vec4 texture1DProjLod (sampler1D sampler, vec4 coord, float lod) {
60 return texture1DLod (sampler, coord.s / coord.q, lod);
63 vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod) {
68 vec4 texture2DProjLod (sampler2D sampler, vec3 coord, float lod) {
69 return texture2DLod (sampler, vec2 (coord.s / coord.p, coord.t / coord.p), lod);
72 vec4 texture2DProjLod (sampler2D sampler, vec4 coord, float lod) {
73 return texture2DLod (sampler, vec2 (coord.s / coord.q, coord.t / coord.q), lod);
76 vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod) {
80 vec4 texture3DProjLod (sampler3D sampler, vec4 coord, float lod) {
81 return texture3DLod (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q), lod);
84 vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod) {
89 vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod) {
94 vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod) {
99 vec4 shadow1DProjLod (sampler1DShadow sampler, vec4 coord, float lod) {
100 return shadow1DLod (sampler, vec3 (coord.s / coord.q, 0.0, coord.p / coord.q), lod);
103 vec4 shadow2DProjLod (sampler2DShadow sampler, vec4 coord, float lod) {
104 return shadow2DLod (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q), lod);