Commit Graph

171 Commits

Author SHA1 Message Date
Stuart Carnie 0b561521fe Rendering: Remove compute_list_add_barrier before compute_list_end
`compute_list_add_barrier` ends and begins a new compute list with the
same state, so calling this immediately before `compute_list_end` is
redundant, and ends up creating empty compute encoders in Metal.
2026-05-05 06:41:06 +10:00
Thaddeus Crews 0e25644655 Merge pull request #118796 from deralmas/gotta-go-wrap
Buildsystem: Simplify `format_buffer` utility method
2026-04-22 09:58:29 -05:00
Dery Almas e4dcf1d852 Buildsystem: Simplify format_buffer utility method
This method is used to generate headers for embedding files into the binary
(think about the new `#embed` feature in C23 and C++26).

While the stringification step itself was plenty fast, it then proceeded
to wrap everything using the `textwrap` module. `textwrap` is *very*
slow, as it's apparently optimized for human text.

This patch reimplements the wrapping logic using a simple regex,
resulting in a tremendous speed improvement (~6x), and switches to `map`
for the stringification itself (thanks Rémi!)

It also removes a (practically) unused argument, `initial_indent`.

The generated files are pretty much the same, with a tiny difference in
line length (for some reason the old logic overshot the requested line
length)
2026-04-21 23:18:42 +02:00
Kaleb Reid 08cb31b4d1 Fix screen-space AA when upscaling using bilinear filtering 2026-04-15 15:33:26 -07:00
Thaddeus Crews 872cfabf3d Merge pull request #79731 from Calinou/viewport-add-nearest-3d-scaling
Add a nearest-neighbor scaling option to Viewport's Scaling 3D Mode property
2026-04-02 12:33:13 -05:00
Skyth 27305b6de8 Fix color correction not working in the tonemap subpass. 2026-04-01 12:36:39 +03:00
Hugo Locurcio 5df0c8b271 Add a nearest-neighbor scaling option to Viewport's Scaling 3D Mode property
This is useful for 3D games with a pixel art appearance, or when
using a resolution scale of `0.5` to improve performance without
compromising crispness too much when not using FSR 1.0.

The property hints now allow decreasing the scale further to accomodate
for pixel art use cases, as well as increased precision in the value
(useful for a scale of `0.3333`).

Co-authored-by: Daniel Savage <dansvg@gmail.com>
Co-authored-by: Kaleb Reid <78945904+Kaleb-Reid@users.noreply.github.com>
2026-03-25 00:05:54 +01:00
Rémi Verschelde 98868393cc Style: Enforce #include validation hook 2026-03-18 10:41:59 +01:00
Rémi Verschelde e33e98a26f Style: Apply clang-format grouping rules 2026-03-17 20:11:01 +01:00
Rémi Verschelde f1d63278d7 Remove unused includes in servers with clangd-tidy 2026-03-10 21:42:23 +01:00
Rémi Verschelde f0a448540e Misc dependency improvements for files depending on rendering_server.h
On my machine, this reduces incremental compilation time after an edit of
`rendering_server.h` by 3s.
2026-02-25 20:17:27 +01:00
Rémi Verschelde a3cb56dd38 Decouple RenderingServer from XR/OpenXR headers
Move BlitToScreen to RenderingServerTypes.
2026-02-25 20:17:23 +01:00
Rémi Verschelde f5a290ac46 Move RenderingServer enums to a dedicated RenderingServerEnums (RSE) namespace
A number of headers in the codebase included `rendering_server.h` just for
some enum definitions. This means that any change to `rendering_server.h` or
one of its dependencies would trigger a massive incremental rebuild.

With this change, we decouple a number of classes from `rendering_server.h`,
greatly speeding up incremental rebuilds for that area.

