-
-
Notifications
You must be signed in to change notification settings - Fork 23.9k
Description
This is a tracker dedicated to issues experienced when rendering at very long distances, i.e. involving very large camera far distance, very large and very far away geometry, lights with very long range, and all kinds of very large numbers in general.
Such scenes are very common in space settled games, open words, at-scale planets, and similar applications.
Godot currently offers a rather low level of support for such applications due to the many places numerical precision and overflow issues arise.
Sometimes these issues can be worked around with the double precision build, but many also involve numerical issues in the shaders as well, which makes having double precision in the core engine of little help.
Note : deep scenes rendering usually comes along with other related requirements like floating origin management, quadtree / octree scene partitioning or resource streaming. These are broader concerns that go beyond rendering and should not be tracked here.
Feel free to comment on this thread if you've identified or resolved issues not yet mentioned below !
Issues classification
🌌 : happens at galactic scale (numbers > ~1e+19m). Most often related to overflows in length calculations and normalizations of 32 bit vectors.
🪐 : happens at planetary scale (numbers > ~1e+6m). Most often related to numerical precision issues with near and far planes of 32 bit projection matrices
🏞️ : happens at walkable distances (numbers > ~1e+2m). Not deep scene issues strictly speaking, still mentioned because likely related
Issues list
Scene
- 🪐 Rendering fails when zfar > ~1e+6 times znear (Enable rendering with unbounded far distance #99986)
- 🪐 3D geometry cull failure and light flickering at particular camera far / near values #55070 (Enable rendering with unbounded far distance #99986)
- 🪐 Camera far distance is limited to
1,000,000in editor (Support editing scenes of any large physical size #100896)
Lighting
- 🌌 Very far away point lights get culled (Prevent very far away point lights from being culled #98641)
Shadows
- 🪐 directional light shadows not working in large world #81877
- 🪐 Dual paraboloid texture may have NaN values for lights with very long range when blit from cubemap.
- 🪐 [glTF] Very high light range values of imported lights are causing shadows not to render #92551 (Fix shadows of long range
OmniLight3DandSpotLight3D#100319) - 🏞️ OmniLight3D Won't Cast Shadows Past a Distance of ~171 Units #96361 (Fix shadows of long range
OmniLight3DandSpotLight3D#100319)
Shading
- 🌌
VIEWisNaNon very far away fragments - 🪐 Precision-induced lighting failure on large objects on Android devices with Vulkan mobile renderer (solution provided) #86275
Geometry
- 🌌 Very large built-in sphere primitives have wrong normals (Fix normals of very large
SphereMeshandCapsuleMesh#98610)
Effects
- 🌌 Crash with SDFGI and very large znear or zfar #99967 (Fix crash with SDFGI when zfar is very large #104120)
- 🪐 View Z-Far distance above 5000 causes SSAO banding in GLES3 #42390
- 🪐 Bokeh DOF blurs the whole screen when zfar > ~1e+6 times znear (Simplify depth reprojection code #99755)
- 🪐 No SSS when zfar > ~1e+6 times znear (Simplify depth reprojection code #99755)
- 🪐 No SSR when zfar > ~1e+6 times znear (Improve SSR raymarching performance #99693)