summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_scene_cull.h
Commit message (Collapse)AuthorAgeFilesLines
* Created static method and moved _particles_set_view_axis over to it to allow ↵David House2024-11-161-0/+2
| | | | calling on render thread.
* Merge pull request #96705 from elmajime/camera_from_external_feedThaddeus Crews2024-11-041-0/+1
|\ | | | | | | Add support for external camera feed from external plugin on Android
| * Added external camera feed from external plugin on Androidmaxime.chambefort2024-10-301-0/+1
| |
* | Merge pull request #85338 from EMBYRDEV/shadow-caster-maskThaddeus Crews2024-10-241-0/+1
|\ \ | |/ |/| | | Add `shadow_caster_mask` to Light3D.
| * Add `shadow_caster_mask` to Light3D.Hannah Crawford2024-08-121-0/+1
| |
* | Implement asynchronous transfer queues, thread guards on RenderingDevice. ↵Dario2024-10-021-0/+3
| | | | | | | | | | | | | | | | | | | | | | Add ubershaders and rework pipeline caches for Forward+ and Mobile. - Implements asynchronous transfer queues from PR #87590. - Adds ubershaders that can run with specialization constants specified as push constants. - Pipelines with specialization constants can compile in the background. - Added monitoring for pipeline compilations. - Materials and shaders can now be created asynchronously on background threads. - Meshes that are loaded on background threads can also compile pipelines as part of the loading process.
* | Implement support for bicubic lightmap filteringBlueCube33102024-08-191-0/+1
| | | | | | | | Co-authored-by: Calinou <hugo.locurcio@hugo.pro>
* | Fixed Timestep Interpolation (3D)Ricardo Buring2024-07-071-7/+57
|/ | | | | | | Adds 3D fixed timestep interpolation to the rendering server. This does not yet include support for multimeshes or particles. Co-authored-by: lawnjelly <lawnjelly@gmail.com>
* Jitter raster occlusion camera to reduce false positives.lawnjelly2024-04-031-0/+7
| | | | Due to the low resolution of the occlusion buffer, small gaps between occluders can be closed and incorrectly occlude instances which should show through the gaps. To ameliorate this problem, this PR jitters the occlusion buffer over time, making it more likely an instance will be seen through a gap. This is used in conjunction with an occlusion timer per instance, to prevent instances flickering on and off rapidly.
* Disable XR server when compiling without 3DAaron Franke2024-03-131-0/+3
|
* Implement hooks into rendererBastiaan Olij2024-02-181-1/+28
|
* Add optional depth fogEidolon2024-02-171-1/+8
|
* Shadow volume culling and tighter shadow caster cullinglawnjelly2024-01-301-2/+51
| | | | | Existing shadow caster culling takes no account of the camera. This PR adds the highly encapsulated class RenderingLightCuller which can cut down the casters in the shadow volume to only those which can cast shadows on the camera frustum.
* Add FidelityFX Super Resolution 2.2 (FSR 2.2.1) support.Dario2023-09-251-3/+2
| | | | Introduces support for FSR2 as a new upscaler option available from the project settings. Also introduces an specific render list for surfaces that require motion and the ability to derive motion vectors from depth buffer and camera motion.
* Add motion vector support for GPU 3D Particles.Dario2023-08-281-0/+3
| | | | Add the capability of resizing the transforms buffer for particles to be double its size and alternate where the current output is written to. Only works for particles that use index as their draw order.
* Properly clear material slots on mesh instance when material is freedBastiaan Olij2023-05-221-0/+24
|
* Implement cull_mask for decals and lights in mobile and compatibility backendsclayjohn2023-02-061-1/+2
|
* Fix MultiMesh visible_instance_count being ignored after the first frameRicardo Buring2023-02-031-3/+1
| | | | Co-authored-by: Clay John <claynjohn@gmail.com>
* One Copyright Update to rule them allRémi Verschelde2023-01-051-29/+29
| | | | | | | | | | | | | | | | | | | | As many open source projects have started doing it, we're removing the current year from the copyright notice, so that we don't need to bump it every year. It seems like only the first year of publication is technically relevant for copyright notices, and even that seems to be something that many companies stopped listing altogether (in a version controlled codebase, the commits are a much better source of date of publication than a hardcoded copyright statement). We also now list Godot Engine contributors first as we're collectively the current maintainers of the project, and we clarify that the "exclusive" copyright of the co-founders covers the timespan before opensourcing (their further contributions are included as part of Godot Engine contributors). Also fixed "cf." Frenchism - it's meant as "refer to / see".
* visual instance layers are regarded during shadow cullingMarkus Grafen2022-12-271-1/+1
| | | | | Partially cherry-picked from 16517ecb. Todos: - setting Camera cull_mask should mark affected shadows dirty somehow
* Merge pull request #69998 from BastiaanOlij/sorting-pivot-4Rémi Verschelde2022-12-231-0/+5
|\ | | | | | | Added options for sorting transparent objects (port of PR #63040)
| * Added options for sorting transparent objects (port of PR 63040)Bastiaan Olij2022-12-231-0/+5
| |
* | Cache mesh AABB when modified by skeleton and update instance AABB whenclayjohn2022-12-141-2/+2
|/ | | | skeleton changes
* Remove high quality glow as it is not any higher quality than regular glowclayjohn2022-12-131-1/+0
|
* Move cluster builder, sdfgi and gi structures to clustered renderer, move ↵Bastiaan Olij2022-10-041-6/+1
| | | | light and probe elements into storage and reorganise our render_scene method.
* Split rendering driver project setting into renderer_name and ↵clayjohn2022-09-191-3/+3
| | | | rendering_driver. To differentiate between a driver (e.g. Vulkan or D3D12) and a renderer (e.g. clustered or mobile renderer).
* Merge pull request #65170 from KoBeWi/your_argument_is_TypedArrayRémi Verschelde2022-09-021-1/+1
|\
| * Change Array arguments to TypedArraykobewi2022-09-011-1/+1
| |
* | Merge pull request #64952 from Chaosus/vs_rename_uniform_to_paramRémi Verschelde2022-09-021-4/+4
|\ \
| * | Rename `uniform` to `parameter` across the engineYuri Rubinsky2022-09-011-4/+4
| |/
* | Merge pull request #60185 from Calinou/environment-fog-and-sky-affectRémi Verschelde2022-09-011-2/+4
|\ \
| * | Add Environment properties to control fog rendering on background skyHugo Locurcio2022-09-011-2/+4
| |/ | | | | | | | | | | | | | | | | | | Values lower than 1.0 can be used to make the fog rendering not fully obstruct the sky. This can be desired when using fog as a purely atmospheric effect, without intending to use fog for open world fog fading. When set to 0.0, fog rendering behavior will be similar to Godot 3.x where sky rendering was never affected by fog.
* | Extracting render buffers and changing it to a more generic solutionBastiaan Olij2022-09-011-5/+4
| |
* | Implement Physical Light Units as an optional setting.clayjohn2022-08-311-25/+10
|/ | | | | | This allows light sources to be specified in physical light units in addition to the regular energy multiplier. In order to avoid loss of precision at high values, brightness values are premultiplied by an exposure normalization value. In support of Physical Light Units this PR also renames CameraEffects to CameraAttributes.
* Rename shader parameter uniform setter/getter methods for consistencyHugo Locurcio2022-08-041-8/+8
| | | | | | `shader_uniform` is now consistenly used across both per-shader and per-instance shader uniform methods. This makes methods easier to find in the class reference when looking for them.
* Restructure environment in render implementationBastiaan Olij2022-07-291-13/+124
|
* Change RendererSceneRender::GeometryInstance so more code is shared among ↵Bastiaan Olij2022-07-271-7/+7
| | | | renderers
* Code quality: Fix header guards consistencyRémi Verschelde2022-07-251-3/+3
| | | | | Adds `header_guards.sh` bash script, used in CI to validate future changes. Can be run locally to fix invalid header guards.
* Implement Vector4, Vector4i, Projectionreduz2022-07-231-4/+4
| | | | | | | | | | | | | Implement built-in classes Vector4, Vector4i and Projection. * Two versions of Vector4 (float and integer). * A Projection class, which is a 4x4 matrix specialized in projection types. These types have been requested for a long time, but given they were very corner case they were not added before. Because in Godot 4, reimplementing parts of the rendering engine is now possible, access to these types (heavily used by the rendering code) becomes a necessity. **Q**: Why Projection and not Matrix4? **A**: Godot does not use Matrix2, Matrix3, Matrix4x3, etc. naming convention because, within the engine, these types always have a *purpose*. As such, Godot names them: Transform2D, Transform3D or Basis. In this case, this 4x4 matrix is _always_ used as a _Projection_, hence the naming.
* Rename soft shadow quality project settings for easier searchingHugo Locurcio2022-07-131-2/+2
| | | | | | | | | | | | `rendering/quality/shadows` is now `rendering/quality/positional_shadow` to explicitly denote that the settings only affect positional light shadows, not directional light shadows. Shadow atlas settings now contain the word "atlas" for easier searching. Soft shadow quality settings were renamed to contain the word "filter". This makes the settings appear when searching for "filter" in the project settings dialog, like in Godot 3.x.
* Merge pull request #62344 from BastiaanOlij/extract_dependenciesRémi Verschelde2022-07-061-16/+16
|\
| * Split dependency logicBastiaan Olij2022-06-281-16/+16
| | | | | | | | | | | | Split FOG Split visibility notifier Final cleanup of storage classes
* | Use the Static global illumination mode in GeometryInstance3D by defaultHugo Locurcio2022-06-231-1/+1
|/ | | | | This makes VoxelGI and SDFGI work out of the box with primitive meshes, loaded OBJ meshes and CSG nodes.
* Initial TAA implementationjfons2022-06-071-2/+5
| | | | | | Initial TAA support based on the implementation in Spartan Engine. Motion vectors are correctly generated for camera and mesh movement, but there is no support for other things like particles or skeleton deformations.
* Add a new HashSet templatereduz2022-05-201-15/+15
| | | | | * Intended to replace RBSet in most cases. * Optimized for iteration speed
* Replace most uses of Map by HashMapreduz2022-05-161-18/+18
| | | | | | | | | | | | * Map is unnecessary and inefficient in almost every case. * Replaced by the new HashMap. * Renamed Map to RBMap and Set to RBSet for cases that still make sense (order matters) but use is discouraged. There were very few cases where replacing by HashMap was undesired because keeping the key order was intended. I tried to keep those (as RBMap) as much as possible, but might have missed some. Review appreciated!
* Style: Partially apply clang-tidy's `cppcoreguidelines-pro-type-member-init`Rémi Verschelde2022-05-021-1/+1
| | | | | | | | | | | Didn't commit all the changes where it wants to initialize a struct with `{}`. Should be reviewed in a separate PR. Option `IgnoreArrays` enabled for now to be conservative, can be disabled to see if it proposes more useful changes. Also fixed manually a handful of other missing initializations / moved some from constructors.
* Zero initialize all pointer class and struct membersRémi Verschelde2022-04-041-16/+16
| | | | | This prevents the pitfall of UB when checking if they have been assigned something valid by comparing to nullptr.
* Replace DirectionalLight3D's `use_in_sky_only` with `sky_mode` enumHugo Locurcio2022-03-171-1/+1
| | | | | | | | | | 3 options are available: - Light and Sky (default) - Light Only (new) - Sky Only (equivalent to `use_in_sky_only = true`) Co-authored by: clayjohn <claynjohn@gmail.com>
* Improve compilation speed (forward declarations/includes cleanup)Hendrik Brucker2022-02-121-8/+3
|