godot/servers/rendering
clayjohn 2e59cb41f4 Optimize glow and tonemap gather step in the mobile renderer
Mobile devices are typically bandwidth bound which means we need to do as few texture samples as possible.

They typically use TBDR GPUs which means that all rendering takes place on special optimized tiles. As a side effect, reading back memory from tile to VRAM is really slow, especially on Mali devices.

This commit uses a technique where you do a small blur while downsampling, and then another small blur while upsampling to get really high quality glow. While this doesn't reduce the renderpass count very much, it does reduce the texture read bandwidth by almost 10 times. Overall glow was more texture-read bound than memory write, bound, so this was a huge win.

A side effect of this new technique is that we can gather the glow as we upsample instead of gathering the glow in the final tonemap pass. Doing so allows us to significantly reduce the cost of the tonemap pass as well.
2025-10-30 21:56:26 -07:00
..
dummy Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
environment Move server files into their subfolders 2025-09-30 19:39:39 -07:00
renderer_rd Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
storage Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
instance_uniforms.cpp Implement 2D instance shader parameters 2024-12-17 23:59:16 +01:00
instance_uniforms.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
renderer_canvas_cull.cpp Merge pull request #85080 from Cykyrios/draw-ellipse 2025-09-23 12:08:51 -05:00
renderer_canvas_cull.h Merge pull request #85080 from Cykyrios/draw-ellipse 2025-09-23 12:08:51 -05:00
renderer_canvas_render.cpp Avoid crashes when engine leaks canvas items and friends 2023-12-20 13:19:46 +01:00
renderer_canvas_render.h Move server files into their subfolders 2025-09-30 19:39:39 -07:00
renderer_compositor.cpp Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
renderer_compositor.h Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
renderer_geometry_instance.cpp allow moving meshes without motion vectors 2025-04-25 14:25:06 +02:00
renderer_geometry_instance.h allow moving meshes without motion vectors 2025-04-25 14:25:06 +02:00
renderer_scene_cull.cpp fix: set visible layers in multiview camera 2025-10-13 17:31:01 +02:00
renderer_scene_cull.h Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
renderer_scene_occlusion_cull.cpp Merge pull request #107839 from Rudolph-B/Occlusion-Culling-Optimization 2025-10-03 12:01:13 -05:00
renderer_scene_occlusion_cull.h Merge pull request #107839 from Rudolph-B/Occlusion-Culling-Optimization 2025-10-03 12:01:13 -05:00
renderer_scene_render.cpp fix: set visible layers in multiview camera 2025-10-13 17:31:01 +02:00
renderer_scene_render.h Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
renderer_viewport.cpp More XR disable for Viewport and export. 2025-10-06 20:15:07 +03:00
renderer_viewport.h More XR disable for Viewport and export. 2025-10-06 20:15:07 +03:00
rendering_context_driver.cpp Disable extra memory tracking by default 2024-08-24 20:52:39 -03:00
rendering_context_driver.h Move server files into their subfolders 2025-09-30 19:39:39 -07:00
rendering_device.compat.inc Use Span<uint8_t> in RenderingDevice allocation APIs to avoid intermediary arrays on calls. 2025-06-18 12:31:48 +02:00
rendering_device.cpp Sync final frame after finalizing RD to ensure that nothing is in use on the GPU when we free the RD 2025-10-23 08:20:54 -07:00
rendering_device.h Do not begin a new frame during RenderingDevice's shutdown. 2025-10-16 13:47:18 -03:00
rendering_device_binds.cpp Add shader baker to project exporter. 2025-05-27 12:45:27 -03:00
rendering_device_binds.h Add ConstIterator to Dictionary. 2025-03-13 01:28:46 +08:00
rendering_device_commons.cpp Renderer: Move reflect_spirv to RenderingShaderContainer 2025-09-30 06:40:14 +10:00
rendering_device_commons.h Add max() to Span. 2025-10-07 22:26:32 +02:00
rendering_device_driver.cpp Add shader baker to project exporter. 2025-05-27 12:45:27 -03:00
rendering_device_driver.h Metal: Fix texture_get_data other linear formats 2025-10-16 06:46:51 +11:00
rendering_device_graph.cpp Organize render surface sorting key for optimizing API performance. 2025-10-15 11:35:02 -03:00
rendering_device_graph.h Rename RDD::MemoryBarrier to avoid conflicts with the Windows headers. 2025-09-10 05:19:36 -05:00
rendering_light_culler.cpp Style: Enable clang-format's InsertBraces config 2025-01-09 16:46:51 +01:00
rendering_light_culler.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
rendering_method.cpp One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
rendering_method.h Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
rendering_server.compat.inc Move server files into their subfolders 2025-09-30 19:39:39 -07:00
rendering_server.cpp Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
rendering_server.h Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
rendering_server_constants.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
rendering_server_default.cpp Rename server "free" functions to "free_rid" to match exposed API 2025-09-30 16:52:25 -07:00
rendering_server_default.h Add Stretch Modes for Splash Screen 2025-10-21 18:20:44 -04:00
rendering_server_globals.cpp One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
rendering_server_globals.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
rendering_shader_container.cpp Renderer: Fix missing shader_name; use forward declarations 2025-10-02 10:02:18 +10:00
rendering_shader_container.h Renderer: Move reflect_spirv to RenderingShaderContainer 2025-09-30 06:40:14 +10:00
rendering_shader_library.h Optimize Mobile renderer by using FP16 explicitly. 2025-06-09 14:39:35 -03:00
SCsub SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
shader_compiler.cpp Divide screen texture by luminance multiplier in compatibility 2025-10-04 00:19:42 -07:00
shader_compiler.h Move server files into their subfolders 2025-09-30 19:39:39 -07:00
shader_include_db.cpp Adding ability to include build-in include files (precursor to custom shader templates) 2024-11-24 08:47:45 +11:00
shader_include_db.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
shader_language.cpp Merge pull request #111223 from Ivorforce/remove-iterator-include 2025-10-06 09:06:49 -05:00
shader_language.h Add stencil support for spatial materials 2025-06-11 09:59:10 -05:00
shader_preprocessor.cpp Rename String::resize to resize_uninitialized, to better communicate to callers that new characters must be initialized. 2025-06-11 18:13:02 +02:00
shader_preprocessor.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
shader_types.cpp Fix a few improper memory accesses in the clustered forward vertex shader 2025-06-22 23:41:03 -07:00
shader_types.h Move server files into their subfolders 2025-09-30 19:39:39 -07:00
shader_warnings.cpp Replace std::size usage with std_size to avoid <iterator> include. 2025-10-05 00:26:11 +02:00
shader_warnings.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00