0
在GLSL着色器中,我需要省略一些镶嵌补丁以显着提高性能。这些补丁是每个顶点具有给定世界坐标的三角形。但是,当我将这些坐标转换为视锥体剔除的视图空间时,会出现误差。使用视图矩阵进行遏制剔除
这是原始地形。
这是错误如何影响它的顶部。
这与污垢的截面的特写镜头。
这些错误在屏幕的顶部,但也侧面和底部namly发生。 这里是我用来确定是否应该排除三角形(在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;
}
}
我将不胜感激任何帮助! Behemyth
我很欣赏投入到这篇文章的努力。我无意中通过创建路径跟踪渲染器来绕过这个问题。由于这个问题从来没有真正解决过,所以这个问题与任何问题一样好。谢谢您的帮助! – Behemyth 2013-12-05 04:43:24