我怎样才能在我的肌肉上获得硬边。我在GLSL中有一个简单的环境和漫反射着色器。我认为片段着色器正在插入顶点法线并导致平滑着色。你们需要我的代码还是可以启用一些设置?
没有硬边的当前毛边: http://twirlbound.com/uploads/terain.png
答案 0 :(得分:4)
在您的顶点着色器中,执行以下操作:
flat out vec3 v_normal;
在片段着色器中,类似这样:
flat in vec3 v_normal;
flat
告诉GL将三角形的所有片段光栅化为相同的值。使用哪个顶点的法线取决于当前的“挑衅顶点”,通过调用glProvokingVertex
来设置。
答案 1 :(得分:0)
要获得像你要求的硬边缘,你需要指定垂直于三角形方向的每个三角形法线。为此,您需要将它们作为三角形发送,与四边形或类似物一样。
您还需要在绘图例程之前设置以下内容以获得平面着色。
glEnable(GL_FLAT);
glShadeModel(GL_FLAT);
您可以使用
将阴影设置为平滑glEnable(GL_SMOOTH);
glShadeModel(GL_SMOOTH);