瀏覽代碼

Continue tracing screen space reflection after encountering sky

Instead of breaking the whole trace when encountering the sky/camera far clip, continue tracing and check if "hits" are sky/far clip or not. Prevents some objects not being reflected due to gaps.
Arman 5 年之前
父節點
當前提交
48a59e6c4a
共有 1 個文件被更改,包括 3 次插入7 次删除
  1. 3 7
      servers/rendering/rasterizer_rd/shaders/screen_space_reflection.glsl

+ 3 - 7
servers/rendering/rasterizer_rd/shaders/screen_space_reflection.glsl

@@ -157,18 +157,14 @@ void main() {
 
 		depth = imageLoad(source_depth, ivec2(pos - 0.5)).r;
 
-		if (-depth >= params.camera_z_far) { //went beyond camera
-			break;
-		}
-
 		z_from = z_to;
 		z_to = z / w;
 
 		if (depth > z_to) {
 			// if depth was surpassed
-			if (depth <= max(z_to, z_from) + params.depth_tolerance) {
-				// check the depth tolerance
-				//check that normal is valid
+			if (depth <= max(z_to, z_from) + params.depth_tolerance && -depth < params.camera_z_far) {
+				// check the depth tolerance and far clip
+				// check that normal is valid
 				found = true;
 			}
 			break;