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