Commit Graph

2563 Commits

Author SHA1 Message Date
Bastiaan Olij 461d31427c
Merge pull request #52205 from BastiaanOlij/blit_source_rect
Add source rectangle to blit
2021-09-07 09:21:13 +10:00
Bastiaan Olij 76b83ff615
Merge pull request #52405 from BastiaanOlij/xr_extension_missing_names
Add missing parameter names to _commit_views GDVIRTUAL_BIND
2021-09-07 09:20:49 +10:00
PouleyKetchoupp 8d56354f7c Optimize raycast with large Heightmap shape data
Port raycast accelerator from Bullet's btHeightfieldTerrainShape.
2021-09-06 16:01:44 -07:00
PouleyKetchoupp 82ea2a7045 Proper support for custom mass properties in 2D/3D physics bodies
Changes:
-Added support for custom inertia and center of mass in 3D
-Added support for custom center of mass in 2D
-Calculated center of mass from shapes in 2D (same as in 3D)
-Fixed mass properties calculation with disabled shapes in 2D/3D
-Removed first_integration which is not used in 2D and doesn't seem to
make a lot of sense (prevents omit_force_integration to work during the
first frame)
-Support for custom inertia on different axes for RigidBody3D
2021-09-06 10:20:16 -07:00
Camille Mohr-Daurat e1ae2708ee
Merge pull request #52271 from nekomatata/query-layer-default-mask
Harmonize default value for collision mask in ray/shape queries
2021-09-06 09:33:18 -07:00
Daniel Doran 3138b94058 Fix depth pass for shaders that set POSITION 2021-09-05 01:05:42 -06:00
Bastiaan Olij 32ddcaf15e Add missing parameter names to _commit_views GDVIRTUAL_BIND 2021-09-05 11:51:13 +10:00
Paulb23 24d02d0b4e Fix dummy rendering server memory leaks 2021-09-01 16:46:04 +01:00
Paulb23 d186862338 Fix InputMap and display server not nulling singleton on free 2021-09-01 16:46:04 +01:00
PouleyKetchoupp 83baecdff0 Add AnimatableBody inherited from StaticBody for moving platforms
Instead of having a physics node named Static that can be either Static
or Kinematic, AnimatableBody is added again as a separate node:
-Inherited from StaticBody to make its usage clearer
-Still separated from CharacterBody to make its usage more focused

Properly implemented constant velocity for kinematic bodies in godot
physics servers (induced velocity without actually moving).

Also updated description for the different physics nodes to make their
usage clearer.
2021-08-31 18:14:32 -07:00
Clay John 036b7a0985
Merge pull request #51873 from Chaosus/fix_uniform_error_spam
Fix incorrect checking of uniform set to prevent error spam (2)
2021-08-31 11:28:48 -07:00
Juan Linietsky 7946066577
Merge pull request #49471 from nekomatata/body-state-sync-callback
Clean physics direct body state usage in 2D and 3D physics
2021-08-31 14:30:17 -03:00
PouleyKetchoupp 26bd432707 Harmonize default value for collision mask in ray/shape queries
The default mask for queries was 0, 0x7FFFFFFF or 0xFFFFFFFF depending
on the cases.

Now always using 0xFFFFFFFF (in the form of UINT32_MAX to make it clear)
in order to use all layers by default.
2021-08-30 16:42:49 -07:00
Hugo Locurcio 2c507cd426
Use the Light3D Indirect Energy property in SDFGI
The Indirect Energy property was previously ignored in SDFGI
(unlike VoxelGI).
2021-08-30 14:53:03 +02:00
Bastiaan Olij fbac863bfb Add source rectangle to blit 2021-08-29 14:57:16 +10:00
Max Hilbrunner 7368004869
Merge pull request #52176 from BastiaanOlij/fix_gl_size_param
Fix double named size parameter
2021-08-28 19:35:20 +02:00
Bastiaan Olij b9c64df69b Fix double named size parameter 2021-08-28 13:30:43 +10:00
Fabio Alessandrelli dcf2d09231
Merge pull request #52070 from nekomatata/area-point-gravity-fix
Fix point gravity calculation
2021-08-28 05:10:15 +02:00
Juan Linietsky 54caaa21ce
Merge pull request #51296 from ellenhp/mix_in_audio_server
Move mixing out of the AudioStreamPlayback* nodes
2021-08-27 15:38:20 -03:00
Ellen Poe 3598d300cb Do all audio mixing in the AudioServer 2021-08-27 10:41:57 -07:00
Ellen Poe 53843ba872 Require AudioStream::mix to return the number of frames successfully mixed 2021-08-27 10:27:58 -07:00
PouleyKetchoupp cc43c2ea16 Optimize area detection and intersect_shape queries with concave shapes
Whenever contact points are not needed, collision checks with concave
shapes (triangle mesh and heightmap) stop at the first colliding
triangle.
2021-08-27 09:53:40 -07:00
K. S. Ernest (iFire) Lee 90a35dac48
Merge pull request #51908 from bruvzg/msdf_fonts2
Make FontData importable resource. Add multi-channel SDF font rendering.
2021-08-27 08:51:37 -07:00
Camille Mohr-Daurat ca4f20529c
Merge pull request #51896 from nekomatata/restore-ray-shape
Refactor RayShape and rename to SeparationRayShape
2021-08-27 08:49:49 -07:00
Juan Linietsky 712bcf564f
Merge pull request #52092 from Calinou/voxelgi-remove-anisotropic-leftovers
Remove leftovers of anisotropy in the VoxelGI shader code
2021-08-27 12:22:57 -03:00
bruvzg 4c3f7d1290 Makes FontData importable resource.
Adds multi-channel SDF font texture generation and rendering support.
Adds per-font oversampling support.
Adds FontData import plugins (for dynamic fonts, BMFonts and monospaced image fonts), font texture cache pre-generation and loading.
Adds BMFont binary format and outline support.
2021-08-27 15:43:18 +03:00
Bastiaan Olij c5f62fad90
Merge pull request #52003 from BastiaanOlij/xr_interface_extension
Adding GDExtension support to XRInterface
2021-08-27 11:51:43 +10:00
Camille Mohr-Daurat f89adbf112
Merge pull request #51801 from nekomatata/area-one-directional-layer-check
One-directional layer check for Area vs. RigidBody/SoftBody/Area
2021-08-26 07:59:06 -07:00
Bastiaan Olij 86ff7f8550 Adding GDExtension support to XRInterface 2021-08-26 23:24:44 +10:00
Bastiaan Olij 64626cc435 Optionally scale 3D render content 2021-08-26 20:48:40 +10:00
Bastiaan Olij 6e87d62873
Merge pull request #50883 from BastiaanOlij/mobile_hdr
Scale color output in the mobile renderer to provide HDR support
2021-08-26 11:23:22 +10:00
PouleyKetchoupp 6a9ed72185 Clean physics direct body state usage in 2D and 3D physics
Use a C++ callback instead of Callable for synchronizing physics nodes' state with physics servers.