On my machine, this reduces incremental compilation time after an edit of
`rendering_server.h` by 60s (from 2m57s).
2026-02-25 19:43:03 +01:00
Allen Pestaluky 662770a33d Fix Reinhard and AgX tonemapper in Mobile renderer when using subpass. 2026-02-24 10:58:08 -05:00
Thaddeus Crews 2d5b30c476 Merge pull request #115963 from blueskythlikesclouds/reduce-includes-to-rd
Reduce includes to rendering device.
2026-02-12 08:19:16 -06:00
Josh Jones b8389cc76b Support output to HDR monitors
Co-authored-by: Alvin Wong <alvinhochun@gmail.com>
Co-authored-by: Allen Pestaluky <allenpestaluky@gmail.com>
2026-02-11 22:13:26 -07:00
Skyth 8fbf2f1e14 Reduce includes to rendering device.
Co-authored-by: Lukas Tenbrink <lukas.tenbrink@gmail.com>
2026-02-10 16:58:50 +03:00
Stuart Carnie b815c88dec Metal: Refactor for future Metal 4, switch to C++; fix dynamic uniforms 2026-02-06 07:07:10 +11:00
Dario 703b3f3dc2 Add structure padding where necessary for push constants.
Co-authored-by: Skyth <19259897+blueskythlikesclouds@users.noreply.github.com>
2026-02-04 12:12:19 +01:00
Thaddeus Crews fbbb8a921b Merge pull request #115309 from Ivorforce/localvector-explicit-copy
Change copy constructor of `LocalVector` from implicit to explicit
2026-01-30 09:32:07 -06:00
Thaddeus Crews 75cd151cb0 Merge pull request #113781 from clayjohn/rd-discardable
Mark more textures as discardable
2026-01-27 15:18:31 -06:00
Lukas Tenbrink 63272b23ef Make LocalVector copy constructor explicit. 2026-01-23 20:52:03 +01: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
clayjohn 8d1277fdb1 Free octmap pipelines before freeing shaders and check pipeline validity before freeing pipelines in PipelineDeferredRD 2025-12-17 11:48:11 -08:00
Thaddeus Crews ef0dd99a37 CI: Bump clang-format and clang-tidy versions
• clang-format: 20.1.0 → 21.1.7
• clang-tidy: 20.1.0 → 21.1.6
• `.clang-format`: 17.0.6 → 18.1.8 (keep 3 versions behind latest for compatibility)
2025-12-13 09:55:14 -06:00
clayjohn c1253d3aad Mark more textures as discardable
This allows the ARG to better optimize their usage for mobile devices.

In particular, this allows the ARG to avoid loading the contents of the texture into tile memory when rendering into the texture if the contents won't be used anyway.
2025-12-08 15:47:42 -08: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
Thaddeus Crews 62affe05b8 Merge pull request #107902 from DarioSamo/sky-octahedral
Rewrite Radiance and Reflection probes to use Octahedral maps.
2025-12-02 20:43:05 -06: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
clayjohn 4cd65e081d Ensure that all spec constants are given a value in the mobile post process shader so that re-spirv can pick up on them and optimize them out of the final shader
This is needed to workaround a bug on Adreno devices when using input attachments and spec constants in the same shader
2025-12-02 11:18:00 -08: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 986786dc8c Use proper bitshift for tonemap srgb flag in Forward+ renderer 2025-10-31 18:35:39 -07: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
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
Thaddeus Crews 0400b703e4 Merge pull request #111577 from Kaleb-Reid/fix-lightmap-luminance
Apply luminance multiplier in copy_cubemap_to_panorama
2025-10-14 10:31:34 -05:00
Kaleb Reid 8173f43770 Apply luminance multiplier in copy_cubemap_to_panorama 2025-10-13 21:41:03 -07:00
Dario ba268416d5 Push pipeline compilation of various effects to the worker thread pool. 2025-10-13 12:00:23 -03: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 b17aa3343a Revert "SCons: Add CPPEXTPATH for external includes" 2025-10-06 13:09:22 -05:00
Aaron Franke 3d1c9fd5de Move server files into their subfolders 2025-09-30 19:39:39 -07:00
Thaddeus Crews 2b7f39ea28 Merge pull request #110505 from Calinou/tweak-draw-command-labels
Tweak draw command label names for consistency
2025-09-30 20:10:37 -05:00
Aaron Franke 9fbf5808a0 Rename server "free" functions to "free_rid" to match exposed API 2025-09-30 16:52:25 -07: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