Explorar o código

Improve the appearance of simple parallax in SpatialMaterial

This uses offset limiting to avoid distortion in the distance,
and makes simple (non-deep) parallax more usable overall.
Hugo Locurcio %!s(int64=4) %!d(string=hai) anos
pai
achega
cc2b6acbd2
Modificáronse 1 ficheiros con 3 adicións e 1 borrados
  1. 3 1
      scene/resources/material.cpp

+ 3 - 1
scene/resources/material.cpp

@@ -776,7 +776,9 @@ void SpatialMaterial::_update_shader() {
 
 		} else {
 			code += "\t\tfloat depth = texture(texture_depth, base_uv).r;\n";
-			code += "\t\tvec2 ofs = base_uv - view_dir.xy / view_dir.z * (depth * depth_scale);\n";
+			// Use offset limiting to improve the appearance of non-deep parallax.
+			// This reduces the impression of depth, but avoids visible warping in the distance.
+			code += "\t\tvec2 ofs = base_uv - view_dir.xy * depth * depth_scale;\n";
 		}
 
 		code += "\t\tbase_uv=ofs;\n";