Remove usage of PhysicsDirectBodyState in physics nodes when not
necessary.

Store PhysicsDirectBodyState for bodies individually instead of a
singleton to avoid issues when accessing direct body state for multiple
bodies.

PhysicsDirectBodyState is initialized only when needed, so it doesn't
have to be created when using the physics server directly.

Move PhysicsDirectBodyState2D and PhysicsDirectBodyState3D to separate
cpp files.
2021-08-25 08:57:42 -07:00
JFonS c334989e00
Merge pull request #51821 from Calinou/builtin-shaders-add-comments
Add comments at the top of each built-in shader to ease debugging
2021-08-25 11:37:57 +02:00
Hugo Locurcio 6a6c0890c2
Remove leftovers of anisotropy in the VoxelGI shader code
Anisotropy support was removed when VoxelGI was reworked as it was
too demanding on the GPU.
2021-08-25 10:23:28 +02:00
Hugo Locurcio 7192852da3
Remove 16× MSAA support due to driver bugs and low performance
In the `master` branch, 16× MSAA caused the entire system to freeze
on NVIDIA GPUs. This is likely caused by graphics drivers not actually
implementing 16× MSAA, but combining 8× MSAA with 2× SSAA instead.

On top of that, modern shader complexity makes 16× MSAA very difficult
to use while keeping a good framerate. 8× MSAA is hard enough to use
as it is.
2021-08-25 07:56:27 +02:00
PouleyKetchoupp 3d5dc80348 Rename RayShape to SeparationRayShape
Makes it clearer that it's used for special cases when picking a
collision shape.
2021-08-24 17:34:55 -07:00
PouleyKetchoupp aa4791735d Rename slips_on_slope to slide_on_slope
Also added some precision to the documentation.
2021-08-24 17:34:55 -07:00
PouleyKetchoupp d9720d4395 Fix CharacterBody motion with RayShape
Make separation ray shapes work properly in move_and_slide, wihtout the
specific code in CharacterBody like before.

Now most of the logic is handled inside the physics server. The only
thing that's needed is to use ray shapes only for recovery and ignore
them when performing the motion itself (unless we're snapping or slips
on slope is on).
2021-08-24 17:34:55 -07:00
PouleyKetchoupp 829fb4fba1 Fix RayShape collision detection
One-way collision is disabled for both rigid bodies and character
bodies.

Kinematic margin is now applied to ray shapes to help getting consistent
results in slopes and flat surfaces.

Convex shapes don't return inverted normals when a segment test starts
inside (raycasting will be made consistent in a separate patch).

Ray shapes also discard contacts when fully contained inside a shape
and when the contact direction is inverted, so the behavior is
consistent with all shape types. Now they always separate only when
intersecting the top of a shape (for downward rays).
2021-08-24 16:03:05 -07:00
PouleyKetchoupp 45c7af9862 Restore RayShape as a regular shape type
Partial revert from previously removing ray shapes completely, added
back as a shape type but without the specific character controller code.
2021-08-24 16:03:05 -07:00
PouleyKetchoupp 9c9e528e3e Fix point gravity calculation
Removing the + 1 in point gravity formula when using distance scale to
make it more accurate for standard gravitation.

Fixes precession in orbits for games using gravitation.

Also moved gravity calculation to area to use it for both rigid bodies
and soft bodies in 3D (same change in 2D for consistency).

