Commit Graph

126 Commits

Author SHA1 Message Date
Skyth 19df5470c8 Pick the sample closer to the camera when resolving 2x MSAA.
(cherry picked from commit f975cfe037971bc1684d64d31be7be09b31aa093)
2026-02-05 10:05:01 -06:00
Rémi Verschelde 4db916dac6 Merge pull request #114908 from clayjohn/RD-env-roughness
Overhaul compute shader based environment roughness calculation to improve performance and quality
2026-01-13 22:20:59 +01:00
Rémi Verschelde 427eab91a2 Merge pull request #114907 from clayjohn/RD-env-filter
Fix downsampled radiance map generation
2026-01-13 22:20:55 +01:00
clayjohn e33515c2e6 Overhaul compute shader based environment roughness calculation to improve performance and quality 2026-01-12 22:07:56 -08:00
clayjohn 24c2c452de Fix downsampled radiance map generation.
Reduce the mipmap levels so that the border is pixel perfect

Always use the high quality downsample to reduce jaggies

Fix the jacobian approximation so that it actually helps account for the octahedral distortion
2026-01-12 18:56:10 -08:00
Skyth 71582241a3 Fix MSAA crashing Mali GPUs when using subpasses. 2026-01-09 15:04:36 +03:00
Skyth 25824f18f5 Handle RGB10_A2 storage format in octmap shaders. 2026-01-08 11:16:40 +03:00
Thaddeus Crews f5c66ba68b Merge pull request #114279 from clayjohn/sky-singularity
Avoid singularity during sky filtering
2026-01-06 09:56:53 -06:00
clayjohn 6e6d59b2e7 Avoid singularity during sky filtering by using a different method of calculating the orthonormal basis 2026-01-05 14:11:58 -08:00
Skyth 205d9814f1 Fall back to octmap raster path on certain devices & fix issues with the shaders. 2025-12-25 16:53:11 +03:00
Allen Pestaluky 628df323e2 Add agx_white, agx_contrast and HDR support to the AgX tonemapper.
Also optimize all tonemappers to perform less calculations per-pixel.

Note: unlike `white`, `agx_white` is limited to a minimum of `2.0` and defaults to `16.29`. When using a RGB10A2 render buffer, `agx_white` will be ignored and a value of `2.0` will be used instead to ensure good behavior on the Mobile renderer.
2025-12-03 09:01:39 -05:00
Dario c78c3ba894 Rewrite Radiance and Reflection probes to use Octahedral maps.
Co-authored-by: clayjohn <claynjohn@gmail.com>
2025-12-02 17:48:12 -08:00
Thaddeus Crews 9dd6c4dbac Merge pull request #112927 from allenwp/fix_clamping_in_tonemap_mobile
Fix inconsistent color clamping between Mobile and Forward+.
2025-11-25 12:55:13 -06:00
Allen Pestaluky 2c6749ab9a Fix inconsistent color clamping between Mobile and Forward+.
Also remove inconsistencies with glow blending code and comments between the two shader files to allow for easier comparison of the two tonemap files.
2025-11-18 12:33:42 -05:00
blaqjack d650ac8a96 TAA adjustment to reduce ghosting 2025-11-18 12:24:09 +01:00
Skyth d27e4dab16 Sanitize INF/NaN when copying last frame texture for SSIL/SSR. 2025-11-13 16:38:54 +03:00
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
Thaddeus Crews da593d0c16 Merge pull request #111897 from allenwp/environment-adj-prioritize-old-behaviour
Improve `Environment` adjustments (favor old behavior and quality).
2025-10-23 11:03:56 -05:00
Allen Pestaluky 0c7f013c55 Improve Environment color adjustments; specifically brightness and HDR 2D contrast.
This commit changes adjustments to behave as follows for all rendering configurations:

- Apply brightness to linear-encoded values, preventing contrast, saturation, and hue from being affected.
- Apply contrast to perceptually uniform (nonlinear sRGB-encoded) values, matching existing behavior when HDR 2D is disabled and producing optimal visual quality.
- Apply saturation with even color channel weights. This causes brightness of certain colors to change, but matches existing behavior when HDR 2D is disabled.

Adjustments are applied after glow and tonemapping to match existing behavior.
2025-10-23 11:08:49 -04:00
Skyth c128886c63 Overhaul screen space reflections. 2025-10-21 19:23:38 +03:00
Clay John 36b92128b1 Merge pull request #110671 from allenwp/environment-glow-consistent
Blend glow before tonemapping and change default to screen.
2025-10-14 21:29:43 -07:00
Kaleb Reid 8173f43770 Apply luminance multiplier in copy_cubemap_to_panorama 2025-10-13 21:41:03 -07:00
Allen Pestaluky cafc012b05 Blend Environment glow before tonemapping and change default blend mode to screen.
Additionally, change the minimum `tonemap_white` parameter to `1.0`; users can increase `tonemap_exposure` for a similar effect to decreasing `tonemap_white` below `1.0`.

