Stuart Carnie
230adb7511
Add Persistent Buffers
...
This work is a heavily refactored and rewritten from TheForge's initial
code.
TheForge's original code had too many race conditions and was
fundamentally flawed as it was too easy to incur into those data races
by accident.
However they identified the proper places that needed changes, and the
idea was sound. I used their work as a blueprint to design this work.
This PR implements:
- Introduction of UMA buffers used by a few buffers
(most notably the ones filled by _fill_instance_data).
Ironically this change seems to positively affect PC more than it does
on Mobile.
Updates D3D12 Memory Allocator to get GPU_UPLOAD heap support.
Metal implementation by Stuart Carnie.
Co-authored-by: Stuart Carnie <stuart.carnie@gmail.com >
Co-authored-by: TheForge team
2025-10-24 08:16:19 +11:00
clayjohn
f61ee7bdf6
Use half float precision buffer for 3D when HDR2D is enabled
...
This is necessary for Environment effects like Glow to work correctly.
2025-10-21 13:44:46 -07:00
Skyth
c128886c63
Overhaul screen space reflections.
2025-10-21 19:23:38 +03:00
Dario
b49aea89d0
Organize render surface sorting key for optimizing API performance.
2025-10-15 11:35:02 -03:00
AeioMuch
dae2122388
Fix wrong indexes for double precision
2025-10-09 22:01:41 +02:00
clayjohn
c7276273d8
Fix scene shader crash due to rename of view matrix and inverse view matrix
2025-10-07 13:36:23 -07:00
BlueCube3310
24ed12d4a3
Fix LightmapGI not being correctly applied to objects
2025-10-01 19:18:09 +02: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
f9694033a5
Merge pull request #107923 from clayjohn/RD-mat3x4
...
Use Mat3x4 for model and view transforms to save bandwidth and ALUs
2025-09-30 18:34:59 -05:00
Thaddeus Crews
3997e77393
Merge pull request #111054 from Kaleb-Reid/fix-render-list
...
Sort render list correctly in RD renderers
2025-09-30 11:19:18 -05:00
Thaddeus Crews
21fd4faf1b
Merge pull request #107469 from Ivorforce/vector-localvector-explicit-span-conversions
...
Remove implicit conversions between `LocalVector` and `Vector`
2025-09-30 11:19:17 -05:00
Kaleb Reid
5021b3e6e5
Sort render list correctly in RD renderers
2025-09-29 17:22:26 -07:00
clayjohn
14b60f2264
Optimize vertex shader using mat3x4 to reduce bandwidth, load/store operations and ALUs
2025-09-26 23:20:08 -07:00
Thaddeus Crews
cede7c8aa7
Merge pull request #109401 from DarioSamo/ubershader-for-sdf-and-material
...
Add ubershader support to material and SDF variants in Forward+.
2025-09-22 21:01:00 -05: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
Lukas Tenbrink
abe3b481ae
Make conversions from LocalVector to Vector explicit.
2025-09-16 21:41:28 +02:00
Thaddeus Crews
27a3f0eb8d
Merge pull request #108206 from Calinou/transparent-viewport-no-ssr-sss-dof
...
Disable unsupported SSR, SSS, DoF on transparent viewports
2025-09-16 11:44:48 -05:00
Hugo Locurcio
204e310914
Tweak draw command label names for consistency
...
- Use Title Case for all labels, and add hyphens where relevant.
- Mention Roughness in SSR Filter's label name, as it's only enabled
when the SSR roughness quality is not set to Disabled.
2025-09-14 01:23:47 +02:00
Hugo Locurcio
1c62ba40b7
Disable unsupported SSR, SSS, DoF on transparent viewports
...
For technical reasons, transparent viewports cannot support
screen-space reflections, subsurface scattering and depth of field.
Previously, enabling any of these would turn transparent viewports
invisible.
2025-09-11 14:59:07 +02:00
Dario
517b42e7dd
Add ubershader support to material and SDF variants in Forward+.
2025-08-07 14:40:14 -03:00
Thaddeus Crews
5787f6fb6a
Merge pull request #108044 from apples/107935-stencil-fixes
...
Fix opaque stencil rendering
2025-07-31 10:39:08 -05:00
clayjohn
a8efa55bed
Add depth resolve to the mobile renderer
2025-07-16 20:37:39 -07:00
clayjohn
17b9469bac
Never overwrite motion vectors in the transparent pass
2025-07-16 04:58:39 -07:00
Apples
62a5cd90a7
Fix opaque stencil rendering
2025-07-02 21:49:19 -05:00
LuoZhihao
8a2fd98004
Forward+: Fix builtins in light shader
2025-06-17 20:14:53 +08:00
Rémi Verschelde
0497ae9947
Merge pull request #80710 from apples/7174-apples-stencil
...
Add stencil support to spatial materials
2025-06-12 01:15:35 +02:00
Apples
d674c9e289
Add stencil support for spatial materials
2025-06-11 09:59:10 -05:00
Dario
46277836a6
Optimize Mobile renderer by using FP16 explicitly.
2025-06-09 14:39:35 -03:00
Apples
7574a5dbb3
Add depth function for spatial materials
2025-06-06 09:21:19 -05: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
clayjohn
9a1def8da1
Add new StandardMaterial properties to allow users to control FPS-style objects (hands, weapons, tools close to the camera)
...
Add new shader built in Z_CLIP_SCALE to easily adjust clipping distance to avoid clipping walls etc.
Add fov_override to StandardMaterial3D to easily have a custom FOV for FPS objects
Add IN_SHADOW_PASS built-in to shaders for tweaking materials without impacting shadow maps
2025-05-21 10:16:05 -03:00
Ricardo Sanchez-Saez
47971c0a27
Introduce 'visionos' platform derived from 'apple_embedded'
2025-05-19 15:47:01 -07:00
Capry
9828c365c3
Add support for bent normals for indirect lighting and specular occlusion
2025-05-12 12:52:04 +02:00
Thaddeus Crews
dda0562f2f
Merge pull request #103934 from LiveTrower/dfg-lut
...
Forward+: Replace the current BRDF approximation with a DFG LUT and add multiscattering energy compensation
2025-05-09 11:29:16 -05:00
landervr
56730d0cb2
Add specular occlusion from ambient light
...
Co-authored-by: guerro323 <kaltobattle@gmail.com >
2025-05-08 23:52:01 +02:00
LiveTrower
44408eabaa
Replace BRDF approximation with a DFG LUT
2025-05-08 10:23:35 -06:00
clayjohn
07ef21c87a
Avoid crash when allocating specular and normal-roughness buffers when render buffers aren't available
2025-05-04 13:54:11 -07:00
lawnjelly
f8f350a32a
Add GLOBAL_GET cached macros.
...
GLOBAL_GET is an expensive operation which should not be used each frame / tick.
This PR adds macros which do a cheaper revision check, and only call the expensive GLOBAL_GET when project settings have changed.
Co-authored-by: Lukas Tenbrink <lukas.tenbrink@gmail.com >
2025-04-30 15:08:50 +01:00
Ansraer
a4a5f4ed01
allow moving meshes without motion vectors
2025-04-25 14:25:06 +02:00
Thaddeus Crews
f56a4d4fe4
Merge pull request #105138 from stuartcarnie/fix_hangs
...
Renderer: Reduce scope of mutex locks to prevent common deadlocks
2025-04-14 19:39:47 -05:00
Stuart Carnie
09282c316a
Renderer: Reduce scope of mutex locks to prevent common deadlocks
...
Fixes #102877
2025-04-13 06:56:13 +10:00
Thaddeus Crews
c7e9dc96a4
Rendering: Fix Math constant conversion
2025-04-11 12:33:57 -05:00
Thaddeus Crews
94282d88f9
Core: Use Math namespace for constants
2025-04-10 16:29:30 -05:00
Thaddeus Crews
06c71fbf40
Merge pull request #105175 from clayjohn/RD-pipeline-sss-roughness
...
Detect more pipeline settings at load time to avoid pipeline stutters
2025-04-10 11:10:22 -05:00
Thaddeus Crews
d534107926
Revert early version of PR #105175
...
This reverts commit 6225e25f4a .
2025-04-10 11:09:50 -05:00
Thaddeus Crews
665bdf4fe2
Merge pull request #105175 from clayjohn/RD-pipeline-sss-roughness
...
Detect more pipeline settings at load time to avoid pipeline stutters
2025-04-10 10:18:18 -05:00
clayjohn
bf47c42b21
Detect possible usage of SSS and screen textures at load time to allocate needed resources at load time.
...
This allows us to avoid a class of pipeline compilation stutters and
stutters from allocating screen textures.
2025-04-09 13:31:03 -07:00
clayjohn
6225e25f4a
Detect possible usage of SSS and screen textures at load time to allocate needed resources at load time.
...
This allows us to avoid a class of pipeline compilation stutters and
stutters from allocating screen textures.
2025-04-09 13:15:40 -07:00
Rémi Verschelde
408d07109b
Merge pull request #99551 from DarioSamo/fragment-density-map
...
Implement Fragment density map support.
2025-03-28 14:31:19 +01:00