summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_scene_render.h
Commit message (Collapse)AuthorAgeFilesLines
* Fix copyright headers referring to GodotSpartan3222024-10-271-2/+2
|
* Rebrand preambles to RedotSpartan3222024-10-131-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | (cherry picked from commit e8542b06acca3c1bdeee4b528411771f0819f084) Credits: Co-authored-by: Skogi <skogi.b@gmail.com> Co-authored-by: Spartan322 <Megacake1234@gmail.com> Co-authored-by: swashberry <swashdev@pm.me> Co-authored-by: Christoffer Sundbom <christoffer_karlsson@live.se> Co-authored-by: Dubhghlas McLaughlin <103212704+mcdubhghlas@users.noreply.github.com> Co-authored-by: McDubh <103212704+mcdubhghlas@users.noreply.github.com> Co-authored-by: Dubhghlas McLaughlin <103212704+mcdubhghlas@users.noreply.github.com> Co-authored-by: radenthefolf <radenthefolf@gmail.com> Co-authored-by: John Knight <80524176+Tekisasu-JohnK@users.noreply.github.com> Co-authored-by: Adam Vondersaar <adam.vondersaar@uphold.com> Co-authored-by: decryptedchaos <nixgod@gmail.com> Co-authored-by: zaftnotameni <122100803+zaftnotameni@users.noreply.github.com> Co-authored-by: Aaron Benjamin <lifeartstudios@gmail.com> Co-authored-by: wesam <108880473+wesamdev@users.noreply.github.com> Co-authored-by: Mister Puma <MisterPuma80@gmail.com> Co-authored-by: Aaron Benjamin <lifeartstudios@gmail.com> Co-authored-by: SingleError <isaaconeoneone@gmail.com> Co-authored-by: Bioblaze Payne <BioblazePayne@gmail.com>
* Implement hooks into rendererBastiaan Olij2024-02-181-1/+24
|
* Add optional depth fogEidolon2024-02-171-1/+8
|
* 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".
* Remove high quality glow as it is not any higher quality than regular glowclayjohn2022-12-131-1/+0
|
* Implement CAMERA_VISIBLE_LAYERS as built-in shader variableNumbuhFour2022-12-031-1/+2
|
* Move cluster builder, sdfgi and gi structures to clustered renderer, move ↵Bastiaan Olij2022-10-041-38/+0
| | | | light and probe elements into storage and reorganise our render_scene method.
* Split rendering driver project setting into renderer_name and ↵clayjohn2022-09-191-2/+2
| | | | 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 #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-7/+7
| |
* | Implement Physical Light Units as an optional setting.clayjohn2022-08-311-19/+5
|/ | | | | | 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.
* Merge pull request #63527 from BastiaanOlij/rework_environmentRémi Verschelde2022-07-291-29/+136
|\ | | | | Restructure environment in render implementation
| * Restructure environment in render implementationBastiaan Olij2022-07-291-29/+136
| |
* | Allow changing mipmap LOD bias when FSR 1.0 scaling is not usedHugo Locurcio2022-07-281-1/+1
|/ | | | | | | | | Mipmap LOD bias can be useful to improve the appearance of distant textures without increasing anisotropic filtering (or in situations where anisotropic filtering is not effective). `fsr_mipmap_bias` was renamed to `texture_mipmap_bias` accordingly. The property hint now allows for greater precision as well.
* Change RendererSceneRender::GeometryInstance so more code is shared among ↵Bastiaan Olij2022-07-271-36/+11
| | | | 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-7/+7
| | | | | | | | | | | | | 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.
* Initial TAA implementationjfons2022-06-071-3/+4
| | | | | | 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.
* Fix "ortogonal" -> "orthogonal" typo in rasterizer codeHugo Locurcio2022-04-261-4/+4
|
* Zero initialize all pointer class and struct membersRémi Verschelde2022-04-041-1/+1
| | | | | This prevents the pitfall of UB when checking if they have been assigned something valid by comparing to nullptr.
* Improve compilation speed (forward declarations/includes cleanup)Hendrik Brucker2022-02-121-1/+0
|
* Enable 16-bit shadow atlas by default in the RenderingServer methodsHugo Locurcio2022-02-041-2/+2
| | | | | | | | | 16-bit shadow atlases are already the default in the project settings, but low-level methods used 24-bit shadows by default. This makes low-level methods more consistent with the default project settings to avoid accidental performance issues when users change the shadow size at run-time.
* 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/+1
| | | | | | | | | | | | | | | 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-1/+1
|\
| * Rename Lod Threshold to Mesh Lod ThresholdHugo Locurcio2021-12-291-1/+1
| | | | | | | | | | 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-1/+3
|\ \
| * | Added SSIL post processing effectclayjohn2021-11-061-1/+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
|/
* Addition of FogVolumes, FogShaders, FogMaterial, and overhaul of VolumetricFogclayjohn2021-10-281-2/+8
| | | | Co-authored-by: Brian Semrau <brian.semrau@gmail.com>
* Implement distance fade and transparencyJFonS2021-10-251-0/+3
| | | | | | | | | | | | | | | | | | | | | 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>
* 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.
* 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/+2
| | | | | | | * 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-1/+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.
* Add stereoscopic rendering through multiviewBastiaan Olij2021-06-131-3/+21
|
* Rename GI Classesreduz2021-06-051-7/+7
| | | | | | | * 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
|
* Implement occlusion cullingjfons2021-04-231-1/+1
| | | | | | | | | 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.
* Remove low_end option from renderer, being replaced by separate implementationBastiaan Olij2021-04-091-2/+0
|
* Make Servers truly Thread Safereduz2021-02-101-5/+8
| | | | | | | | | -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-4/+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.