Co-authored-by: Ryan Peach <ryan.peach@keysight.com>
2021-08-24 09:32:28 -07:00
Camille Mohr-Daurat 770a1d00a3
Merge pull request #51751 from jeffrey-cochran/windforce
Created an area-specific wind force that interacts with soft bodies
2021-08-23 16:48:19 -07:00
reduz 44d62a9f4b Implement NativeExtension pointer arguments
* Allows calling into native extensions directly with a pointer
* Makes it easier to implement some APIs more efficiently
* Appears with a "*" in the documentation for the argument.
* Implementing the pointer handling is entirely up to the implementation, although the extension API provides some hint.
* AudioStream has been implemented as an example, allowing to create NativeExtension based AudioStreams.
2021-08-23 19:58:40 -03:00
Jeffrey Cochran e806397196 Enabled area-specific wind forces 2021-08-23 17:00:50 -04:00
Max Hilbrunner 583b6a594a
Merge pull request #51971 from aaronfranke/https
Replace HTTP URLs with HTTPS for sites with HTTPS versions
2021-08-23 15:58:54 +02:00
Michael Alexsander 88db541705
Merge pull request #51947 from AnilBK/redundant-assignments
[cppcheck] Remove some redundant assignments.
2021-08-23 13:23:45 +00:00
Bastiaan Olij d22163c657 Scale color output in the mobile renderer to provide HDR support 2021-08-23 15:30:36 +10:00
Bastiaan Olij 2d446771d6
Merge pull request #51980 from BastiaanOlij/fix_multiview_tonemap
Fix multiview defines in tonemap shader
2021-08-23 12:02:18 +10:00
Aaron Franke ae1702bee5
Replace HTTP links with HTTPS for sites with HTTPS versions 2021-08-22 20:13:11 -05:00
Duarte David 7e94c583e0 Fixed non-uniform scaling of normals 2021-08-22 19:28:18 +01:00
Michael Alexsander 2f8a58ad46
Merge pull request #51886 from Geometror/fix-layout-editor-file-dialog
Fix ItemList layout (+EditorFileDialog)
2021-08-22 16:47:11 +00:00
Bastiaan Olij 74a647bddd Fix multiview defines in tonemap shader 2021-08-22 21:30:58 +10:00
Anilforextra c86db8b710 Remove redundant assignments.
Use used_in_transfer instead of used_in_compute twice.
2021-08-21 19:20:07 +05:45
clayjohn bccc4cd735 Compute horizon so threshold before transformation 2021-08-20 19:27:52 -07:00
Hendrik Brucker 72e49eadec Fix ItemList layout (+EditorFileDialog) 2021-08-21 00:22:09 +02:00
PouleyKetchoupp dafb6edacf Fix compilation warnings in Shape2DSW/Shape3DSW 2021-08-19 16:19:49 -07:00
jfons 55e7832d7b Improvements to SpotLight3D and OmniLight3D's shadows
OmniLight3D:
* Fixed lack of precision in cube map mode by scaling the projection's
  znear.
* Fixed aliasing issues by making the paraboloids use two square regions instead of two half
  squares.
* Fixed shadowmap atlas bleeding by adding padding.
* Fixed sihadow blur's inconsistent radius and unclamped sampling.

SpotLight3D:
* Fixed lack of precision by scaling the projection's znear.
* Fixed normal biasing.

Both:
* Tweaked biasing to make sure it works out of the box in most situations.
2021-08-19 13:46:51 +02:00
Yuri Roubinsky b6af457d25 Fix incorrect checking of uniform set to prevent error spam (2) 2021-08-19 09:11:01 +03:00
Rémi Verschelde f6626a40e5
Merge pull request #51843 from reduz/fixes-to-mobile-renderer-3
More fixes to mobile renderer
2021-08-18 20:43:25 +02:00
Rémi Verschelde 2fcf3057fd
Merge pull request #51792 from Chaosus/removed_restart 2021-08-18 19:59:57 +02:00
reduz 700f9d916d More fixes to mobile renderer
* Specify all precision qualifiers
* Makes renderer work on Adreno Vulkan
2021-08-18 12:20:19 -03:00
Hugo Locurcio a139e58f8c
Add comments at the top of each built-in shader to ease debugging
When a shader error is printed about a built-in shader, the origin
of the shader will now be recognizable immediately by looking at
the top of the printed shader code.
2021-08-18 03:09:22 +02:00
reduz 6027cd0a1d Fixes to mobile renderer
* Make sure shaders are named, to aid in debug in case of failure
* SceneRenderRD was being wrongly initialized (virtual functions being called when derivative class not initialized).
* Fixed some bugs resulting on the above being corrected.
2021-08-17 13:52:06 -03:00
PouleyKetchoupp d034c1b0fa One-directional layer check for Area vs. RigidBody/SoftBody/Area
Same thing that was already done for rigid body and character body
collision detection.
2021-08-17 09:32:00 -07:00
TechnoPorg b097e7f510 Vulkan: Fix CanvasItem::use_parent_material
The "Use Parent Material" option now does something when enabled on a CanvasItem. As before, it's not just limited to a node's direct parent but can move up the tree until it finds a material.
Also corrected a typo in rendering_device_vulkan.h that didn't merit its own commit.
2021-08-17 09:08:56 -06:00
Yuri Roubinsky c1cd0fe6d1 Removed `RESTART` built-in from `start` particle shader function 2021-08-17 15:13:16 +03:00
Yuri Roubinsky 06add309d7 Fix incorrect uniform buffer size for particles 2021-08-17 13:33:28 +03:00
LoipesMas 4e6e25eae7 Epsilon check for angular velocity in Body3DSW 2021-08-16 20:05:48 +02:00
Juan Linietsky d5a30431b9
Merge pull request #51635 from reduz/further-mobile-optimizations
More optimizations on the mobile renderer.
2021-08-16 14:50:52 -03:00
Rémi Verschelde 43440228db
Merge pull request #51645 from fabriceci/improve-physics-api
API improvement on the physics (CharacterBody and related classes)
2021-08-16 17:05:08 +02:00
Rémi Verschelde 7013199fb1
Merge pull request #50785 from jeffrey-cochran/softbody-areas
Updated softbody handling to allow for area/softbody collision detection and application of area gravity
2021-08-16 16:32:04 +02:00
Yuri Roubinsky 9de779344c Makes a clear error message if shader compilation failed 2021-08-16 11:25:20 +03:00
Jeffrey Cochran 14640fb6c5 Enabled softbody-area collision (intersection) and enabled area-specific gravity for soft bodies. 2021-08-15 23:01:33 -04:00
Bastiaan Olij c7847b3f6d Moved disabling bokeh shader variants to before the version_create call 2021-08-16 12:18:27 +10:00
fabriceci d776b6c154 API improvement on physics, mainly CharacterBody
Changes:

