godot/servers/rendering/renderer_rd/shaders/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
..
fsr2 SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
blur_raster.glsl Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
blur_raster_inc.glsl Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
bokeh_dof.glsl Use Reverse Z for the depth buffer 2024-04-04 13:54:15 +02:00
bokeh_dof_inc.glsl Implement Physical Light Units as an optional setting. 2022-08-31 12:14:46 -07:00
bokeh_dof_raster.glsl Fix various typos 2025-01-08 14:47:42 +02:00
copy.glsl Apply luminance multiplier in copy_cubemap_to_panorama 2025-10-13 21:41:03 -07:00
copy_to_fb.glsl Add shader baker to project exporter. 2025-05-27 12:45:27 -03:00
cube_to_dp.glsl Add dependency detection improvements to the render graph. 2024-11-01 09:46:52 -03:00
cubemap_downsampler.glsl Moved cube_to_dp and cubemap logic into CopyEffects 2022-06-24 18:04:28 +10:00
cubemap_downsampler_inc.glsl Moved cube_to_dp and cubemap logic into CopyEffects 2022-06-24 18:04:28 +10:00
cubemap_downsampler_raster.glsl Fix cubemap downsampler logic 2023-10-31 10:36:42 +11:00
cubemap_filter.glsl Style: Enable clang-format's InsertBraces config 2025-01-09 16:46:51 +01:00
cubemap_filter_raster.glsl Style: Enable clang-format's InsertBraces config 2025-01-09 16:46:51 +01:00
cubemap_roughness.glsl Moved cube_to_dp and cubemap logic into CopyEffects 2022-06-24 18:04:28 +10:00
cubemap_roughness_inc.glsl Properly remap roughness when reading from radiance map 2022-12-02 15:39:20 -08:00
cubemap_roughness_raster.glsl Use fullscreen tri instead of quad 2023-08-05 17:09:06 -03:00
fsr_upscale.glsl One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
luminance_reduce.glsl Move luminance effect into its own class and use new buffers system 2023-01-07 14:40:42 +11:00
luminance_reduce_raster.glsl Use fullscreen tri instead of quad 2023-08-05 17:09:06 -03:00
luminance_reduce_raster_inc.glsl Style: Add 19.1.0 LLVM options to .clang-format 2024-11-22 09:24:32 -06:00
motion_vector_inc.glsl Add FidelityFX Super Resolution 2.2 (FSR 2.2.1) support. 2023-09-25 10:37:47 -03:00
motion_vectors.glsl Add FidelityFX Super Resolution 2.2 (FSR 2.2.1) support. 2023-09-25 10:37:47 -03:00
motion_vectors_store.glsl Metal: Add MetalFX upscaling support 2025-01-06 06:03:18 -07:00
resolve.glsl Split GI effects and fix stereoscopic rendering of GI effects 2022-06-22 12:50:17 +10:00
resolve_raster.glsl Add depth resolve to the mobile renderer 2025-07-16 20:37:39 -07:00
roughness_limiter.glsl Move roughness limiter and sort into their own classes 2023-03-09 21:58:55 +11:00
screen_space_reflection.glsl Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
screen_space_reflection_downsample.glsl Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
screen_space_reflection_filter.glsl Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
screen_space_reflection_hiz.glsl Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
screen_space_reflection_resolve.glsl Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
SCsub SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
shadow_frustum.glsl Draw frustum splices ontop of direction shadow atlas for debug purposes 2023-06-11 11:48:11 +10:00
smaa_blending.glsl Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
smaa_edge_detection.glsl Add SMAA 1x 2025-05-21 15:02:09 -04:00
smaa_weight_calculation.glsl Add SMAA 1x 2025-05-21 15:02:09 -04:00
sort.glsl Style: Enable clang-format's InsertBraces config 2025-01-09 16:46:51 +01:00
specular_merge.glsl Add shader baker to project exporter. 2025-05-27 12:45:27 -03:00
ss_effects_downsample.glsl Properly linearize depth buffer for SSAO when using orthogonal camera 2024-07-09 15:29:45 -07:00
ssao.glsl CI: Bump various pre-commit hooks 2025-04-07 08:23:35 -05:00
ssao_blur.glsl Move screen space effects into a separate class 2022-07-19 13:27:39 +10:00
ssao_importance_map.glsl Convert en_GB spelling to en_US with codespell 2023-01-23 11:02:20 +01:00
ssao_interleave.glsl Convert en_GB spelling to en_US with codespell 2023-01-23 11:02:20 +01:00
ssil.glsl CI: Bump various pre-commit hooks 2025-04-07 08:23:35 -05:00
ssil_blur.glsl Convert en_GB spelling to en_US with codespell 2023-01-23 11:02:20 +01:00
ssil_importance_map.glsl Convert en_GB spelling to en_US with codespell 2023-01-23 11:02:20 +01:00
ssil_interleave.glsl Convert en_GB spelling to en_US with codespell 2023-01-23 11:02:20 +01:00
subsurface_scattering.glsl Fix SSS with reverse-z 2024-11-26 10:51:22 +01:00
taa_resolve.glsl Add shader baker to project exporter. 2025-05-27 12:45:27 -03:00
tonemap.glsl Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
tonemap_mobile.glsl Optimize glow and tonemap gather step in the mobile renderer 2025-10-30 21:56:26 -07:00
vrs.glsl Add shader baker to project exporter. 2025-05-27 12:45:27 -03:00