1
0
Fork 0
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
SCsub
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
bokeh_dof_inc.glsl
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
cubemap_downsampler.glsl
cubemap_downsampler_inc.glsl
cubemap_downsampler_raster.glsl
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
cubemap_roughness_inc.glsl
cubemap_roughness_raster.glsl
fsr_upscale.glsl
luminance_reduce.glsl
luminance_reduce_raster.glsl
luminance_reduce_raster_inc.glsl
motion_vector_inc.glsl
motion_vectors.glsl
motion_vectors_store.glsl Metal: Add MetalFX upscaling support 2025-01-06 06:03:18 -07:00
resolve.glsl
resolve_raster.glsl Add depth resolve to the mobile renderer 2025-07-16 20:37:39 -07:00
roughness_limiter.glsl
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
shadow_frustum.glsl
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
ssao.glsl CI: Bump various pre-commit hooks 2025-04-07 08:23:35 -05:00
ssao_blur.glsl
ssao_importance_map.glsl
ssao_interleave.glsl
ssil.glsl CI: Bump various pre-commit hooks 2025-04-07 08:23:35 -05:00
ssil_blur.glsl
ssil_importance_map.glsl
ssil_interleave.glsl
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