- Rename few methods/property and group them in the editor when it's possible
- Make MotionResult API consistency with KinematicCollision
- Return a boolean in move_and_slide if there was a collision
- New methods:
  - get_floor_angle on CharacterBody to get the floor angle.
  - get_angle on KinematicCollision to get the collision angle.
  - get_last_slide_collision to quickly get the latest collision of move_and_slide.
2021-08-15 12:53:29 +02:00
Bastiaan Olij 4002650cb9 Fix read from screen and depth texture 2021-08-15 13:14:19 +10:00
Rémi Verschelde 4e1d91f4d3
Merge pull request #50998 from BastiaanOlij/single_bokeh_dof_raster
Rewrote raster DOF shader to using BOKEH
2021-08-14 14:44:23 +02:00
Hugo Locurcio 8e3f71d750
Rename LineShape2D to WorldMarginShape2D
The new name makes it more obvious that it acts as an infinite plane,
and is consistent with its 3D counterpart (WorldMarginShape3D).
2021-08-14 03:12:13 +02:00
reduz cfac8972e1 More optimizations on the mobile renderer.
* Specialization constants used to disable anything not needed to draw
* Added softshadow and projector support on mobile.

This new approach ensures mobile shaders are smaller and more efficient, but relies on more pipeline versions compiled on demand.
As a result, random stalls can ocur like in Godot 3.x. These will be solved by using background compilation and fallbacks eventually (but needs to be tested first).
2021-08-13 14:30:59 -03:00
Rémi Verschelde e499758a77
Merge pull request #51025 from reduz/fix-directional-shadow-bias
Fix directional shadow bias
2021-08-13 16:45:49 +02:00
Rémi Verschelde 1833c8b233
Merge pull request #51587 from Calinou/use-unicode-multiplication-symbol
Use the Unicode multiplication symbol where relevant
2021-08-13 14:27:48 +02:00
bruvzg 8f70232a15 Add placeholder textures to ensure CameraTexture / CameraFeed always have valid RIDs. 2021-08-13 12:32:01 +03:00
Yuri Roubinsky eadf9d92f9
Merge pull request #51609 from Chaosus/shader_fix_varying_error
Fix shader crash when using local var with the same name as varying
2021-08-13 10:37:53 +03:00
Yuri Roubinsky fa96c98bdf Fix shader crash when using local var with the same name as varying 2021-08-13 09:20:16 +03:00
Bastiaan Olij 07fd559478 Implemented raster versions of bokeh shaders to replace broken gaussian implementation 2021-08-13 10:20:14 +10:00
Rémi Verschelde a98589a449
Merge pull request #51581 from bruvzg/camera_feed_port
Port camera feed to the new RenderingServer API.
2021-08-12 23:28:10 +02:00
Hugo Locurcio 7612cff432
Use the Unicode multiplication symbol where relevant 2021-08-12 21:45:33 +02:00
Rémi Verschelde 56ac302dc4
Merge pull request #51580 from aaronfranke/particles-real-double
Use real_t and double where appropriate in Particles
2021-08-12 20:51:21 +02:00
Rémi Verschelde 71873057bc
Merge pull request #51536 from Calinou/nearest-mipmap-use-nearest-for-minification
Use nearest mipmaps for both minification and magnification
2021-08-12 20:21:18 +02:00
bruvzg de30dfe6a5 Port camera feed to the new RenderingServer API. 2021-08-12 20:46:19 +03:00
Aaron Franke 03e2544d50
Use real_t and double where appropriate in Particles 2021-08-12 11:35:31 -05:00
Hugo Locurcio fd29432aab
Use nearest mipmaps for both minification and magnification
This is generally the expected behavior when using a nearest + mipmaps
mode, as it's often used for pixel art games.
2021-08-12 18:24:10 +02:00
Rémi Verschelde c89ad92c96
Merge pull request #51532 from nekomatata/layer-mask-accessors
Uniformize layer names, script methods and documentation
2021-08-12 17:55:11 +02:00
PouleyKetchoupp 989acbbe81 Uniformize layer names, script methods and documentation
- Back to 1-based layer names to make it clearer in editor UI
- Layer bit accessors are renamed to layer value and 1-based too
- Uniform errors and documentation in render and physics
- Fix a few remaining collision_layer used in place of collision_mask
2021-08-12 08:06:42 -07:00
Rémi Verschelde b63af73435
Merge pull request #51391 from Chaosus/shader_param_names
Added parameter names to shader built-in function autocompletion
2021-08-12 14:58:11 +02:00
Yuri Roubinsky fb37846b00 Added parameter names to shader built-in function autocompletion 2021-08-12 11:19:53 +03:00
Yuri Roubinsky 63c7d5c330 Removes an internal error report if shader fails compile 2021-08-12 10:18:18 +03:00
Rémi Verschelde e2ca1d413e
Merge pull request #51533 from Calinou/fix-nearest-mipmap-filter
Fix the Use Nearest Mipmap Filter project setting not working
2021-08-12 08:16:46 +02:00
Rémi Verschelde c3041ffe98
Merge pull request #51540 from floppyhammer/fix-cpu-particles-2d-disappearance
Fix CPUParticles2D disappearance after amount change
2021-08-12 08:12:22 +02:00
floppyhammer 37230dbb1f Fix CPUParticles2D disappearance after amount change 2021-08-12 10:53:37 +08:00
Hugo Locurcio 635f6cdf2e
Fix the Use Nearest Mipmap Filter project setting not working
The project setting wasn't being used anywhere.

