-
Сабж.
-
//VS varying vec3 VertexPos; varying vec3 EyePos; varying vec3 VertexModelPos; void main(void) { VertexPos = vec3(gl_Vertex); VertexModelPos = vec3(gl_ModelViewMatrix*gl_Vertex); EyePos = -vec3(gl_ModelViewMatrix*gl_Vertex); EyePos.z = 0.0; gl_Position = ftransform(); }
//FS varying vec3 VertexPos; varying vec3 VertexModelPos; varying vec3 EyePos;
const float Width = 0.5575;
float md(float v1, float v2) { float v = floor(v1/v2); return (v1-v*v2); }
void main(void) { float dist = distance(EyePos,VertexModelPos); vec4 emptycolor = vec4(0.0,0.0,0.0,0.0); vec4 fillcolor = vec4(1.0,1.0,1.0,1.0-1.0/(100.0/dist)); vec4 color = emptycolor; if (dist<100.0 && (fract(abs(VertexPos.x))<Width*(1.0-fillcolor.w) || fract(abs(VertexPos.y))<Width*(1.0-fillcolor.w))) color = fillcolor; gl_FragColor = color; }
-
Рисует сетку на полигоне
-
Я имел в виду полностью, а не только код шейдера
-
Что значит *полностью*?
-
Вот использование: FCoordPlane.SetShader();
glColor4f(1,0,1,1);
glBegin(GL_QUADS);
glVertex3f(-4000,-4000,0);
glVertex3f(+4000,-4000,0);
glVertex3f(+4000,+4000,0);
glVertex3f(-4000,+4000,0);
glEnd();
glColor4f(1,1,1,1);
FCoordPlane.Reset();
-
|