summaryrefslogtreecommitdiff
path: root/servers
AgeCommit message (Collapse)Author
2021-12-03Update space parameters in 2D and 3DPouleyKetchoupp
Clarified space parameters for contacts and added missing ones. List of changes: -Add contact bias to space parameters -Add solver iterations to space parameters, instead of a specific physics server function -Renamed BODY_MAX_ALLOWED_PENETRATION to CONTACT_MAX_ALLOWED_PENETRATION to make it consistent with other contact parameters
2021-12-03Improve RigidDynamicBody contacts in 2D and 3DPouleyKetchoupp
Changed the algorithm for solving contacts to keep previous contacts as long as they are under the max separation threshold to keep contact impulses more consistent and contacts more stable. Also made 2D consistent with 3D and changed some default parameters: -Contact bias is now 0.8 instead of 0.3 to avoid springy contacts -Solver iterations are 16 instead of 8 by default for better stability Performance considerations: Tested with stress tests that include lots of contacts from overlapping bodies. 3D: There's no measurable difference in performance. 2D: Performance is a bit lower (close to 10% slower in extreme cases) The benefit for 2D physics to be much more stable outweighs the slight decrease in performance, and this could be alleviated by changing the algorithm to use jacobians for contact solving to help with cache efficiency and memory allocations.
2021-11-26Merge pull request #55311 from Chaosus/fix_uniform_arrayRémi Verschelde
Fix uniform array alignment to fix a bug
2021-11-26Merge pull request #55325 from Calinou/fsr-use-warn-printRémi Verschelde
2021-11-25Merge pull request #55313 from nekomatata/bounce-energy-stabilityRémi Verschelde
2021-11-25Merge pull request #55310 from Ev1lbl0w/fix_headless_window_errorsRémi Verschelde
2021-11-25Use `WARN_PRINT_ONCE()` for FSR-related warning messagesHugo Locurcio
`print_error()` should generally not be used directly. Also, falling back is best done by printing a warning message instead of an error message.
2021-11-25Fix uniform array alignment to fix a bugYuri Roubinsky
2021-11-25Remove disabled debug code in ClusterBuilderRDHugo Locurcio
2021-11-25Fix RigidDynamicBody gaining momentum with bouncePouleyKetchoupp
Bounce calculation now uses the previous frame's velocity, so it's consistent with the actual motion of the bodies involved and not the yet-to-be-applied forces. When bounce is 1, using the current velocity was causing the new forces (including gravity) to be taken into account, which lead to the bounce velocity to be higher than the falling velocity at the moment of impact, adding more and more energy over time.
2021-11-25Added more empty definitions for headless display serverRicardo Subtil
2021-11-25Revert "Pushes array of uniforms to first place in the buffer"Yuri Roubinsky
2021-11-25[macOS / iOS] Use non atomic operation to store facing bits on MoltenVK.bruvzg
2021-11-24Merge pull request #51679 from Je06jm/fsrRémi Verschelde
AMD FidelityFX Super Resolution
2021-11-24Merge pull request #55281 from bruvzg/mvk_fog_volumesRémi Verschelde
2021-11-24[macOS / iOS] Use storage buffers instead of unsupported images for the ↵bruvzg
volumetric fog on MoltenVK.
2021-11-23Rename `remove()` to `remove_at()` when removing by indexLightning_A
2021-11-23Implemented AMD's FSR as a computer shader for upscaling 3D scenesJe06jm
2021-11-23Prevent return statement from using in block in shader main functionsYuri Roubinsky
2021-11-22Add wakeup() conditional if previous gravity was 0Brennen Green
2021-11-22Add methods to get position from column and line in TextEditYuri Sizov
2021-11-20Add area to moved list when changing monitorable,Marcel Admiraal
and only remove area from query when deleting pair if it was monitorable.
2021-11-19Allow passing non-variable constant to const function param in shadersYuri Roubinsky
2021-11-18Merge pull request #55084 from JFonS/fix_depth_prepassRémi Verschelde
Fix Depth-Prepass transparency mode
2021-11-18Merge pull request #55085 from JFonS/transparency_fixesRémi Verschelde
Fix transparency state initialization
2021-11-18Fix Depth-Prepass transparency modejfons
Add mising bits of implementation and ensure depth-prepass objects are only rendered in the transparency pass.
2021-11-18Merge pull request #55074 from nekomatata/fix-soft-body-gravityRémi Verschelde
2021-11-17Fix applied gravity on soft bodiesPouleyKetchoupp
Regression fix, gravity was accumulated between frames after some changes around area gravity calculation. Also got rid of unused member and method in soft body class.
2021-11-17Fix contact generation with backface collision disabledPouleyKetchoupp
Replaced the previous implementation for backface collision handling (in test_axis function from SAT algorithm) with much simpler logic in the collision generation phase with face shapes, in order to get rid of wrong contacts when backface collision is disabled. Now it just ignores the generated collision if the contact normal is against the face normal, with a threshold to keep edge contacts. Added a special case for soft bodies to invert the collision instead of ignoring it, because for now it's the best solution to avoid soft bodies to go through concave shapes (they use small spheres). This might be replaced with a better algorithm for soft bodies later.
2021-11-17Fix rest_info returning no result with high margin and low motionPouleyKetchoupp
Apply the same logic as in test_body_motion to make sure the minimum allowed depth doesn't filter out all contacts in this case.
2021-11-17Merge pull request #55029 from clayjohn/VULKAN-SRGBRémi Verschelde
Add SHADER_IS_SRGB define to Vulkan renderer
2021-11-16Fix SRGB conversions in Vulkan Rendererclayjohn
2021-11-16Merge pull request #55036 from nekomatata/bvh-fix-updateCamille Mohr-Daurat
Fix physics BVH pairing for teleported or fast moving objects
2021-11-16Fix physics BVH pairing for teleported or fast moving objectsPouleyKetchoupp
Updating the broadphase to find new collision pairs was done after checking for collision islands, so it was working in most cases due to the pairing margin used in the BVH, but in case of teleported objects the narrowphase collision could be skipped. Now it's done before checking for collision islands, so we can ensure that broadphase pairing has been done at the same time as objects are marked as moved so their collision can be checked properly. This issue didn't happen in the Octree/HashGrid because they do nothing on update and trigger pairs directly when objects move instead.
2021-11-16Rename built-in `SGN()` macro to `SIGN()`Hugo Locurcio
This matches the name of the GDScript function (except it's uppercase here).
2021-11-13Fix broken light_compute in mobile rendererYuri Roubinsky
2021-11-12Fix multimesh still drawing when visible instances is zeroBrian Semrau
2021-11-12Use "enum class" for input enumsAaron Franke
2021-11-12Fix transparency state initializationjfons
2021-11-12Fix default_texture_param in shader pipeline to support uniform arraysYuri Roubinsky
2021-11-12Merge pull request #54867 from Chaosus/shader_fix_light_albedoRémi Verschelde
Fix shader crashing when using `ALBEDO` or `ALPHA` in light function
2021-11-11Merge pull request #54810 from nekomatata/area-separate-override-modesCamille Mohr-Daurat
Separate space override modes for gravity/damping in Area
2021-11-11Fix shader crashing when using `ALBEDO` or `ALPHA` in light functionYuri Roubinsky
2021-11-10Add raycast options to hit when starting inside / hit back facesPouleyKetchoupp
Makes the results consistent for all shape types with options to set the desired behavior.
2021-11-10Merge pull request #54783 from ator-dev/fix-override-exposureRémi Verschelde
2021-11-10Fix errors in CharacterBody when floor is destroyed or removedPouleyKetchoupp
In all physics servers, body_get_direct_state() now silently returns nullptr when the body has been already freed or is removed from space, so the client code can detect this state and invalidate the body rid. In 2D, there is no change in behavior (just no more errors). In 3D, the Bullet server returned a valid direct body state when the body was removed from the physics space, but in this case it didn't make sense to use the information from the body state.
2021-11-09Separate space override modes for gravity/damping in AreaPouleyKetchoupp
Also make inspector clearer for gravity point properties.
2021-11-09Merge pull request #54736 from Chaosus/shader_fix_uniformRémi Verschelde
2021-11-08Merge pull request #54134 from nekomatata/body-center-of-mass-localCamille Mohr-Daurat
Expose local center of mass in physics servers
2021-11-08Expose local center of mass in physics serversPouleyKetchoupp
Center of mass in body's local space is more useful than the transformed one in some cases, like drawing its position for debug. It's especially useful to get the generated local center of mass when in auto mode (by default). Physics Server BODY_PARAM_CENTER_OF_MASS: Now always returns the local center of mass, instead of setting a local center of mass and getting a transformed one. This causes compatibility breaking, but it makes more sense for the parameter to be consistent between getter and setter. Direct Body State: There are now two properties, because both of them can be useful in different situations. center_of_mass: relative position in global coordinates (same as before) center_of_mass_local: position in local coordinates