godot/servers/rendering/renderer_rd/effects
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
..
bokeh_dof.cpp Push pipeline compilation of various effects to the worker thread pool. 2025-10-13 12:00:23 -03:00
bokeh_dof.h Push pipeline compilation of various effects to the worker thread pool. 2025-10-13 12:00:23 -03:00
copy_effects.cpp Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
copy_effects.h Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
debug_effects.cpp Rename server "free" functions to "free_rid" to match exposed API 2025-09-30 16:52:25 -07:00
debug_effects.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
fsr.cpp Push pipeline compilation of various effects to the worker thread pool. 2025-10-13 12:00:23 -03:00
fsr.h Push pipeline compilation of various effects to the worker thread pool. 2025-10-13 12:00:23 -03:00
fsr2.cpp Rename server "free" functions to "free_rid" to match exposed API 2025-09-30 16:52:25 -07:00
fsr2.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
luminance.cpp Rename server "free" functions to "free_rid" to match exposed API 2025-09-30 16:52:25 -07:00
luminance.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
metal_fx.h Renderer: Eliminates String allocations for all labels in the renderer 2025-05-28 06:01:35 +10:00
metal_fx.mm Introduce 'visionos' platform derived from 'apple_embedded' 2025-05-19 15:47:01 -07:00
motion_vectors_store.cpp Metal: Add MetalFX upscaling support 2025-01-06 06:03:18 -07:00
motion_vectors_store.h Move server files into their subfolders 2025-09-30 19:39:39 -07:00
resolve.cpp Add depth resolve to the mobile renderer 2025-07-16 20:37:39 -07:00
resolve.h Add depth resolve to the mobile renderer 2025-07-16 20:37:39 -07:00
roughness_limiter.cpp Move roughness limiter and sort into their own classes 2023-03-09 21:58:55 +11:00
roughness_limiter.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
SCsub Revert "SCons: Add CPPEXTPATH for external includes" 2025-10-06 13:09:22 -05:00
smaa.cpp Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
smaa.h Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
sort_effects.cpp Remove unused headers in servers. 2024-12-20 18:51:01 +08:00
sort_effects.h Add Span struct (replacing StrRange). Spans represent read-only access to a contiguous array, resembling std::span. 2025-03-09 18:19:51 +01:00
spatial_upscaler.h Renderer: Eliminates String allocations for all labels in the renderer 2025-05-28 06:01:35 +10:00
ss_effects.cpp Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
ss_effects.h Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
taa.cpp Tune TAA disocclusion scale to avoid rejecting all samples during motion. 2024-01-04 17:06:57 -08:00
taa.h Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
tone_mapper.cpp Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
tone_mapper.h Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
vrs.cpp Move server files into their subfolders 2025-09-30 19:39:39 -07:00
vrs.h Merge pull request #99551 from DarioSamo/fragment-density-map 2025-03-28 14:31:19 +01:00