This also tweaks the property hints to denote that these properties
are only effective after a restart.
2021-08-12 01:58:42 +02:00
PouleyKetchoupp f9176a39ce Make radius & height in CapsuleShape3D independent
Also changed CapsuleMesh to make settings consistent between render and
physics.
2021-08-11 14:54:53 -07:00
Rémi Verschelde e30be92ce8
Merge pull request #41634 from KoBeWi/the_independence 2021-08-11 18:16:24 +02:00
Tomasz Chabora f12f5b36b5 Make radius & height in CapsuleShape2D independent 2021-08-11 17:34:27 +02:00
Hugo Locurcio d364ff2087
Decrease the default depth of field bokeh quality
This makes depth of field perform better out of the box, with little
visual difference.
2021-08-11 16:59:22 +02:00
Rémi Verschelde 62047e4e48
Merge pull request #51486 from reduz/fixes-to-mobile-renderer
Fixes and optimizations to mobile renderer
2021-08-11 15:19:11 +02:00
Yuri Roubinsky efc6b29601
Merge pull request #51505 from Chaosus/shader_fix_shadetype-errorline 2021-08-11 14:46:04 +03:00
Yuri Roubinsky 2fb5231bbc Break futher shader compilation after missing `;` after`shader_type` 2021-08-11 12:37:59 +03:00
Yuri Roubinsky 0f42a29864 Allow using more assignment operators on matrixes in shaders 2021-08-11 11:51:39 +03:00
Yuri Roubinsky a902f76063
Merge pull request #51494 from Chaosus/shader_fix_varying_crashes 2021-08-11 11:23:10 +03:00
Yuri Roubinsky fead1595f9 Fix shader crash when using varying array in fragment->light context 2021-08-11 09:44:00 +03:00
Rémi Verschelde 7d43da928f
Merge pull request #51490 from nekomatata/clean-character-body
Remove infinite inertia and ray shapes from CharacterBody
2021-08-11 08:04:09 +02:00
Rémi Verschelde 2c88e1c15d
Merge pull request #51178 from Geometror/layout-options-textline-textparagraph
Various text layout improvements (TextLine, TextParagraph, Label, TextServer)
2021-08-11 07:51:57 +02:00
clayjohn a7c3e0dcd6 Use f0 instead of albedo in blinn and phong 2021-08-10 21:54:24 -07:00
reduz ca117910da Fixes and optimizations to mobile renderer
* Only apply final actions to attachments used in the last pass.
* Fixes to draw list final action (was using continue instead of read/drop).
* Profiling regions inside draw lists now properly throw errors.
* Ability to enable gpu profile printing from project settings. (used to debug).
2021-08-10 23:17:28 -03:00
Hendrik Brucker 403f4902d0 Various text layout improvements (TextLine, TextParagraph, Label, TextServer) 2021-08-11 00:09:48 +02:00
Rémi Verschelde afb40920fe
Merge pull request #51411 from clayjohn/VULKAN-blinn-phong
[4.0] Make Blinn and Phong specular modes take albedo into account
2021-08-10 21:11:48 +02:00
PouleyKetchoupp 4da3a87f7d Remove infinite inertia and ray shapes from CharacterBody
Infinite inertia:
Not needed anymore, since it's now possible to set one-directional
collision layers in order for characters to ignore rigid bodies, while
rigid bodies still collide with characters.

Ray shapes:
They were introduced as a work around to allow constant speed on slopes,
which is now possible with the new property in CharacterBody instead.
2021-08-10 12:10:26 -07:00
Rémi Verschelde 46beaacec3
Merge pull request #51017 from vnen/extension-fixes 2021-08-10 16:42:31 +02:00
Rémi Verschelde 50d5569ad4
Merge pull request #51457 from nekomatata/moving-platforms-3d
Fix 3D moving platform logic
2021-08-10 14:12:01 +02:00
Rémi Verschelde 16d73fefdb
Merge pull request #50682 from aaronfranke/basis-looking-at
Move code for looking_at to Basis
2021-08-10 11:28:12 +02:00
Rémi Verschelde 8b960a2d2b
Merge pull request #51467 from Chaosus/fix_aa
Fix incorrect border width of antialiased lines
2021-08-10 10:52:11 +02:00
Rémi Verschelde 51b4df72a7
Merge pull request #51436 from Calinou/tonemap-clamp-negative-colors
Clamp negative colors regardless of the tonemapper to avoid artifacts
2021-08-10 09:56:11 +02:00
Rémi Verschelde 56f17d925f
Merge pull request #51417 from clayjohn/Vulkan-horizon-so
Add horizon specular occlusion
2021-08-10 09:56:02 +02:00
Yuri Roubinsky 59c137a99b Fix incorrect border width of antialiased lines 2021-08-10 09:08:02 +03:00
PouleyKetchoupp ec9fed69f4 Fix 3D moving platform logic
Same thing that was already done in 2D, applies moving platform motion
by using a call to move_and_collide that excludes the platform itself,
instead of making it part of the body motion.

