Я сделал несколько простых штриховок в GLSL шашечной доски:
f(P) = [ floor(Px)+floor(Py)+floor(Pz) ] mod 2
Кажется, это работает хорошо, за исключением того факта, что я вижу внутреннюю часть объектов, но я хочу видеть только переднюю грань.
Любые идеи, как это исправить? Спасибо!
Чайник (glutSolidTeapot ()):
Cube (glutSolidCube):
Файл вершинного шейдера:
varying float x,y,z;
void main(){
gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
x = gl_Position.x;
y = gl_Position.y;
z = gl_Position.z;
}
И файл фрагмента шейдера:
varying float x,y,z;
void main(){
float _x=x;
float _y=y;
float _z=z;
_x=floor(_x);
_y=floor(_y);
_z=floor(_z);
float sum = (_x+_y+_z);
sum = mod(sum,2.0);
gl_FragColor = vec4(sum,sum,sum,1.0);
}