Commit Graph

1443 Commits

Author SHA1 Message Date
Rémi Verschelde aae4b3d9d0
Merge pull request #68496 from clayjohn/RD-point
Ensure user shader is used in depth pass when point size is used
2022-11-11 10:54:55 +01:00
Rémi Verschelde 636d2189d0
Merge pull request #68511 from clayjohn/RD-mobile-sky
Enable mipmaps in cubemap roughness shader
2022-11-11 10:54:44 +01:00
Rémi Verschelde e10f8cbf40
Merge pull request #68186 from pkdawson/expose-texture-rd
Expose texture_get_rd_texture for scripts
2022-11-11 10:43:57 +01:00
Rémi Verschelde 43f2213325
Merge pull request #68235 from pkdawson/pr-expose-vertex-array-create
Expose RenderingDevice::vertex_array_create to scripting
2022-11-11 10:43:35 +01:00
Rémi Verschelde 1691a33eb9
Merge pull request #67374 from MrBlockers/fix-draw-primitive
Fix draw_primitive ignoring texture argument
2022-11-11 10:43:18 +01:00
Rémi Verschelde 2608e71eca
Merge pull request #68425 from clayjohn/RD-doubles-particles
Fix GPUParticles not rendering in doubles build of the engine.
2022-11-11 10:42:24 +01:00
clayjohn 3ceb342d37 Enable mipmaps in cubemap roughness shader 2022-11-10 23:41:51 -08:00
clayjohn a7adc7ab37 Ensure user shader is used in depth pass when point size is used 2022-11-10 15:26:07 -08:00
clayjohn 8e41221404 Use raster versions of copy effects for 2D operations when using the mobile renderer
This PR implements a few basic copy operations in raster that weren't available before
2022-11-10 12:47:26 -08:00
Yuri Rubinsky dca5cb8e40
Merge pull request #68413 from Chaosus/fix_instance_uniforms 2022-11-09 22:55:41 +03:00
Yuri Rubinsky c07d13182c Some fixes for instance shader parameters 2022-11-09 21:20:11 +03:00
clayjohn 4aab9cbdfc Fix GPUParticles not rendering in doubles build of the engine.
real_t was mistakenly used in uniform structs causing a mismatch between the GPU uniform and the CPU uniform
2022-11-09 08:58:04 -08:00
clayjohn a1c3591461 Request redraw in OpenGL3 and mobile renderers when TIME used in shader 2022-11-08 22:52:11 -08:00
Rémi Verschelde e2b39bfdc4
Merge pull request #68346 from Calinou/particles-rename-trail-length-property
Rename GPUParticles2D/3D's `trail_length_secs` to `trail_lifetime`
2022-11-07 15:05:55 +01:00
Hugo Locurcio ab7a807f2b
Rename GPUParticles2D/3D's `trail_length_secs` to `trail_lifetime`
The property already has a "seconds" suffix in the inspector.
The "lifetime" term makes it more obvious that the property is
specified as time, not a distance in units.

The property hint now allows manually entering values greater than
10 seconds.