Helps with handling walls and slopes correctly when the character walks
on the moving platform.

Also made some minor adjustments to the 2D version and documentation.

Co-authored-by: fabriceci <fabricecipolla@gmail.com>
2021-08-09 20:21:04 -07:00
clayjohn fa962ff27d Make Blinn and Phong specular modes PBR 2021-08-09 20:09:00 -07:00
Aaron Franke 430ad75963
Some work on double support 2021-08-09 17:43:48 -05:00
Rémi Verschelde 2de5d2361a
Merge pull request #51446 from nekomatata/fix-moving-platform-rotation
Fix applied rotation from moving platforms in move_and_slide
2021-08-09 23:20:44 +02:00
PouleyKetchoupp 5650c83e4b Fix applied rotation from moving platforms in move_and_slide
When synchronizing CharacterBody motion with moving the platform using
direct body state, only the linear velocity was taken into account.

This change exposes velocity at local point in direct body state and
uses it in move_and_slide to get the proper velocity that includes
rotations.
2021-08-09 12:30:17 -07:00
Aaron Franke 84f720966c
Use doubles for time in many other places 2021-08-09 14:05:42 -05:00
Rémi Verschelde 9d9161c719
Merge pull request #49753 from aaronfranke/render-server-floats
Handle both 32-bit and 64-bit floats for tangents and weights in RenderingServer
2021-08-09 21:02:01 +02:00
Hugo Locurcio 57451f132f
Clamp negative colors regardless of the tonemapper to avoid artifacts
Color artifacts could be visible when using negative lights with the
Filmic and ACES tonemapping operators, as these did not clamp negative
colors.
2021-08-09 17:01:07 +02:00
Rémi Verschelde 0a38d5c8f7
Merge pull request #43158 from nathanfranke/fix-gradient-and-draw-tile
Fix Gradient and Color Picker checkerboard, Fix tile parameter for CanvasItem.draw_texture_rect
2021-08-09 16:47:58 +02:00
Rémi Verschelde 85399a9170
Merge pull request #51155 from Chaosus/shader_fix_specular_mode
Fix a default shader specular render mode to `SCHLICK_GGX`
2021-08-09 08:13:47 +02:00
clayjohn 7bdea93497 Add horizon specular occlusion 2021-08-08 19:43:48 -07:00
bruvzg 7c3c5603d0 [Text Server] Improve object (image/table) inline alignment. 2021-08-08 22:35:47 +03:00
Nathan Franke 051234e84e
Fix Gradient, Color Picker BG, Fix CanvasItem::draw_texture_rect p_tile 2021-08-07 16:40:50 -05:00
Yuri Roubinsky f860ee3091
Merge pull request #51356 from Chaosus/shader_dialog 2021-08-07 21:49:23 +03:00
Yuri Roubinsky 5e5cd2495d Added editor dialog for easily creating shaders. 2021-08-07 21:02:13 +03:00
Michael Alexsander 4bef900399 Invert how `global_rate_scale` value works, and rename it to `playback_speed_scale` 2021-08-07 12:32:42 -03:00
lawnjelly dd0f54a368 Fix Transform::xform(Plane) functions
The Transform::xform and xform_inv are made safe for Planes when using non-uniform scaling.
Optimization of calling sites to prevent loss of performance from the changes to xform(Plane).
2021-08-07 11:10:50 +01:00
Rémi Verschelde da339f8ffc
Merge pull request #51309 from Chaosus/fix_uniform_error_spam
Fix incorrect checking of uniform set to prevent error spam
2021-08-06 17:15:03 +02:00
Rémi Verschelde ed15d2c413
Merge pull request #49924 from BastiaanOlij/mobile_render_subpass
Use subpasses to do 3D rendering and resolve in mobile renderer
2021-08-06 17:00:00 +02:00
Bastiaan Olij b920bf05a4 Use subpasses to do 3D rendering and resolve in mobile renderer 2021-08-06 23:43:26 +10:00
Yuri Roubinsky 47a6bb2f28 Fix a default shader specular render mode to (`SCHLICK_GGX`/`BLINN`) 2021-08-06 16:01:58 +03:00
Rémi Verschelde d4e7a1af44
Merge pull request #51082 from ellenhp/fix_cubic_resampling 2021-08-06 11:27:13 +02:00
Yuri Roubinsky ac4406cfbe Fix incorrect checking of uniform set to prevent error spam 2021-08-06 12:20:12 +03:00
George Marques 97947bc063
Fix a few default parameters in bindings
They have the wrong type and cause issues with extensions.
2021-08-05 14:57:29 -03:00
Aaron Franke 93b5606e6c
Handle 32-bit and 64-bit floats for tangents/weights in RenderingServer 2021-08-01 18:32:50 -05:00
Rémi Verschelde dbd1a90bd4
Merge pull request #50942 from BastiaanOlij/cubemap_raster
Porting cubemap compute shaders to raster for the mobile renderer
2021-08-01 21:52:24 +02:00
Aaron Franke 9f3ae0adcd
Move code for looking_at to Basis 2021-08-01 12:49:02 -05:00
Bastiaan Olij c76426527b Porting cubemap compute shaders to raster for the mobile renderer 2021-08-01 21:22:38 +10:00
Rémi Verschelde 6acbcf7a86
Merge pull request #50625 from nekomatata/body-one-direction-layers
One-directional collision layer check for rigid bodies and soft bodies
2021-07-31 22:12:46 +02:00
clayjohn b020ca32b2 Move assignment of SSAO radius push constant 2021-07-31 12:31:14 -07:00
Rafał Mikrut e8877806ec Fix 'Attempted to remove invalid ID' errors 2021-07-31 15:30:31 +02:00
Ellen Poe 2d450c6f61 Fix Godot's cubic resampling algorithm 2021-07-30 13:20:25 -07:00
Hugo Locurcio d2b65c69e9
Expose Vulkan's clustered and mobile backends in the project manager
Since OpenGL will not be available in Godot 4.0, this exposes a
choice between Vulkan clustered and Vulkan mobile in the project manager.

