- const char* PointSpritesVertexShader =
- "uniform float pointRadius;\n"
- "uniform float pointScale;\n"
- "void main(void) {\n"
- " vec3 posEye = vec3(gl_ModelViewMatrix * vec4(gl_Vertex.xyz, 1.0));\n"
- " float dist = length(posEye);\n"
- " gl_PointSize = pointRadius * (pointScale / dist);\n"
- " gl_TexCoord[0] = gl_MultiTexCoord0;\n"
- " gl_Position = gl_ModelViewProjectionMatrix * vec4(gl_Vertex.xyz, 1.0);\n"
- " gl_FrontColor = gl_Color;\n"
- "}\n";
- const char* PointSpritesFragmentShader =
- "uniform vec3 lightDir = vec3(0.577, 0.577, 0.577);\n"
- "void main(void) {\n"
- " vec3 N;\n"
- " N.xy = gl_TexCoord[0].xy*vec2(2.0, -2.0) + vec2(-1.0, 1.0);\n"
- " float mag = dot(N.xy, N.xy);\n"
- " if (mag > 1) discard;\n"
- " N.z = sqrt(1-mag);\n"
- " float diffuse = max(0.0, dot(lightDir, N));\n"
- " gl_FragColor = gl_Color * diffuse;\n"
- "}\n";