summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_scene_cull.h
Commit message (Collapse)AuthorAgeFilesLines
...
* add support for glow mapsAnsraer2022-01-201-1/+1
|
* Allow using between 1 and 8 cascades for SDFGIHugo Locurcio2022-01-171-1/+1
| | | | | | This provides more flexibility between performance and quality adjustments, especially when using SDFGI for small-scale levels (which can be useful for procedurally generated scenes).
* Added material_overlay property to MeshInstance3DFernando Cosentino2022-01-051-0/+2
| | | | | | | | | | | | | | | Applying overlay materials into multi-surface meshes currently requires adding a next pass material to all the surfaces, which might be cumbersome when the material is to be applied to a range of different geometries. This also makes it not trivial to use AnimationPlayer to control the material in case of visual effects. The material_override property is not an option as it works replacing the active material for the surfaces, not adding a new pass. This commit adds the material_overlay property to GeometryInstance3D (and therefore MeshInstance3D), having the same reach as material_override (that is, all surfaces) but adding a new material pass on top of the active materials, instead of replacing them.
* Merge pull request #56305 from Calinou/rename-lod-thresholdRémi Verschelde2022-01-041-3/+3
|\
| * Rename Lod Threshold to Mesh Lod ThresholdHugo Locurcio2021-12-291-3/+3
| | | | | | | | | | This makes it more obvious that the setting only affects mesh LOD, not manual (H)LOD achieved using visibility ranges.
* | Merge pull request #51206 from clayjohn/Vulkan-ASSGIRémi Verschelde2022-01-041-0/+3
|\ \
| * | Added SSIL post processing effectclayjohn2021-11-061-0/+3
| | |
* | | Update copyright statements to 2022Rémi Verschelde2022-01-031-2/+2
| |/ |/| | | | | Happy new year to the wonderful Godot community!
* | Implemented AMD's FSR as a computer shader for upscaling 3D scenesJe06jm2021-11-231-1/+1
| |
* | Fix transparency state initializationjfons2021-11-121-7/+8
|/
* Addition of FogVolumes, FogShaders, FogMaterial, and overhaul of VolumetricFogclayjohn2021-10-281-1/+16
| | | | Co-authored-by: Brian Semrau <brian.semrau@gmail.com>
* Implement distance fade and transparencyJFonS2021-10-251-3/+9
| | | | | | | | | | | | | | | | | | | | | The built-in ALPHA in spatial shaders comes pre-set with a per-instance transparency value. Multiply by it if you want to keep it. The transparency value of any given GeometryInstance3D is affected by: - Its new "transparency" property. - Its own visiblity range when the new "visibility_range_fade_mode" property is set to "Self". - Its parent visibility range when the parent's fade mode is set to "Dependencies". The "Self" mode will fade-out the instance when reaching the visibility range limits, while the "Dependencies" mode will fade-in its dependencies. Per-instance transparency is only implemented in the forward clustered renderer, support for mobile should be added in the future. Co-authored-by: reduz <reduzio@gmail.com>
* Fix state inconsistencies in visibility dependencies.jfons2021-10-251-3/+3
|
* Merge pull request #53523 from Calinou/remove-occlusion-colorRémi Verschelde2021-10-071-1/+1
|\
| * Remove unimplemented `Environment.ambient_light_occlusion_color` propertyHugo Locurcio2021-10-071-1/+1
| | | | | | | | | | | | | | This property was intended to provide a way to have SSAO or VoxelGI ambient occlusion with a color other than black. However, it was dropped during the Vulkan renderer development due to the performance overhead it caused when the feature wasn't used.
* | Replace references to VisualServer in code comments with RenderingServerHugo Locurcio2021-10-071-1/+1
|/ | | | VisualServer no longer exists in the `master` branch.
* Implement more rendering options as specialization constantsreduz2021-07-191-0/+3
| | | | | | | | * Shadow quality settings now specialization constant. * Decal and light projector filters can be set. * Changing those settings forces re-creation of the pipelines. These changes should help improve performance related to shadow mapping, and allows improving performance by sacrificing decal and light projector quality.
* Use specialization constants in clustered rendererreduz2021-07-121-0/+13
| | | | | | | * Keep track of when projector, softshadow or directional sofshadow were enabled. * Enable them via specializaton constant where it makes sense. * Re-implements soft shadows. * Re-implements light projectors.
* Fix Render Inforeduz2021-07-031-2/+2
| | | | | | | | * Fixed and redone the process to obtain render information from a viewport * Some stats, such as material changes are too difficult to guess on Vulkan, were removed. * Separated visible and shadow stats, which causes confusion. * Texture, buffer and general video memory can be queried now. * Fixed the performance metrics too.
* Clean up RenderingServer and its bindingsreduz2021-07-011-4/+0
| | | | | | * Rewrote bindings for RenderingServer. * They are now all up to date. * Several unused methods and deprecated features were cleaned up.
* Improve RID_Owner memory usagereduz2021-06-291-3/+3
| | | | | | * Ability to allocate empty objects in RID_Owner, so RID_PtrOwner is not needed in most cases. * Improves cache usage, as objects are now allocated together * Should improve performance in 2D rendering
* Fix crash in visibility range system.jfons2021-06-191-1/+1
|
* Refactor VisibilityNotifier3Dreduz2021-06-161-0/+19
| | | | | | | * This is the 3D counterpart to #49632 * Implemented a bit different as 3D works using instancing After merged, both 2D and 3D classes will most likely be renamed in a separate PR to DisplayNotifier2D/3D.
* Implement visibility range and dependencies.jfons2021-06-141-18/+72
| | | | | | | | | | | | | | | | | | | | | This commit adds the following properties to GeometryInstance3D: `visibility_range_begin`, `visibility_range_begin_margin`, `visibility_range_end`, `visibility_range_end_margin`. Together they define a range in which the GeometryInstance3D will be visible from the camera, taking hysteresis into account for state changes. A begin or end value of 0 will be ignored, so the visibility range can be open-ended in both directions. This commit also adds the `visibility_parent` property to 'Node3D'. Which defines the visibility parents of the node and its subtree (until another parent is defined). Visual instances with a visibility parent will only be visible when the parent, and all of its ancestors recursively, are hidden because they are closer to the camera than their respective `visibility_range_begin` thresholds. Combining visibility ranges and visibility parents users can set-up a quick HLOD system that shows high detail meshes when close (i.e buildings, trees) and merged low detail meshes for far away groups (i.e. cities, woods).
* Add stereoscopic rendering through multiviewBastiaan Olij2021-06-131-4/+3
|
* Rename GI Classesreduz2021-06-051-12/+12
| | | | | | | * GIProbe is now VoxelGI * BakedLightmap is now LightmapGI As godot adds more ways to provide GI (as an example, SDFGI in 4.0), the different techniques (which have different pros/cons) need to be properly named to avoid confusion.
* Rename Transform to Transform3D in coreAaron Franke2021-06-031-10/+10
|
* Fix typos with codespellRémi Verschelde2021-05-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using codespell 2.0.0. Method: ``` $ cat > ../godot-word-whitelist.txt << EOF ang curvelinear dof doubleclick fave findn GIRD leapyear lod merchantibility nd numer ois ony que seeked synching te uint unselect webp EOF $ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po" $ git diff // undo unwanted changes ```
* Implement Particle Trailsreduz2021-04-301-0/+2
| | | | | | | | | -Enable the trails and set the length in seconds -Provide a mesh with a skeleton and a skin -Or, alternatively use one of the built-in TubeTrailMesh/RibbonTrailMesh -Works deterministically -Fixed particle collisions (were broken) -Not working in 2D yet (that will happen next)
* Implement occlusion cullingjfons2021-04-231-6/+22
| | | | | | | | | Added an occlusion culling system with support for static occluder meshes. It can be enabled via `Project Settings > Rendering > Occlusion Culling > Use Occlusion Culling`. Occluders are defined via the new `Occluder3D` resource and instanced using the new `OccluderInstance3D` node. The occluders can also be automatically baked from a scene using the built-in editor plugin.
* Rename get_surface_material to get_surface_override_materialclayjohn2021-04-141-1/+1
|
* Make Servers truly Thread Safereduz2021-02-101-9/+17
| | | | | | | | | -Rendering server now uses a split RID allocate/initialize internally, this allows generating RIDs immediately but initialization to happen later on the proper thread (as rendering APIs generally requiere to call on the right thread). -RenderingServerWrapMT is no more, multithreading is done in RenderingServerDefault. -Some functions like texture or mesh creation, when renderer supports it, can register and return immediately (so no waiting for server API to flush, and saving staging and command buffer memory). -3D physics server changed to be made multithread friendly. -Added PhysicsServer3DWrapMT to use 3D physics server from multiple threads. -Disablet Bullet (too much effort to make multithread friendly, this needs to be fixed eventually).
* Improve SDFGI indirect light feedback loopreduz2021-02-071-1/+1
| | | | | -Use occlusion for feedback, further reduces light leaking. -More control on feedback, now its a slider.
* Simplify Volumetric Fogreduz2021-02-061-3/+1
| | | | | | | -Always use temporal reproject, it just loos way better than any other filter. -By always using termporal reproject, the shadowmap reduction can be done away with, massively improving performance. -Disadvantage of temporal reproject is update latency so.. -Made sure a gaussian filter runs in XY after fog, this allows to keep stability and lower latency.
* Added temporal reprojection to Volumetric Fogreduz2021-02-051-1/+1
| | | | | -It's an option, just enable it -Just works, don't have to do anything else.
* Rewrote how barriers work for faster renderingreduz2021-02-041-4/+9
| | | | | | | | | | | -Added more finegrained control in RenderingDevice API -Optimized barriers (use less ones for thee same) -General optimizations -Shadows render all together unbarriered -GI can render together with shadows. -SDFGI can render together with depth-preoass. -General fixes -Added GPU detection
* Shadow map rendering optimizationreduz2021-01-241-2/+2
| | | | | | | -All shadow rendering is done with raster now (no compute) -All shadow rendering is done by rendering directly to the shadow atlas -Improved how buffer clearing is done to optimize the above. -Ability to set shadows as 16 bits.
* Several GI related optimizations and fixesreduz2021-01-241-0/+3
| | | | | | | | | | | | -SDFGI direct light is done over many frames -SDFGI Changed settings for rays/frame -SDFGI Misc optimizations -SDFGI Bug fix on probe scroll -GIProbe was not working, got it to work again -GIProbe dynamic objects were not working, fixed -Added a half size GI option.
* Threaded optimizations to cull and renderreduz2021-01-051-22/+131
| | | | | -Reorganize thread work pool for rendering -Fixes to make secondary command buffers to work (disabled because they need more testing)
* Rewrite render code to be more cache and thread friendly.reduz2021-01-051-11/+39
|
* Reorganize renderer code.reduz2021-01-051-13/+86
| | | | So it can hopefully be made more cache efficient afterwards.
* Update copyright statements to 2021Rémi Verschelde2021-01-011-2/+2
| | | | | | | | | | | | | | Happy new year to the wonderful Godot community! 2020 has been a tough year for most of us personally, but a good year for Godot development nonetheless with a huge amount of work done towards Godot 4.0 and great improvements backported to the long-lived 3.2 branch. We've had close to 400 contributors to engine code this year, authoring near 7,000 commit! (And that's only for the `master` branch and for the engine code, there's a lot more when counting docs, demos and other first-party repos.) Here's to a great year 2021 for all Godot users 🎆
* Rewrite culling to be more cache/thread friendly.reduz2020-12-261-26/+200
| | | | | | -Uses a single array with all data -Massive performance improvement -Does not support threads yet, but code is now thread friendly
* Replace Octree by DynamicBVH in cull codereduz2020-12-231-65/+140
| | | | | | -Much greater pairing/unpairing performance -For now, using it for culling too, but this will change in a couple of days. -Added a paged allocator, to efficiently alloc/free some types of objects.
* Port ASSAO to Godot to replace SAOclayjohn2020-12-211-2/+2
|
* Increase the default Camera Zfar to 4000Hugo Locurcio2020-12-191-1/+1
| | | | | | | | | | | | | | | | | This makes it possible to view far away objects without having to tweak any settings. This results in a more usable editor when working on large-scale levels. This change should have no impact on performance, but note that Z-fighting will be visible at a distance. This can be made less visible by increasing the Znear value (however, doing so will cause nearby surfaces to disappear). This change was also applied to the editor, but it will only apply to newly created scenes. This also changes the default camera settings in the glTF importer to match the Camera node's defaults.
* Implement automatic LOD (Level of Detail)reduz2020-12-181-5/+6
| | | | | | | -Happens on import by default for all models -Just works (tm) -Biasing can be later adjusted per node or per viewport (as well as globally) -Disabled AABB.get_support test because its broken
* Reimplement skeletons and blend shapesreduz2020-12-161-0/+2
| | | | Uses compute shaders, which only once, on demand, and all in parallel.
* RenderingServer reorganizationreduz2020-12-041-0/+583