Despite the name, Vulkan mobile has many benefits on desktop platforms.
It provides better performance on simple scenes, and ensures that you
won't accidentally use unsupported features while testing your project
on desktop platforms.

The Vulkan backend setting was made into a "basic" setting so that
it can be changed without having to enable the Advanced Settings toggle.

This also improves list formatting to use bullet points and tweaks
the property hint to be more descriptive.
2021-07-30 19:36:17 +02:00
Ellen Poe 57ccfab5fb Revert "Implement a new resampling algorithm in AudioStreamPlaybackResampled"
This reverts commit b2264cb48b.
2021-07-30 08:07:48 -07:00
reduz 55d357b1eb Fix directional shadow bias
* Simplified code a lot, bias based on normalized cascade size.
* Lets scale cascades, max distance, etc. without creating acne.
* Fixed normal biasing in directional shadows.

I removed normal biasing in both omni and spot shadows, since the technique can't be easily implemented there.
Will need to be replaced by something else.
2021-07-29 13:51:32 -03:00
Hugo Locurcio e6a544c169
Merge pull request #50891 from Vitika9/50852
Removed redundant assignment of `blur_pipeline`
2021-07-26 21:43:38 +02:00
Rémi Verschelde fef27e9b5b
Merge pull request #50895 from Chaosus/fix_shader_crash
Fix editor crash if passing index as variable to function parameter
2021-07-26 17:38:14 +02:00
Rémi Verschelde 8f6c16e4a4
Merge pull request #50847 from reduz/implement-binary-shader-compilation
Implement Binary Shader Compilation
2021-07-26 17:09:48 +02:00
Yuri Roubinsky c082982a47 Fix editor crash if passing index as variable to function parameter 2021-07-26 17:42:52 +03:00
vitika9 1c63866996 Fixed coding style 2021-07-26 20:12:16 +05:30
Rémi Verschelde 64dc58bfba
Merge pull request #50884 from Chaosus/fix_shader_crash
Prevents shader crashing if varying assigned incorrectly by using compound assignment operators (*=, += etc.)
2021-07-26 15:39:59 +02:00
Nicholas Huelin 7f908cf40f
Fix expression in `cluster_builder_rd.h`
This expression should now work as intended.
2021-07-26 08:19:53 -04:00
Yuri Roubinsky b47b3a9957 Prevents shader crashing if varying assigned incorrectly 2021-07-26 14:47:14 +03:00
reduz cf3f404d31 Implement Binary Shader Compilation
* Added an extra stage before compiling shader, which is generating a binary blob.
* On Vulkan, this allows caching the SPIRV reflection information, which is expensive to parse.
* On other (future) RenderingDevices, it allows caching converted binary data, such as DXIL or MSL.

