网格由 nxn 个顶点的网格构成,这些顶点经过三角剖分以形成网格。顶点以 1/n 个单位分隔。看起来 gl clear 颜色是通过连接网格中原始顶点的线显示的(导致网格)。显示清晰颜色的线条形成四边形。每个细分面片的顶点数为 3。如果没有细分,则不存在伪影。启用曲面细分后,伪影会出现,但不会随着曲面细分因子的变化而变得或多或少明显。有没有人因为镶嵌而看到过这样的工件?如果是这样,他们的根本原因是什么,是否有任何修复?我开始怀疑一些数字错误,但在镶嵌之前缩放地形也不会影响这个工件的可见性。
根据要求,以下是相关的代码:
苔丝控制:
float GetTessLevel(float d1, float d2) {
return 2;
}
void main() {
TEworldPos[gl_InvocationID] = TCworldPos[gl_InvocationID];
float EyeToVertexDistance0 = distance(cameraPos, TCworldPos[0]);
float EyeToVertexDistance1 = distance(cameraPos, TCworldPos[1]);
float EyeToVertexDistance2 = distance(cameraPos, TCworldPos[2]);
// Calculate the tessellation levels
gl_TessLevelOuter[0] = GetTessLevel(EyeToVertexDistance1, EyeToVertexDistance2);
gl_TessLevelOuter[1] = GetTessLevel(EyeToVertexDistance2, EyeToVertexDistance0);
gl_TessLevelOuter[2] = GetTessLevel(EyeToVertexDistance0, EyeToVertexDistance1);
gl_TessLevelInner[0] = gl_TessLevelOuter[2];
苔丝评估:
uniform mat4 viewProj;
void main() {
vec3 posFromBary = gl_TessCoord.x * TEworldPos[0] +
gl_TessCoord.y * TEworldPos[1] +
gl_TessCoord.z * TEworldPos[2];
gl_Position = viewProj * vec4(posFromBary, 1.0);
}