Co-authored-by: Hei <40064911+Lielay9@users.noreply.github.com>
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2025-10-10 12:08:08 -04:00
Thaddeus Crews 8c7c96e2c4 Merge pull request #108636 from clayjohn/MSAA-depth-mobile
Add depth resolve to the mobile renderer
2025-09-17 11:34:13 -05:00
Thaddeus Crews aa0c7bb840 Merge pull request #109970 from allenwp/add-debanding-smaa-before-spatial-upscaler
Add debanding to SMAA and apply debanding before spatial upscalers.
2025-08-26 19:01:11 -05:00
clayjohn 4b84207d2f Use vertex shader workaround for Mali GXX GPUs for glow shader
We applied this same workaround to the tonemap shader and DoF, but didn't apply it to glow since the bug didn't manifest on our test devices.
2025-08-26 11:31:22 -07:00
Allen Pestaluky 5a3e69d16e Add debanding to SMAA and apply debanding before spatial upscalers. 2025-08-25 16:55:36 -04:00
Stuart Carnie 90c9134875 Metal: Read gl_ViewIndex for multi-view subpasses
This is necessary to ensure the SpvCapabilityMultiView is included in
the SPIR-V, informing downstream transpilers, like Metal, that it should
enable multi-view capabilities in the generated Metal shader source.
2025-08-23 09:12:17 +10:00
Allen Pestaluky a033656eda Fix debanding for Mobile rendering method with HDR 2D. 2025-07-24 16:11:49 -04:00
clayjohn a8efa55bed Add depth resolve to the mobile renderer 2025-07-16 20:37:39 -07:00
Allen Pestaluky a1591512f8 Always perform color correction and debanding on nonlinear sRGB values.
Fixes #107730

Co-authored-by: LuoZhihao <luo_zhihao@outlook.com>
2025-07-08 13:44:53 -04:00
Dario 5a30a7e7cd Add shader baker to project exporter.
Metal Support contributed by Migeran (https://migeran.com) and Stuart Carnie.

Co-authored-by: Stuart Carnie <stuart.carnie@gmail.com>
Co-authored-by: Gergely Kis <gergely.kis@migeran.com>
2025-05-27 12:45:27 -03:00
Raymond DiDonato 6b99608950 Add SMAA 1x 2025-05-21 15:02:09 -04:00
mrjustaguy bc746f2962 Implement FXAA 3.11 2025-04-22 22:19:06 -07:00
Thaddeus Crews 5edb235018 CI: Bump various pre-commit hooks 2025-04-07 08:23:35 -05:00
Dario 76d709be74 Implement support for fragment density maps.
Co-Authored-By: Bastiaan Olij <mux213@gmail.com>
2025-03-24 11:50:04 -05:00
Allen Pestaluky c5cf73a2e7 Optimize AgX tonemapper's handling of negative values
This change improves performance of the AgX tonemapper by allowing two matrix multiplications to be combined into one. This comes at the cost of loss of color information that could be correctly interpreted as positive RGB values in the Rec. 2020 color space. Additionally, an insignificant amount of error is intentionally introduced to the input color value to prevent the need for a second max function call before log2. The final negative color clipping has been removed to allow the tonemapper to return negative RGB values, similar to other tonemappers in Godot.
2025-01-13 17:35:35 -05:00
Allen Pestaluky 77ddaaaa91 Fix AgX sigmoid contrast curve approximation
This changes the polynomial function so that a lower input always results in a lower output and vice-versa. Additionally, the new function returns a value that is much closer to 1.0 when given an input of 1.0.
2025-01-10 18:17:38 -05:00
Rémi Verschelde 03c83cea1e Style: Enable clang-format's InsertBraces config
This was part of our style guide since we started using clang-format
but the feature was only added in clang-format 15, and we hadn't
noticed it yet.
2025-01-09 16:46:51 +01:00
Rémi Verschelde 21721ae344 Merge pull request #87260 from Calinou/tonemap-add-agx
Add AgX tonemapper option to Environment
2025-01-08 18:20:03 +01:00
Hugo Locurcio 084e84be78 Add AgX tonemapper option to Environment
Technical implementation notes:

- Moved linearization step to before the outset matrix is applied and
  changed polynomial contrast curve approximation.
  - This does *not* implement Blender's chroma rotation to address hue shift.
    This hue rotation was found to have a significant performance impact.
- Improved performance by combining the AgX outset matrix with the Rec 2020 matrix.

Co-authored-by: Allen Pestaluky <allenpestaluky@gmail.com>
Co-authored-by: Clay John <claynjohn@gmail.com>
2025-01-08 17:01:16 +01:00
Aarni Koskela f134769506 Fix various typos
* Add TODO notes for typos that should be fixed for 5.0

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2025-01-08 14:47:42 +02:00
Stuart Carnie 11dc4f2e5e Metal: Add MetalFX upscaling support
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2025-01-06 06:03:18 -07:00
Thaddeus Crews c58ae91efa Merge pull request #99220 from Flarkk/fix_sss_reverse_z
Fix regression in SSS with reverse-z
2024-11-27 10:46:56 -06:00
Florent Guiocheau 3376b9166b Fix SSS with reverse-z 2024-11-26 10:51:22 +01:00
Thaddeus Crews e8a4b45ce4 Style: Add 19.1.0 LLVM options to .clang-format 2024-11-22 09:24:32 -06:00
Dario 5216ef5f9c Add dependency detection improvements to the render graph.
- Buffers changing their usage are no longer treated as write usage unless the API requires it.
- Draw lists are not treated as being dependent on each other if their regions do not intersect despite both being write commands.
- Particles were tweaked to use different unused buffers to reduce dependencies.
2024-11-01 09:46:52 -03:00
Rémi Verschelde 991e6c92ab Merge pull request #96923 from Repiteo/style/warning-admonition
Style: Add `WARNING:` as new comment admonition
2024-09-26 12:45:38 +02:00
Thaddeus Crews 32c83a228d Style: Add WARNING: as new comment admonition 2024-09-25 09:44:42 -05:00
Thaddeus Crews 9f9ee0c813 SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00