Robbie Cooper
79d3e090cd
Vulkan Clustered: Fix culling of negatively-scaled objects
...
Negatively scaled objects should be mirrored. This is already implemented, but it breaks when mirrored and non-mirrored instances of the same object are visible together.
It turns out that the code that skips-over repeats in `RenderForwardClustered::_render_list_template` also skips the code that accounts for the culling mode of mirrored objects.
The solution here is to consider the `mirror` flag when determining repeats. This might result in more draw commands than necessary since a mirrored object can split a group of non-mirrored instances in two.
This problem doesn't appear in the mobile renderer because the repeat optimization isn't implemented there yet.
The problem still appears in MultiMeshInstance3D in *all* renderers.
Fixes #62879 and #58546 .
2022-10-10 03:20:59 -04:00
Yuri Rubinsky
f4db4bb7a2
Fix incorrect setup of boolean uniform instances
2022-10-09 08:50:18 +03:00
Yuri Rubinsky
816600382e
Fix incorrect offset for vec3 datatypes in `_fill_std140_ubo_empty`
2022-10-09 06:32:50 +03:00
Rémi Verschelde
658929997d
Merge pull request #67051 from clayjohn/CanvasGroup-clear
...
Allow clearing backbuffer after finishing CanvasGroup
2022-10-08 13:55:48 +02:00
Haoyu Qiu
5da515773d
Add `is_finite` method for checking built-in types
2022-10-08 13:25:08 +08:00
clayjohn
4765e5fa64
Allow clearing backbuffer after finishing CanvasGroup
...
This avoids an issue where having multiple CanvasGroups overlap
would create a weird artifact
2022-10-07 14:13:40 -07:00
clayjohn
7465455079
Fix material overlay overriding shadow casting logic
...
Material overlay should only cast a shadow if it can cast a shadow and
the instance can cast a shadow
2022-10-07 10:15:39 -07:00
bruvzg
0103af1ddd
Fix MSVC warnings, rename shadowed variables, fix uninitialized values, change warnings=all to use /W4.
2022-10-07 11:32:33 +03:00
Rémi Verschelde
29f017378e
Merge pull request #66861 from clayjohn/GLES3-mono-ubo
...
Use a giant UBO to optimize performance in 2D [OpenGL3]
2022-10-07 09:14:13 +02:00
Rémi Verschelde
17c62a692e
Merge pull request #66756 from BastiaanOlij/fix_ssr
...
Fixing artifacts in SSR
2022-10-06 22:27:49 +02:00
Pedro J. Estébanez
24ff292999
Polish rendering driver refactor further
...
Mainly:
- Make `max_descriptors_per_pool` project setting Vulkan-specific.
- Use a common, render driver agnostic magic FourCC for shader binary data.
- Downgrade spirv_reflect to Vulkan-only dependency.
- Add a `RENDER_DRIVER_*` macro to GLSL shader code for per-driver customizations.
2022-10-06 21:08:54 +02:00
clayjohn
154b9c1c91
Use a giant UBO to optimize performance in 2D
...
This removes the countless small UBO writes we had before
and replaces them with a single large write per render pass.
This results in much faster rendering on low-end devices
but improves speed on all devices.
2022-10-06 11:24:45 -07:00
Rémi Verschelde
d935235e9c
Merge pull request #66922 from BastiaanOlij/fix_direct_shadow
...
Make sure atlas rect for directional lights is calculated using floats
2022-10-05 13:38:24 +02:00
Bastiaan Olij
aba356e882
Make sure atlas rect for directional lights is calculated using floats
2022-10-05 22:12:57 +11:00
Rémi Verschelde
ecd4ab1e14
Merge pull request #66683 from clayjohn/SRGB-canvasitem
...
Default CanvasItem materials to use sRGB space for uniform colors
2022-10-05 11:44:52 +02:00
Rémi Verschelde
3a2b0ab73d
Merge pull request #66898 from aaronfranke/proj-mat-columns
...
Rename Projection `matrix` to `columns`
2022-10-05 08:35:26 +02:00
Bastiaan Olij
c7656978ba
Adding getters to RenderTarget and implementing override functionality for XR
2022-10-05 11:37:49 +11:00
Aaron Franke
2cea42cc7f
Rename Projection `matrix` to `columns`
2022-10-04 12:34:19 -05:00
Bastiaan Olij
d09ad714bf
Fixing artifacts in SSR
2022-10-04 23:47:13 +11:00
Rémi Verschelde
e5aa5eb806
Merge pull request #66780 from dsnopek/webxr-emulator-fix
...
Fix rendering in the WebXR emulator
2022-10-04 12:21:27 +02:00
Bastiaan Olij
02b0c22e38
Moving SSEffects settings into class
2022-10-04 11:03:36 +11:00
Bastiaan Olij
ddc4ae1175
Move cluster builder, sdfgi and gi structures to clustered renderer, move light and probe elements into storage and reorganise our render_scene method.
2022-10-04 11:03:32 +11:00
Yuri Rubinsky
a2c32590ee
Fix global uniform crash at editor startup
2022-10-03 15:06:20 +03:00
clayjohn
3126619aa5
Update Instance flags in shaders to match instance flags in engine
2022-10-02 21:37:06 -07:00
David Snopek
ec5c4709bd
Fix rendering in the WebXR emulator
2022-10-02 13:49:53 -05:00
clayjohn
06d0e56559
Default CanvasItem materials to not convert uniform colors to linear space.
...
The 2D renderer in Godot is totally in sRGB space so it is appropriate
to keep 2D uniform colors in sRGB space
2022-09-30 15:15:11 -07:00
Rémi Verschelde
166df0896c
Fix typos with codespell
...
Using codespell 2.3-dev from current git.
And fix typo in `methods.py` for `vsproj=yes` option (still won't work
though).
2022-09-30 14:23:36 +02:00
Rémi Verschelde
67961d875d
Merge pull request #66178 from clayjohn/double-precision-rendering
...
Emulate double precision for regular rendering operation when REAL_T_IS_DOUBLE
2022-09-30 09:59:45 +02:00
Rémi Verschelde
fe40c52be8
Merge pull request #66638 from timothyqiu/rendering-null
...
Add various null checks in RenderingServer
2022-09-30 09:58:58 +02:00
Rémi Verschelde
7a0500d9a3
Merge pull request #66626 from danboo/fix-typo-run-debug-collisons
...
Fix typos - "collison" -> "collision"
2022-09-30 09:58:25 +02:00
Haoyu Qiu
ffdac72eaa
Add various null checks in RenderingServer
2022-09-30 10:18:14 +08:00
danboo
eba8be6e45
Fix typo - "collison" -> "collision"
2022-09-29 13:56:26 -08:00
Rémi Verschelde
6991e9b43d
Merge pull request #66583 from bruvzg/constexpr
...
Use `constexpr` in the conditions with template parameters and `sizeof`s to suppress C4127 warnings.
2022-09-29 10:44:22 +02:00
Rémi Verschelde
315a71103e
Merge pull request #66565 from clayjohn/canvas-lights
...
Clean up canvas light shader API.
2022-09-29 10:43:42 +02:00
bruvzg
ea1848ce0a
Use `constexpr` in the conditions with template parameters and `sizeof`s to suppress C4127 warnings.
2022-09-29 10:38:21 +03:00
Rémi Verschelde
e5857bd6c7
Merge pull request #66548 from akien-mga/msvc-warnings-c4701-c4703
...
Fix MSVC warnings C4701 and C4703: Potentially uninitialized variable used
2022-09-28 20:47:50 +02:00
clayjohn
1a0890122f
Clean up canvas light shader API.
...
Expose LIGHT_ENERGY and LIGHT_IS_DIRECTIONAL.
Add LIGHT_DIRECTION
2022-09-28 11:46:58 -07:00
Rémi Verschelde
85fe6ecc32
Fix MSVC warnings C4701 and C4703: Potentially uninitialized variable used
2022-09-28 17:05:34 +02:00
Rémi Verschelde
7ab01450cf
Fix MSVC warning C4702: unreachable code
...
Part of #66537 .
2022-09-28 16:46:48 +02:00
Rémi Verschelde
b8870b91b5
Merge pull request #66466 from clayjohn/FXAA-fix
...
Take FXAA samples from half-pixel coordinates to improve quality
2022-09-27 09:58:22 +02:00
Rémi Verschelde
2ad63f68b3
Merge pull request #66370 from bitbrain/fix-light2d-blend-modes
...
Fix broken 2D light blending, addresses #49922
2022-09-27 09:57:44 +02:00
Rémi Verschelde
5ecaa676cc
Merge pull request #66317 from clayjohn/debanding-bug
...
Move deband to end of tonemapping.
2022-09-27 09:54:45 +02:00
clayjohn
dbcc0fa2a6
Take FXAA samples from half-pixel coordinates to improve quality
2022-09-26 11:54:29 -07:00
Yuri Rubinsky
344aa610e3
Add defines to completion list in shaders
2022-09-26 16:04:19 +03:00
Rémi Verschelde
5ae6379e5d
Merge pull request #66394 from bitbrain/fix-unshaded-canvas-modulate
...
Fix Unshaded CanvasItem for Vulkan
2022-09-26 08:24:45 +02:00
Bastiaan Olij
56d6a13fd7
Make dependencies with shader includes in subfolders
2022-09-26 12:29:19 +10:00
Miguel Gonzalez Sanchez
125f0be8b7
do not apply modulate on canvas when unshaded is set
2022-09-25 12:13:46 +01:00
Miguel Gonzalez Sanchez
2047be4516
fix broken 2D light blending, addresses #49922
2022-09-24 20:13:12 +01:00
clayjohn
fe69fedc1a
Move deband to end of tonemapping.
...
This avoids artifacts when using adjustments and color correction
2022-09-23 11:46:40 -07:00
Rémi Verschelde
03410efa15
Merge pull request #66284 from clayjohn/particles-mem-bug
...
Properly initialize motion vectors offset when motion vectors are disabled
2022-09-23 09:45:48 +02:00
clayjohn
aac8d5c406
Properly initialize motion vectors offset when motion vectors are disabled.
...
This fixes an uninitialized memory bug that caused particles to fail in non-LTO builds
2022-09-22 20:36:01 -07:00
Rémi Verschelde
d1a155e3cd
Fix various -Wmaybe-uninitialized warnings from GCC 12.2.1
...
Not sure why I didn't get those before, it may be due to upstream
changes (12.2.1 is a moving target, it's basically 12.3-dev), or simply
rebuilding Godot from scratch with different options.
2022-09-22 11:29:48 +02:00
Micky
c1b5b68eee
Rename remaining "*_enable" to "*_enabled"
...
Material.`proximity_fade_enable` -> `proximity_fade_enabled`
Material.`set_proximity_fade` -> `set_proximity_fade_enabled`
(Material.`is_proximity_fade_enabled` is unchanged)
Area3D.`reverb_bus_enable` -> `reverb_bus_enabled`
(`set_use_reverb_bus` & `is_using_reverb_bus` are unchanged)
RDPipelineRasterizationState:
`depth_bias_enable` -> `depth_bias_enabled`
`set_depth_bias_enable` -> `set_depth_bias_enabled`
`get_depth_bias_enable` -> `get_depth_bias_enabled`
Bonus:
Area3D.`set_reverb_bus` -> `set_reverb_bus_name`
Area3D.`get_reverb_bus` -> `set_get_reverb_bus_name`
2022-09-21 22:47:46 +02:00
clayjohn
27a3014f50
Emulate double precision for regular rendering operation.
...
We calculate the lost precision on the CPU and pass it into the GPU
so that it can calculate an error-corrected version of the vertex position
2022-09-20 23:40:01 -07:00
Rémi Verschelde
7da532275b
Merge pull request #65541 from clayjohn/renderer-setting
...
Split rendering driver project setting into renderer_name and rendering_driver
2022-09-20 09:43:59 +02:00
Logan Lang
e61d8b6f53
enabled ambient_light_disabled render mode flag
2022-09-19 17:12:32 -05:00
Rémi Verschelde
effddbcf12
Merge pull request #66065 from kidinashell/issue-59488
...
SpotLight3D's and OmniLight3D's Projector doesn't work
2022-09-19 22:02:17 +02:00
clayjohn
4a1c7de57c
Split rendering driver project setting into renderer_name and rendering_driver. To differentiate between a driver (e.g. Vulkan or D3D12) and a renderer (e.g. clustered or mobile renderer).
2022-09-19 10:26:10 -07:00
Tobias Widner
422bacbfd1
Fix Vulkan: SpotLight3D's and OmniLight3D's Projector doesn't work
2022-09-19 17:18:45 +02:00
Rémi Verschelde
49891e4c2f
Merge pull request #65915 from clayjohn/VULKAN-mobile-fog
...
Restore fog in vulkan mobile renderer.
2022-09-19 09:23:24 +02:00
clayjohn
2ecc8b9a73
Restore fog in vulkan mobile renderer.
...
The condition accidentally disabled fog whenever it was enabled
2022-09-16 09:18:11 -07:00
Rémi Verschelde
bda63e1b5a
Merge pull request #65833 from JFonS/taa_fix_particles_errors
...
Fix error spam in the renderer when using GPUParticles3D
2022-09-16 11:59:00 +02:00
JFonS
b668268772
Fix error spam in the renderer when using GPUParticles3D
...
The flag INSTANCE_DATA_FLAG_MULTIMESH is used for both multimesh and particles instances, this commit adds a new INSTANCE_DATA_FLAG_PARTICLES flag to discriminate between them.
This flag will also be used in the future to properly support TAA in particles.
2022-09-16 09:44:22 +02:00
Rémi Verschelde
848668ed45
Merge pull request #65794 from Geometror/fix-canvas-backbuffer
...
Fix/restore BackBufferCopy
2022-09-16 09:20:04 +02:00
Clay John
95df3e7c88
Merge pull request #65800 from dsnopek/xr-resize-viewport-3
...
Fix XR rendering in 'opengl3' driver and expose true size via the Viewport node
2022-09-15 18:19:24 -07:00
Bastiaan Olij
02ea1de7d0
Extract shared scene data into a separate class
2022-09-15 12:09:57 +10:00
David Snopek
e82cd46a74
Fix XR rendering in 'opengl3' driver and expose true size via the Viewport node
2022-09-14 20:55:56 -05:00
Hendrik Brucker
e235bca995
Fix/restore BackBufferCopy
2022-09-15 02:36:39 +02:00
Rémi Verschelde
ecaa7b634e
Merge pull request #65322 from ceLoFaN/fix-dof-artifact-at-high-blur
2022-09-15 00:03:40 +02:00
Rémi Verschelde
0a0843a67d
Merge pull request #65654 from JohanAR/emit_subparticle_from_start
...
Allow emit_subparticle from start function
2022-09-14 19:07:33 +02:00
Rémi Verschelde
957aa79ce0
Merge pull request #65789 from clayjohn/sky-update-bug
...
Clear last frame directional light buffer when number of lights changes.
2022-09-14 19:06:19 +02:00
Clay John
f709596631
Merge pull request #65418 from JFonS/taa_multimesh
...
Add motion vectors support for MultiMeshInstance
2022-09-14 09:06:27 -07:00
clayjohn
72d899702b
Clear last frame directional light buffer when number of lights changes.
...
This ensures that the buffers don't go out of sync.
2022-09-14 08:30:35 -07:00
clayjohn
8fa76a5272
Move debanding into internal sky shader code so that it is applied after everything else.
...
This ensures that the debanding does not scale with exposure or any other effect.
2022-09-13 10:39:04 -07:00
Rémi Verschelde
22a09fef5d
Merge pull request #65579 from ZuBsPaCe/fix-viewport-sibling-order
...
Sibling SubViewports must be rendered from top to bottom
2022-09-13 11:01:33 +02:00
Rémi Verschelde
b853110890
Merge pull request #65653 from Chaosus/shader_completion_fix
2022-09-13 10:44:41 +02:00
Rémi Verschelde
0f3f8509ec
Merge pull request #65738 from BastiaanOlij/fix_ssao_ssil_memory_leak
2022-09-13 10:25:11 +02:00
Bastiaan Olij
873366cb2d
Fix uniform buffer being created every frame is SSAO and SSIL half_size is different
2022-09-13 17:49:32 +10:00
clayjohn
96b7cb66df
Fix multiwindow support in GLES3 for X11, Windows, and MacOS.
...
Instead of updating all viewports, then blitting all viewports
to the backbuffer, then swapping all buffers, we run through
all viewports and render, blit, and swap backbuffer before
going to the next viewport.
2022-09-12 17:30:50 -07:00
Rémi Verschelde
79b21e96ad
Merge pull request #65544 from clayjohn/lambert-wrap
...
Apply energy conservation to LAMBERT_WRAP diffuse mode by dividing by PI
2022-09-12 20:42:27 +02:00
clayjohn
97be1fb7b6
Apply energy conservation to LAMBERT_WRAP and TOON diffuse modes by dividing by PI
2022-09-12 08:45:40 -07:00
jfons
74cdee4cb5
Add motion vectors support for MultiMeshInstance
...
Transparently handle changes in multimesh transforms so they get reflected in the motion vectors buffer.
2022-09-12 15:28:12 +02:00
Rémi Verschelde
f211869530
Merge pull request #65594 from clayjohn/SSR-dialectric
2022-09-12 14:23:04 +02:00
Bastiaan Olij
b519d7619c
Fixed MSAA initialisation in clustered forward renderer
2022-09-12 11:07:51 +10:00
Yuri Rubinsky
e4a8646c19
Prevent duplicated hints in shader uniform completion
2022-09-11 15:21:43 +03:00
Johan Aires Rastén
ddfa214d89
Allow emit_subparticle from start function
...
emit_subparticle was previously only allowed from the process function
in a particle shader, which seemed like an unnecessary limitation.
2022-09-11 14:02:36 +02:00
clayjohn
65f0113bc6
Properly scale SSR reflection based on metallic value for dielectric materials
2022-09-09 16:52:02 -07:00
ZuBsPaCe
3d08678e13
Sibling SubViewports must be rendered from top to bottom
...
Sibling SubViewports must be rendered in the same order as in the Scene Tree, from top to bottom. _sort_active_viewports() reversed their order.
Fixes #65545
2022-09-09 17:50:14 +02:00
Yuri Rubinsky
d1be14a9cb
Merge pull request #65473 from Chaosus/shader_fix_completion
2022-09-07 21:23:39 +03:00
Haoyu Qiu
eea02e50a7
Fix crash when executing `VisualShaderNodeParticleMeshEmitter.set_mesh` with headless Godot
2022-09-07 21:31:16 +08:00
Yuri Rubinsky
47145800a6
Remove `shader_type` from completion (when it does not need any more)
2022-09-07 16:19:36 +03:00
Rémi Verschelde
5062aafc2d
Merge pull request #64417 from aaronfranke/has-space
...
Replace AABB/Rect2/Rect2i has_no_* methods with has_* methods
2022-09-06 17:00:44 +02:00
ceLoFaN
e844b95eaf
Fix DoF artifacting at high blur amounts
2022-09-05 21:38:40 +03:00
Aaron Franke
817ae95667
Replace AABB has_no_volume with has_volume
...
Also replace has_no_surface with has_surface
2022-09-04 23:03:36 -05:00
Haoyu Qiu
52f290ae4d
Fix crash when executing `CSGMesh3D.set_mesh` with headless Godot
2022-09-05 09:15:22 +08:00
MinusKube
f5a808192b
Prevent windows from having a size greater than device limit
2022-09-04 22:48:54 +02:00
Rémi Verschelde
3a62c294c7
Merge pull request #65170 from KoBeWi/your_argument_is_TypedArray
2022-09-02 13:57:02 +02:00
Rémi Verschelde
c82bbc38a5
Merge pull request #64952 from Chaosus/vs_rename_uniform_to_param
2022-09-02 13:49:53 +02:00
Rémi Verschelde
d63c6fc463
Merge pull request #60185 from Calinou/environment-fog-and-sky-affect
2022-09-01 23:52:34 +02:00
Hugo Locurcio
699e9f7966
Add Environment properties to control fog rendering on background sky
...
Values lower than 1.0 can be used to make the fog rendering not fully
obstruct the sky. This can be desired when using fog as a purely
atmospheric effect, without intending to use fog for open world fog
fading.
When set to 0.0, fog rendering behavior will be similar to Godot 3.x
where sky rendering was never affected by fog.
2022-09-01 19:07:39 +02:00