From e47d0e021a4398dfa35e41108597dd784689741c Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 12 Jul 2021 00:44:24 +0200 Subject: [PATCH] Improve the appearance of simple parallax in StandardMaterial3D This uses offset limiting to avoid distortion in the distance, and makes simple (non-deep) parallax more usable overall. --- scene/resources/material.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index 08f7274ff630..74410f11037d 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -957,7 +957,9 @@ void BaseMaterial3D::_update_shader() { } else { code += " float depth = 1.0 - texture(texture_heightmap, base_uv).r;\n"; } - code += " vec2 ofs = base_uv - view_dir.xy / view_dir.z * (depth * heightmap_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 += " vec2 ofs = base_uv - view_dir.xy * depth * heightmap_scale;\n"; } code += " base_uv=ofs;\n";