summaryrefslogtreecommitdiffstats
path: root/servers/rendering/rendering_server_default.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Implement thread ownership change for RenderingDevicePedro J. Estébanez2024-10-211-0/+2
|
* Implement asynchronous transfer queues, thread guards on RenderingDevice. ↵Dario2024-10-021-0/+10
| | | | | | | | | | | 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.
* [Editor,Servers]: Minor optimizationsStuart Carnie2024-09-121-6/+4
|
* Fixed Timestep Interpolation (3D)Ricardo Buring2024-07-071-4/+10
| | | | | | | 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>
* Apply additional fixes to servers' threadingPedro J. Estébanez2024-05-081-63/+63
|
* Use WorkerThreadPool for Server threadsJuan Linietsky2024-04-101-43/+19
| | | | | | | | | | | | | | | | | * Servers now use WorkerThreadPool for background computation. * This helps keep the number of threads used fixed at all times. * It also ensures everything works on HTML5 with threads. * And makes it easier to support disabling threads for also HTML5. CommandQueueMT now syncs with the servers via the WorkerThreadPool yielding mechanism, which makes its classic main sync semaphore superfluous. Also, some warnings about calls that kill performance when using threaded rendering are removed because there's a mechanism that warns about that in a more general fashion. Co-authored-by: Pedro J. Estébanez <pedrojrulez@gmail.com>
* Polish interaction between windowing, input and renderingPedro J. Estébanez2024-04-101-2/+1
| | | | | - Adapt GL make/release API to the current architecture. - Fix DisplayServer being locked while dispatching input (prevent deadlocks).
* Increase coverage of timestamps for visual profilerclayjohn2024-04-031-0/+1
|
* Fixed Timestep Interpolation (2D)Ricardo Buring2024-03-231-0/+10
| | | | | | | Adds fixed timestep interpolation to the rendering server (2D only). Switchable on and off with a project setting (default is off). Co-authored-by: lawnjelly <lawnjelly@gmail.com>
* Disable XR server when compiling without 3DAaron Franke2024-03-131-0/+2
|
* Add THREADS_ENABLED macro in order to compile Godot to run on the main threadAdam Scott2024-01-171-3/+7
|
* Deprecate RenderingServer's `has_feature` and Features enumMicky2024-01-101-0/+2
|
* Merge pull request #85520 from YuriSizov/rendering-gracefully-leak-canvas-itemsRémi Verschelde2024-01-091-0/+1
|\ | | | | | | Avoid crashes when engine leaks canvas items and friends
| * Avoid crashes when engine leaks canvas items and friendsYuri Sizov2023-12-201-0/+1
| |
* | Skip swapchain logic if there is nothing to present (Android OpenXR)Bastiaan Olij2024-01-081-4/+1
|/
* Add thread guard for force_draw and update relared docjsjtxietian2023-11-101-0/+1
| | | | force_draw must be called from main thread
* Add vararg call() method to C++ Callablekobewi2023-10-051-3/+1
|
* Merge pull request #82101 from bruvzg/x11_glesRémi Verschelde2023-10-041-1/+1
|\ | | | | | | [X11] Add support for using EGL/GLES instead of GLX.
| * [X11] Add support for using EGL/GLES instead of GLX.bruvzg2023-10-041-1/+1
| |
* | Fix drawing of viewports without swapping buffersPedro J. Estébanez2023-10-031-1/+1
|/
* [macOS/Windows] Add optional ANGLE backed OpenGL renderer support. Add ↵bruvzg2023-09-211-1/+1
| | | | | | EGL_ANDROID_blob_cache caching. Co-authored-by: Riteo <riteo@posteo.net>
* Add ability to call code on rendering threadJuan Linietsky2023-07-261-0/+6
| | | | | | | | | | | | | | | | | | | | | | | As more users use compute in Godot 4, the way they do is most likely incompatible when running on separate threads and will start erroring soon as we improve the thread safety of the render thread. To properly run code on the render thread, this function was added. Use like this: ```GDScript func initialize_compute_code(): .... func update_compute_code(custom_data): ... func _ready(): RenderingServer.call_on_render_thread( initialize_compute_code ) func _process(): RenderingServer.call_on_render_thread( update_compute_code.bind(with_data) ) ```
* Fix crash when calling get_video_adapter_* in a threaduniveous2023-07-191-12/+0
| | | | co-authored-by: Clay John <claynjohn@gmail.com>
* Add RENDERING_INFO parameters to GL Compatibility rendererclayjohn2023-06-161-1/+1
| | | | | | | | This also fixes RENDERING_INFO_TOTAL_PRIMITIVES_IN_FRAME for the RD renderers as it was incorrectly reporting vertex/index count at times This also adds memory tracking to textures and buffers to catch memory leaks. This also cleans up some memory leaks that the new system caught.
* Fix wait for thread not startedSamuele Panzeri2023-04-271-1/+3
|
* Add framework for avoidance of color flash in new windowsPedro J. Estébanez2023-01-121-0/+4
|
* 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".
* Merge pull request #64710 from MinusKube/window-size-crashClay John2022-10-271-0/+8
|\ | | | | Prevent windows from having a size greater than device limit
| * Prevent windows from having a size greater than device limitMinusKube2022-09-041-0/+8
| |
* | Fix multiwindow support in GLES3 for X11, Windows, and MacOS.clayjohn2022-09-121-1/+4
|/ | | | | | | Instead of updating all viewports, then blitting all viewports to the backbuffer, then swapping all buffers, we run through all viewports and render, blit, and swap backbuffer before going to the next viewport.
* Implement Physical Light Units as an optional setting.clayjohn2022-08-311-0/+2
| | | | | | 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.
* Remove Signal connect bindsJuan Linietsky2022-07-291-1/+1
| | | | | Remove the optional argument p_binds from `Object::connect` since it was deprecated by Callable.bind(). Changed all uses of it to Callable.bind()
* Split dependency logicBastiaan Olij2022-06-281-25/+26
| | | | | | Split FOG Split visibility notifier Final cleanup of storage classes
* Merge pull request #61221 from BastiaanOlij/split_gi_effectsRémi Verschelde2022-06-231-0/+1
|\
| * Split GI effects and fix stereoscopic rendering of GI effectsBastiaan Olij2022-06-221-0/+1
| |
* | Merge pull request #35758 from zmanuel/eliminate-draw-pendingRémi Verschelde2022-06-221-6/+1
|\ \ | |/ |/| Remove redundant thread sync counter draw_pending
| * Remove redundant thread sync counter draw_pendingManuel Moos2021-03-211-6/+1
| | | | | | | | | | | | | | | | The functions that used it already use a threadsafe FIFO queue to communicate between threads and a sync to have the main thread wait for the render thread. Fixes #35718
* | Ensure has_os_features is safely called as it can't be called from within ↵Bastiaan Olij2022-06-011-1/+7
| | | | | | | | the construct of RenderingServerDefault on which it relies
* | Merge pull request #60643 from clayjohn/GLES3-3DRémi Verschelde2022-05-121-5/+1
|\ \
| * | SkyShaders workingclayjohn2022-05-111-5/+1
| | |
* | | Add a new HashMap implementationreduz2022-05-121-3/+3
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a new, cleaned up, HashMap implementation. * Uses Robin Hood Hashing (https://en.wikipedia.org/wiki/Hash_table#Robin_Hood_hashing). * Keeps elements in a double linked list for simpler, ordered, iteration. * Allows keeping iterators for later use in removal (Unlike Map<>, it does not do much for performance vs keeping the key, but helps replace old code). * Uses a more modern C++ iterator API, deprecates the old one. * Supports custom allocator (in case there is a wish to use a paged one). This class aims to unify all the associative template usage and replace it by this one: * Map<> (whereas key order does not matter, which is 99% of cases) * HashMap<> * OrderedHashMap<> * OAHashMap<>
* | Add `get_video_adapter_api_version()` to RenderingServerHugo Locurcio2022-05-031-0/+4
| | | | | | | | | | | | This method can be used to get the graphics API version currently in use (such as Vulkan). It can be used by projects for troubleshooting or statistical purposes.
* | Moved particles into ParticlesStorageBastiaan Olij2022-04-171-1/+2
| |
* | Move light, reflection probe and lightmap into LightStorageBastiaan Olij2022-04-171-0/+1
| |
* | Merge canvas and decal into TextureStorage and add render targetBastiaan Olij2022-04-171-2/+0
| |
* | Move storage for Mesh, MeshInstance, MultiMesh and Skeleton into MeshStorageBastiaan Olij2022-04-021-0/+1
| |
* | Extract global variable, shader and material storageBastiaan Olij2022-03-311-0/+1
| |
* | Extract Decal and Decal atlas from Storage classBastiaan Olij2022-03-211-0/+1
| |
* | Split dummy renderer classes into separate filesBastiaan Olij2022-03-161-0/+2
| | | | | | | | Split canvas_texture_storage and texture_storage from render_storage class
* | Improve XRInterface hooks into renderingBastiaan Olij2022-01-261-0/+6
| |