【发布时间】:2013-04-08 18:24:41
【问题描述】:
在 GLSL 着色器中,我需要省略一些曲面细分补丁以显着提高性能。这些补丁是三角形,每个顶点都有给定的世界坐标。但是,当我将这些坐标转换为视锥体剔除的视图空间时,存在误差。
这是原始地形。
这就是错误对顶部的影响。
这是一个有污垢的部分的特写。
这些错误不仅发生在屏幕顶部,而且也发生在屏幕的侧面和底部。 这是我用来确定是否应该排除三角形的代码(在 GLSL 中)。
bool inFrustum( vec3 p,vec3 q,vec3 r) {
vec4 Pclip = camera * vec4(p, 1.0f);
vec4 Qclip = camera * vec4(q, 1.0f);
vec4 Rclip = camera * vec4(r, 1.0f);
if(((-Pclip.w>Pclip.x&&-Qclip.w>Qclip.x&&-Rclip.w>Rclip.x)|| (Pclip.x>Pclip.w&&Qclip.x>Qclip.w&&Rclip.x>Rclip.w))||
((-Pclip.w>Pclip.y&&-Qclip.w>Qclip.y&&-Rclip.w>Rclip.y)||(Pclip.y>Pclip.w&&Qclip.y>Qclip.w&&Rclip.y>Rclip.w))||
((-Pclip.w>Pclip.z&&-Qclip.w>Qclip.z&&-Rclip.w>Rclip.z)||(Pclip.z>Pclip.w&&Qclip.z>Qclip.w&&Rclip.z>Rclip.w))){
return false;
}
else{
return true;
}
}
我将不胜感激任何帮助! 巨兽
【问题讨论】:
标签: matrix glsl frustum culling