This PR makes the shader cache include the reflection information, hence editor startup times are significantly improved.
I tested this well and it appears to work, and I added a lot of consistency checks, but because it includes writing and reading binary information, rare bugs may pop up, so be aware.
There was not much of a choice for storing the reflection information, given shaders can be a lot, take a lot of space and take time to parse.
2021-07-26 08:40:39 -03:00
Yuri Roubinsky 3013324a4e Fix compilation of `shader_language.cpp` 2021-07-26 13:44:21 +03:00
Rémi Verschelde a8fcfbf029
Merge pull request #50729 from Chaosus/shader_varying_enchancements2
Allow using vertex-stage varying in both `fragment` and `light` functions
2021-07-26 12:17:49 +02:00
Rémi Verschelde 9b9e09f675
Merge pull request #50728 from Chaosus/shader_varying_enchancements
Allow using vertex varying in custom functions under any circumstances
2021-07-26 12:17:40 +02:00
Rémi Verschelde 7341dd5afa
Merge pull request #50856 from SirQuartz/patch-32
Fix always true expression `radius > 0.98 || radius < 1.02` in `cluster_builder_rd.h`
2021-07-26 08:47:33 +02:00
Nicholas Huelin a1a392045d
Fix always true expression in `cluster_builder_rd.h`
This pull request fixes an issue where an expression would always evaluate to `true` no matter what.
2021-07-25 11:53:04 -04:00
luz paz 5cf3bed0c8 Fix various typos
Follow-up typos found via `codespell -q 3 -S ./thirdparty,*.po,./DONORS.md -L ackward,ang,ans,ba,beng,cas,childs,childrens,dof,doubleclick,fave,findn,hist,inout,leapyear,lod,nd,numer,ois,ony,paket,seeked,sinc,switchs,te,uint`
2021-07-25 07:18:25 -04:00
Rémi Verschelde ff0b5f8fa1
Merge pull request #50809 from akien-mga/iterators-const-references 2021-07-25 12:52:58 +02:00
Rémi Verschelde 2f221e5fd5
Merge pull request #50250 from luzpaz/typos
Fix various typos
2021-07-25 12:38:58 +02:00
Rémi Verschelde ac3322b0af
Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
Rémi Verschelde 2a8a59eac0
Merge pull request #50644 from BastiaanOlij/mobile_compute_to_fragment 2021-07-25 11:58:11 +02:00
luz paz 3564c16cb8
Fix various typos with codespell
Found via `codespell -q 3 -S ./thirdparty,*.po,./DONORS.md -L ackward,ang,ans,ba,beng,cas,childs,childrens,dof,doubleclick,fave,findn,hist,inout,leapyear,lod,nd,numer,ois,ony,paket,seeked,sinc,switchs,te,uint`
2021-07-25 11:21:51 +02:00
Bastiaan Olij 1f69582835 Use fragment shader instead of compute shader for effects for mobile renderer 2021-07-25 13:58:21 +10:00
Aaron Franke 4e6efd1b07
Use C++ iterators for Lists in many situations 2021-07-23 17:38:28 -04:00
bruvzg 618eb27e8b Move `alert` function from `DisplayServer` to `OS`. 2021-07-22 21:50:35 +03:00
Yuri Roubinsky 17b462cc5f Allow using vertex-stage varying in both `fragment` and `light` 2021-07-22 11:55:14 +03:00
Yuri Roubinsky 94a7b04a01 Allow using vertex varying in custom functions under any circumstances 2021-07-22 11:27:13 +03:00
Yuri Roubinsky 39c06604cd Forbid varyings from assigning in custom functions to prevent crashes 2021-07-21 14:12:54 +03:00
Rémi Verschelde 71f8253579
Merge pull request #50489 from Chaosus/shader_varying
Prevent error if varying assigned but not used (push warning instead)
2021-07-21 13:05:08 +02:00
Rémi Verschelde 2273f13fbe
Merge pull request #50686 from Calinou/use-standard-inf-nan-constants
Use the standard C `INFINITY` and `NAN` constants directly
2021-07-21 11:50:26 +02:00
Hugo Locurcio 4bd5e4fd9b
Use the standard C `INFINITY` and `NAN` constants directly
The `Math_INF` and `Math_NAN` defines were just aliases for those
constants, so we might as well use them directly.

Some portions of the code were already using `INFINITY` directly.
2021-07-21 10:41:08 +02:00
Aaron Franke 78b0a7da03
Use is_equal_approx in more places 2021-07-21 00:32:37 -04:00
Rémi Verschelde fa56989818
Merge pull request #50537 from Calinou/improve-shader-error-output-2
Add error marking to the shader error console output
2021-07-20 11:00:17 +02:00
Rémi Verschelde 394191c02f
Merge pull request #50605 from Calinou/tweak-shader-code-style
Use C++11 raw literals for shader code to improve readability
2021-07-20 10:05:13 +02:00
Rémi Verschelde 1ba87f0c82
Merge pull request #50618 from reduz/implement-more-specialization-constants
Implement more rendering options as specialization constants
2021-07-20 08:54:21 +02:00
reduz 9293bc3935 Implement more rendering options as specialization constants
* Shadow quality settings now specialization constant.
* Decal and light projector filters can be set.
* Changing those settings forces re-creation of the pipelines.

These changes should help improve performance related to shadow mapping, and allows improving performance by sacrificing decal and light projector quality.
2021-07-19 21:51:29 -03:00
PouleyKetchoupp 940838c174 One-directional collision layer check for rigid bodies and soft bodies
Check for each body individually if it collides with the other one or
ignores it.

When a body is being ignored, the other body's mass is considered
infinite when applying impulses to avoid extra overlapping.
2021-07-19 17:24:04 -07:00
Rémi Verschelde db010bd71d
Merge pull request #50604 from aaronfranke/float-array-cast
Explicitly cast real_t to float when creating a float array
2021-07-19 22:47:57 +02:00
Marcel Admiraal b8fe576355 Ensure KinematicBodies only interact with other Bodies with matching mask. 2021-07-19 17:03:43 +01:00
Rémi Verschelde 855c7c7414
Merge pull request #50566 from reduz/optimize-stringname-usage
Optimize StringName usage
2021-07-19 15:20:25 +02:00
Hugo Locurcio abc38b8d66
Use C++11 raw literals for shader code to improve readability
In files that have lots of branching, `\t` was replaced with a
tab character instead.
2021-07-19 08:19:50 +02:00
Aaron Franke 09f0596eb2
Explicitly cast to float when creating a float array 2021-07-19 01:21:22 -04:00