summaryrefslogtreecommitdiffstats
path: root/servers/rendering/rendering_server_default.h
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #54574 from Ansraer/glow_mapRémi Verschelde2022-01-261-1/+1
|\
| * add support for glow mapsAnsraer2022-01-201-1/+1
| |
* | Merge pull request #54890 from briansemrau/threadsafe-drawpute-listsRémi Verschelde2022-01-221-1/+0
|\ \ | |/ |/| Make draw/compute lists threadsafe
| * Make draw/compute lists threadsafeBrian Semrau2021-11-111-1/+0
| | | | | | | | Lock the rendering device while command buffers are in use
* | Revert "Add new scaling modes for splash screen"Rémi Verschelde2022-01-191-1/+1
| | | | | | | | | | | | | | This reverts commit fcc9f5ce396ff921ed8253f657a8c9c38e7a878d. The feature is good but the implementation still needs more work. A new PR will be made with a rework of this commit.
* | Add new scaling modes for splash screenSamuel Pedrajas2022-01-181-1/+1
| | | | | | | | | | | | Removes the `fullsize` option which is superseded by `stretch_mode`. Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
* | 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 #55790 from Calinou/renderingserver-add-device-type-getterRémi Verschelde2022-01-041-0/+1
|\ \ | | | | | | Add `RenderingServer.get_video_adapter_type()` method
| * | Add `RenderingServer.get_video_adapter_type()` methodHugo Locurcio2021-12-101-0/+1
| | | | | | | | | | | | | | | | | | | | | This can be used to distinguish between integrated, dedicated, virtual and software-emulated GPUs. This in turn can be used to automatically adjust graphics settings, or warn users about features that may run slowly on their hardware.
* | | Merge pull request #56305 from Calinou/rename-lod-thresholdRémi Verschelde2022-01-041-2/+2
|\ \ \
| * | | Rename Lod Threshold to Mesh Lod ThresholdHugo Locurcio2021-12-291-2/+2
| |/ / | | | | | | | | | | | | 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/+5
| | |
* | | Fix default_texture_param in shader pipeline to support uniform arraysYuri Roubinsky2021-11-121-2/+2
| |/ |/|
* | Use Callable in RS::request_frame_drawn_callbackBrian Semrau2021-11-051-8/+2
|/
* Addition of FogVolumes, FogShaders, FogMaterial, and overhaul of VolumetricFogclayjohn2021-10-281-1/+11
| | | | Co-authored-by: Brian Semrau <brian.semrau@gmail.com>
* Implement distance fade and transparencyJFonS2021-10-251-2/+2
| | | | | | | | | | | | | | | | | | | | | 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>
* Allow any floating-point value as a 3D rendering scale optionHugo Locurcio2021-10-081-1/+1
| | | | | | | This allows for finer control over 3D rendering resolution. Supersampling can also be performed by setting a 3D rendering resolution above 1.0, which is useful for offline rendering or for very high-end GPUs.
* 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.
* Makes FontData importable resource.bruvzg2021-08-271-0/+1
| | | | | | | Adds multi-channel SDF font texture generation and rendering support. Adds per-font oversampling support. Adds FontData import plugins (for dynamic fonts, BMFonts and monospaced image fonts), font texture cache pre-generation and loading. Adds BMFont binary format and outline support.
* Optionally scale 3D render contentBastiaan Olij2021-08-261-0/+1
|
* Use real_t and double where appropriate in ParticlesAaron Franke2021-08-121-4/+4
|
* Use doubles for time in many other placesAaron Franke2021-08-091-7/+7
|
* Implement more rendering options as specialization constantsreduz2021-07-191-0/+2
| | | | | | | | * 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.
* Restructure and reimplement vsync optionsHendrik Brucker2021-07-061-1/+1
| | | | | -Add a v-sync mode setting which allows to choose between DISABLED, ON, ADAPTIVE and MAILBOX -Removed the V-Sync via Compositor option
* 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.
* Remove leftovers from the DirectionalLight3D Optimized shadow depth rangeHugo Locurcio2021-07-021-1/+0
| | | | | | The Optimized shadow depth range was removed in late 2020 in favor of the Stable shadow depth range, but it still had a (broken) property that allowed to enable it.
* Clean up RenderingServer and its bindingsreduz2021-07-011-37/+1
| | | | | | * Rewrote bindings for RenderingServer. * They are now all up to date. * Several unused methods and deprecated features were cleaned up.
* Deprecate ImmediateGeometryreduz2021-06-301-16/+3
| | | | | | | | | * Removed entirely from RenderingServer. * Replaced by ImmediateMesh resource. * ImmediateMesh replaces ImmediateGeometry, but could use more optimization in the future. * Sprite3D and AnimatedSprite3D work again, ported from Godot 3.x (though a lot of work was needed to adapt them to Godot 4). * RootMotionView works again. * Polygon3D editor works again.
* Fixes to 2D viewportreduz2021-06-291-0/+1
| | | | | * Editor 2D viewport now uses embedded subwindows (windows no longer pop up) * Restored the ability to disable 3D on the 2D viewport (makes 3D not display on 2D when there is a camera on the scene)
* Implement animation slice drawing in CanvasItemreduz2021-06-171-0/+2
| | | | | * Added a function to ignore subsequent commands if they don't fall within the slice. * This will be used by the new TileMap to properly provide animated tiles.
* Refactor VisibilityNotifier3Dreduz2021-06-161-1/+7
| | | | | | | * 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.
* Refactor VisibilityNotifierreduz2021-06-161-0/+2
| | | | | | * Works from RenderinServer * Accurately tells when on or off-scren, its no longer approximate. * VisibilityEnabler also simplified to use the process mode instead.
* Implement visibility range and dependencies.jfons2021-06-141-2/+2
| | | | | | | | | | | | | | | | | | | | | 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).
* Rename GI Classesreduz2021-06-051-30/+30
| | | | | | | * 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-11/+11
|
* Fixes missng 2D engine bitsreduz2021-05-111-0/+1
| | | | | | | | | | -Mesh2D now works -MultiMesh2D now works -Polygon2D now works -Added hooks for processing 2D particles -Skeleton2D now works 2D particles still not working, but stuff needed for it is now implemented.
* Implement Particle Trailsreduz2021-04-301-0/+6
| | | | | | | | | -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-0/+7
| | | | | | | | | 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
|
* fix issue vulkan crash on open shader materialssboronczyk2021-03-131-1/+1
|
* Fix negative VRAM valuesEv1lbl0w2021-03-051-1/+1
|
* Modernize atomicsPedro J. Estébanez2021-02-181-3/+3
| | | | | | | | | | - Based on C++11's `atomic` - Reworked `SafeRefCount` (based on the rewrite by @hpvb) - Replaced free atomic functions by the new `SafeNumeric<T>` - Replaced wrong cases of `volatile bool` by the new `SafeFlag` - Platform-specific implementations no longer needed Co-authored-by: Hein-Pieter van Braam-Stewart <hp@tmm.cx>
* Make Servers truly Thread Safereduz2021-02-101-589/+622
| | | | | | | | | -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.