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