00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00021
00023 #version 110
00024
00025
00026
00027
00028
00029 uniform int vmdprojectionmode;
00030 uniform int vmdtexturemode;
00031 uniform float vmdspritesize;
00032
00033
00034
00035
00036 varying vec3 oglcolor;
00037 varying vec3 V;
00038
00042 void main(void) {
00043
00044 vec4 ecpos = gl_ModelViewMatrix * gl_Vertex;
00045 gl_ClipVertex = ecpos;
00046
00047
00048
00049 oglcolor = vec3(gl_Color);
00050
00051
00052 gl_FogFragCoord = abs(ecpos.z);
00053
00054
00055 #if 0
00056 float spscale = vmdspritesize * 10.0;
00057 #else
00058 vec4 ospos = gl_ModelViewMatrix * vec4(0.0, 0, 0, 1.0);
00059 vec4 rspos = gl_ModelViewMatrix * vec4(1.0, 0, 0, 1.0);
00060 float spscale = vmdspritesize * 250.0 *
00061 length((vec3(ospos) / ospos.w) - (vec3(rspos) / rspos.w));
00062 #endif
00063 if (vmdprojectionmode == 1) {
00064
00065
00066 V = normalize(vec3(ecpos) / ecpos.w);
00067
00068
00069 gl_PointSize = max(1.0, min(1024.0, spscale / -(ecpos.z/ecpos.w)));
00070 } else {
00071
00072
00073 V = vec3(0.0, 0.0, -1.0);
00074
00075
00076 gl_PointSize = max(1.0, min(1024.0, spscale));
00077 }
00078
00079 #if 0
00080
00081
00082
00083 if (vmdtexturemode != 0) {
00084
00085 gl_TexCoord[0].s = dot(ecpos, gl_EyePlaneS[0]);
00086 gl_TexCoord[0].t = dot(ecpos, gl_EyePlaneT[0]);
00087 gl_TexCoord[0].p = dot(ecpos, gl_EyePlaneR[0]);
00088 gl_TexCoord[0].q = dot(ecpos, gl_EyePlaneQ[0]);
00089 }
00090 #endif
00091
00092
00093 #if 1
00094
00095 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
00096 #else
00097
00098
00099
00100 gl_Position = ftransform();
00101 #endif
00102
00103 }
00104
00105
00106