The internal rendering value's default now matches the particles
nodes' default.
2022-11-07 13:37:40 +01:00
Gábor Pál Korom 6865d2d002 Surface AABBs are now set for mesh surfaces even in headless mode. Sponsored by Migeran (https://migeran.com). 2022-11-07 12:53:03 +01:00
clayjohn 5f4a561f6c Scale light shadow bias by soft_shadow_scale to reduce shadow acne on high quality settings 2022-11-06 10:49:55 -08:00
kobewi 1778301cd0 Add call_deferred() method to Callable 2022-11-04 17:24:34 +01:00
Patrick Dawson e56fc6b338 Expose vertex_array_create 2022-11-03 22:14:55 +01:00
David Snopek 7fb8b931d7 Collapse three seperate texture storage methods into render_target_set_override() 2022-11-03 13:03:30 -05:00
Patrick Dawson 71d8de2763 Expose texture_get_rd_texture 2022-11-03 05:27:24 +01:00
Rémi Verschelde 2c0544a7b8
Merge pull request #67878 from clayjohn/RD-particles-amount
Correctly set number of particle dispatches when setting view axis
2022-11-03 00:32:20 +01:00
Rémi Verschelde f7c611ab71
Style: Misc docs and comment style and language fixes
- Removed empty paragraphs in XML.
- Consistently use bold style for "Example:", on a new line.
- Fix usage of `[code]` when hyperlinks could be used (`[member]`, `[constant]`).
- Fix invalid usage of backticks for inline code in BBCode.
- Fix some American/British English spelling inconsistencies.
- Other minor fixes spotted along the way, including typo fixes with codespell.
- Don't specify `@GlobalScope` for `enum` and `constant`.
2022-11-02 19:01:18 +01:00
Rémi Verschelde 604abb434f
Merge pull request #52350 from BimDav/viewport_canvas_cull
Added Viewport canvas cull mask feature
2022-11-02 17:14:24 +01:00
Rémi Verschelde cb1931b271
Merge pull request #67639 from clayjohn/GLES3-2d-shadows
Add 2D shadows and canvas SDF to OpenGL3 renderer
2022-11-02 17:12:20 +01:00
Yuri Rubinsky 0a85d3b0cc Fix predefined constants to be accessible in the shader includes 2022-11-01 19:53:05 +03:00
BimDav fcb9be66a2 Viewport canvas cull mask feature
Co-authored-by: Valentin Zagura <puthre@gmail.com>
2022-10-31 14:09:49 +01:00
Rémi Verschelde 5947f22be9
Merge pull request #67578 from KoBeWi/GEDITOR
Unify usage of GLOBAL/EDITOR_GET
2022-10-31 13:15:58 +01:00
Yuri Rubinsky 099f127cc3
Make code generation for shader boolean uniform instances easier 2022-10-31 11:52:52 +01:00
Rémi Verschelde 87545bf873
Merge pull request #67519 from BastiaanOlij/change_xr_pre_draw_viewport
Changing timing of call to xr_interface->pre_draw_viewport
2022-10-31 11:08:34 +01:00
Rémi Verschelde 3312d0a87b
Merge pull request #67907 from clayjohn/RD-model-matrix
Correctly rename to read_model_matrix when using shader builtins that rely on model matrix
2022-10-31 11:07:24 +01:00
Rémi Verschelde d147adc591
Merge pull request #67915 from RevoluPowered/fix-intel-macbook-crash-subgroups
Ensure vulkan subgroups are disabled for MoltenVK
2022-10-31 10:53:30 +01:00
Yuri Rubinsky 11e1bac768
Merge pull request #67112 from Chaosus/fix_boolean_uniform_instances 2022-10-28 23:17:23 +03:00
clayjohn 2ec234ff67 Add 2D shadows and canvas SDF to OpenGL3 renderer
This is an initial implementation based on the current RD implementation

Performance will improve later
2022-10-28 11:33:23 -07:00
Yuri Rubinsky 468762b3b7
Merge pull request #67498 from Chaosus/fix_shader_crash 2022-10-28 09:25:07 +03:00
clayjohn 31c1a06ab5 Fix ss_effects_flags uniform in clustered forward renderer
This comes from an uncaught merge conflict resulting from the split of scene_data into
scene_data and implementation_data
2022-10-27 15:37:38 -07:00
Clay John 0d711cad30
Merge pull request #66107 from devloglogan/ambient-light-disabled-fix
Fix ambient_light_disabled render mode flag
2022-10-27 10:08:29 -07:00
Clay John 8fd92ed867
Merge pull request #64710 from MinusKube/window-size-crash
Prevent windows from having a size greater than device limit
2022-10-27 10:02:44 -07:00
Clay John e1caa8797b
Merge pull request #67043 from clayjohn/clip_children
Improve behaviour of clip_children by clipping to parent alpha value but still retaining parent color
2022-10-27 09:59:27 -07:00
Clay John 682156e1f0
Merge pull request #66383 from aaronfranke/basis-from-euler
Clean up Basis from Euler code
2022-10-27 09:44:21 -07:00
Andreas Raddau a5828cd0e3 Improved consistency between vector field texture and world space 2022-10-27 15:43:24 +02:00
Gordon MacPherson 381d457a2a Ensure vulkan subgroups are disabled for MoltenVK
We found they don't work on intel macbooks properly at all.

Possible future solutions:
- update to moltenvk.
- update to spirv may resolve it.
2022-10-26 20:12:06 +01:00
Gordon MacPherson 56df8d5f19 Fix EXE_BAD_ACCESS caused by optional argument
This argument is now non optional, but this never hits the same bad access.
I voted to simplify the code here since the argument is never used optionally in our codebase.
2022-10-26 19:33:35 +01:00
clayjohn 020ac29fc3 Correctly rename to read_model_matrix when using shader builtins that rely on model matrix 2022-10-26 09:45:35 -07:00
clayjohn 3d28cb3cd3 Correctly set number of particle dispatches when setting view axis 2022-10-25 12:05:40 -07:00
Anders Stenberg bbb1f900dd Fix cluster_render.glsl failing on some Macs
Some Macs encounter an internal error when compiling cluster_render.glsl
caused by a likely bug in the MVK/Metal
compiler when using gl_HelperInvocation.
2022-10-22 12:27:13 +02:00
MrBlockers 0c4fd03f40 Fix draw_primitive ignoring texture argument 2022-10-21 21:35:13 -04:00
Aaron Franke 7f9a8c99c9
Clean up Basis from Euler code 2022-10-21 17:54:49 -05:00
kobewi e48c5daddf Unify usage of GLOBAL/EDITOR_GET 2022-10-18 19:01:48 +02:00
Markus Sauermann b8031bb7d6 Code simplifications
1. Viewport::get_visible_rect().position is always zero.
So Control::get_window_rect is identical to Control::get_global_rect.
Remove Control::get_window_rect since it is not used in the source code.

2. sqrt(a * a) = abs(a) for doubles

3. Simplify affine_inverse combination

4. Simplify calculation in shaders
2022-10-18 12:47:40 +02:00
Bastiaan Olij b742b4c6e6 Changing timing of call to xr_interface->pre_draw_viewport 2022-10-17 14:19:01 +11:00
Yuri Rubinsky 926d4ebb28 Fix editor crash when assigning some uniform hints to the textures 2022-10-16 19:55:08 +03:00
clayjohn b6f44859d7 Implement multiple clip_children modes for CanvasItems 2022-10-14 08:02:28 -07:00
kobewi 072f6feaba Make some Image methods static 2022-10-14 14:34:15 +02:00
clayjohn 09b1a6f85f Improve behaviour of clip_children by clipping
to parent alpha value, but still retaining
parent color
2022-10-13 18:35:12 -07:00
Rémi Verschelde 367a9b8056 Merge pull request #67335 from clayjohn/GLES3-2d-lights
Add 2D lights to OpenGL3 canvas renderer
2022-10-13 09:05:36 +02:00
Rémi Verschelde 0aa2d70613 Merge pull request #67320 from Calinou/fix-volumetric-fog-low-density
Fix volumetric fog not rendering at densities lower than or equal to 0.001
2022-10-13 09:05:30 +02:00
Rémi Verschelde f2bd389e21 Merge pull request #67307 from TechnoPorg/lod-radial-distance
Use radial distance for making LOD decisions.
2022-10-13 09:05:00 +02:00
clayjohn e600fb93a5 Add 2D lights to OpenGL3 canvas renderer
This is an initial implementation using the same single-pass approach as the RenderingDevice.
2022-10-12 17:55:01 -07:00
Hugo Locurcio 6aebc7b66e
Fix volumetric fog not rendering at densities lower than or equal to 0.001
This allows volumetric fog to render with the lowest density that
can be specified in the inspector (0.0001).
2022-10-13 00:45:49 +02:00
TechnoPorg b04350828e Use radial distance for making LOD decisions.
Previously, only forward basis distance from the camera was used.
This means that unnecessarily high LOD levels were used for objects located to the side of the camera.
The distance from the camera origin is now used, independently of direction.
2022-10-12 07:21:42 -06:00
Clay John 18d2035a3d
Merge pull request #67110 from Chaosus/fix_incorrect_vec3_ubo_fill
Fix incorrect offset for vec3 datatypes in `_fill_std140_ubo_empty`
2022-10-11 12:24:48 -07:00
Rémi Verschelde 6da55cd94b
Merge pull request #67270 from RandomShaper/slim_usage_msaa_attachment
Restrict MSAA attachment usage to the strictly needed set
2022-10-11 21:16:11 +02:00
Pedro J. Estébanez ee91531998 Restrict MSAA attachment usage to the strictly needed set 2022-10-11 20:33:21 +02:00
Rémi Verschelde 6d534f6e89 Merge pull request #66221 from Mickeon/painstakingly-appending-ds-en-you-tea-es
Rename remaining "*_enable" to "*_enabled"
2022-10-11 16:17:02 +02:00
Rémi Verschelde 422c398962 Merge pull request #67176 from cooperra/negative-scale-culling-fix
Vulkan Clustered: Fix culling of negatively-scaled objects
2022-10-11 09:27:34 +02:00
Rémi Verschelde 58eff50bf1 Merge pull request #64268 from timothyqiu/is-finite
Add `is_finite` method for checking built-in types
2022-10-11 09:25:46 +02:00
Rémi Verschelde 3306ffefd1 Merge pull request #67000 from RandomShaper/split_render_further
Polish rendering driver refactor further
2022-10-11 09:23:32 +02:00
Rémi Verschelde 8017827144 SCons: Re-enable treating `#warning` as error with `werror`
Replace all TODO uses of `#warning` by proper TODO comments, and will open
matching bug reports to keep track of them.

We don't have a great track record fixing TODOs, but I'd wager we're even
worse for fixing these "TODO #warning" so we should prohibit this usage.
2022-10-10 16:12:26 +02:00
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