Commit graph

1461 commits

Author SHA1 Message Date
Juan Linietsky
69c95f4b4c Reworked signal connection system, added support for Callable and Signal objects and made them default. 2020-02-20 08:24:50 +01:00
Andrii Doroshenko (Xrayez)
fa766265a7 Fix MIMPAMPS typos in constants throughout the engine 2020-02-20 01:31:43 +02:00
Rémi Verschelde
49fec646cb Fix compilation warnings and re-enable werror=yes on Travis
Fix -Wunused-variable, -Wunused-but-set-variable and -Wswitch warnings
raised by GCC 8 and 9.

Fix -Wunused-function, -Wunused-private-field and
-Wtautological-constant-out-of-range-compare raised by Clang.

Fix MSVC 2019 warning C4804 (unsafe use of type 'bool' in comparison
operation).

GCC -Wcpp warnings/Clang -W#warnings (`#warning`) are no longer raising
errors and will thus not abort compilation with `werror=yes`.

Treat glslang headers are system headers to avoid raising warnings.

Re-enables us to build with `werror=yes` on Linux and macOS, thus
catching warnings that would be introduced by new code.

Fixes #36132.
2020-02-18 20:51:25 +01:00
Andrea Catania
79fc7d7d6a Added utility functions to the new NavigationServer:
- Vector3 get_closest_point_to_segment(const Vector3 &p_from, const Vector3 &p_to, const bool &p_use_collision = false);
- Vector3 get_closest_point(const Vector3 &p_point);
- Vector3 get_closest_point_normal(const Vector3 &p_point);
- Object *get_closest_point_owner(const Vector3 &p_point);
2020-02-18 17:12:45 +01:00
Juan Linietsky
3205a92ad8 PoolVector is gone, replaced by Vector
Typed `PoolTypeArray` types are now renamed `PackedTypeArray` and are
sugar for `Vector<Type>`.
2020-02-18 10:10:36 +01:00
Marcel Admiraal
b6c9c6261d Fix VisualServer bindings. 2020-02-17 07:07:28 +01:00
Yuri Roubinsky
a1da8560ee Fix shader crash if duplicated struct members created 2020-02-15 22:19:45 +03:00
Haoyu Qiu
d9b5cbdffa Fixes memory leaks in GdNavigationServer and RasterizerSceneHighEndRD 2020-02-15 14:25:32 +08:00
Marcin Zawiejski
2842c6a88c fix oob write when calling MultiMesh::set_instance_transform 2020-02-14 17:48:48 +01:00
Rémi Verschelde
415a901b68
Merge pull request #36194 from dragmz/dragmz/exit_crash_fix
Fix crash when closing project manager
2020-02-14 14:31:54 +01:00
Rémi Verschelde
79d42069a9
Merge pull request #36208 from akien-mga/warnings
Fix various GCC compilation warnings after Vulkan merge
2020-02-14 13:49:20 +01:00
Rémi Verschelde
d2537407ef Fix various GCC compilation warnings after Vulkan merge
Part of #36132.
2020-02-14 10:02:31 +01:00
clayjohn
b878e5bbe8 Fix error flood with sky background 2020-02-13 16:31:21 -08:00
Marcin Zawiejski
17ea60bb92 fix crash when closing project manager 2020-02-13 22:03:46 +01:00
Yuri Roubinsky
41643e268e Prevent usage 'out' modifier on opaque shader types (textures currently) 2020-02-13 21:02:47 +03:00
Hugo Locurcio
71b74195de
Remove Vulkan debugging prints 2020-02-13 18:50:07 +01:00
Yuri Roubinsky
01de6513ac Fix bugs in shader swizzling 2020-02-13 18:11:21 +03:00
Yuri Roubinsky
ef51726ff3
Merge pull request #36176 from Chaosus/shader_fix_const_crash
Fix shader crash if pass const argument to 'out/inout' parameter
2020-02-13 17:00:37 +03:00
Yuri Roubinsky
516aa46fe5 Fix shader crash if pass const argument to 'out/inout' parameter 2020-02-13 16:15:08 +03:00
Rémi Verschelde
54ac8eaba6 Remove more deprecated methods and code 2020-02-13 12:37:45 +01:00
Juan Linietsky
cf8c679a23 ObjectID converted to a structure, fixes many bugs where used incorrectly as 32 bits. 2020-02-12 14:24:54 -03:00
Yuri Roubinsky
4aa31a2851
Merge pull request #36141 from Chaosus/shader_struct_member_arrays
Added support for arrays as shader struct members
2020-02-12 20:12:05 +03:00
Yuri Roubinsky
6b99bda1e8 Added support for arrays as shader struct members 2020-02-12 17:10:20 +03:00
Rémi Verschelde
0e3d625737 doc: Sync classref with current source
Lots of internal API changes and some docstrings were lost in the conversion.
I manually salvaged many of them but for all the rendering-related ones, an
additional pass is needed.

Added missing enum bindings in BaseMaterial3D and VisualServer.
2020-02-12 12:37:13 +01:00
Haoyu Qiu
4c42fb0eb7 Fixes friend declaration tag mismatch 2020-02-12 17:41:30 +08:00
Yuri Roubinsky
6f162395ff Implementation of 'struct' for shaders 2020-02-11 20:00:42 +03:00
Rémi Verschelde
db81928e08 Vulkan: Move thirdparty code out of drivers, style fixes
- `vk_enum_string_helper.h` is a generated file taken from the SDK
  (Vulkan-ValidationLayers).
- `vk_mem_alloc.h` is a library from GPUOpen:
  https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
2020-02-11 14:08:44 +01:00
Yuri Roubinsky
21e3cc7bb8 [Vulkan] Fix shader crash if using multiple underscores in identifier names 2020-02-11 12:16:22 +01:00
Juan Linietsky
2049dec79e Added normalmap guided roughness mipmap generator, and a global roughness limiter. 2020-02-11 12:16:01 +01:00
Juan Linietsky
bed8980ca5 Re-implemented screen space ambient occlusion 2020-02-11 12:15:46 +01:00
Juan Linietsky
ee1e89f8c0 Modified rendering to use cluster instead of foward 2020-02-11 12:15:27 +01:00
Juan Linietsky
f8b5c5f063 DOF fully implemented, can be edited on the fly. 2020-02-11 12:15:26 +01:00
Juan Linietsky
c05da81268 Mostly working DOF Bokeh 2020-02-11 12:15:04 +01:00
Juan Linietsky
f14defb6f9 WIP CameraEffects implementation (bokeh not working for now) 2020-02-11 12:15:03 +01:00
Juan Linietsky
bd364d1447 Auto exposure re-implemented in Vulkan 2020-02-11 12:14:23 +01:00
Juan Linietsky
b859e69919 -Refactored post processing, re-added glow and added a mix blend mode. 2020-02-11 12:14:21 +01:00
clayjohn
e530f49be2 Fix Specular Blinn in vulkan 2020-02-11 12:10:36 +01:00
Rémi Verschelde
6310354cde Vulkan: Fix false positive in ninepatch axis stretch code
Adapted from e4907e50fe,
supersedes and closes #34704.
2020-02-11 12:09:55 +01:00
Fabian Mathews
ba6d9597cb Fixed error condition check for multimesh instance colors 2020-02-11 12:07:03 +01:00
Rémi Verschelde
4cac20aea3 Fix crash after rebase on the master branch
Apparently rasterizer is not initialized yet when this is called
the first time, so it crashes.
2020-02-11 12:06:20 +01:00
Matias Pierdomenico
0e20e349f1 Changed variable name in shader because it was too generic 2020-02-11 12:06:05 +01:00
Rémi Verschelde
fff4240bb4 Fix code formatting issues and VS compilation
Also temporarily disable multicheck build so that we get a full build
even when there are style issues on Vulkan.

Fixes #33356.
2020-02-11 12:05:19 +01:00
Juan Linietsky
b509c814fc Improved Voxel AO settings. 2020-02-11 12:05:05 +01:00
Juan Linietsky
4949d578f2 Dynamic objects in GIProbes are now affected by propagation parameter. 2020-02-11 12:05:05 +01:00
Juan Linietsky
d6e4b45994 More correctly divide alpha by 8 for mipmaps, fixes voxel overocclusion. 2020-02-11 12:05:04 +01:00
Juan Linietsky
8deb977551 Changed SDF processing to smooth out shadows. 2020-02-11 12:05:03 +01:00
Juan Linietsky
da0457fa29 Several fixes to GIProbes 2020-02-11 12:04:56 +01:00
Juan Linietsky
971ce680f2 Fixes to how anisotropy is handled, makes it work on nvidia. 2020-02-11 12:04:56 +01:00
Juan Linietsky
f4948721e4 Fixed uninitialized memory bug in voxelizer 2020-02-11 12:04:54 +01:00
Juan Linietsky
2af701fa03 Use a different strategy to get textures from GPU (via buffers), for more compatibility. 2020-02-11 12:04:54 +01:00
Juan Linietsky
2c67cc654f AO support for GIProbe (right on time for Godot Sprint!) 2020-02-11 12:03:55 +01:00
Juan Linietsky
76c6f39d99 GIProbe now generates a distance field on bake using CPU, for better compatibility 2020-02-11 12:03:54 +01:00
Juan Linietsky
561b431d85 Dynamic object support for GI Probes (a bit buggy still) 2020-02-11 12:03:52 +01:00
Juan Linietsky
6ee2f5e6b6 More GIProbe work and fixes 2020-02-11 12:03:49 +01:00
bruvzg
26318f3bd1 Fix Vector3 ambiguities and out of bounds init. 2020-02-11 12:03:39 +01:00
Juan Linietsky
fb739f9da7 Fixed display menu visualizations. 2020-02-11 12:03:24 +01:00
Juan Linietsky
965185c765 Better GIProbe quality settings. 2020-02-11 12:03:23 +01:00
Juan Linietsky
fa548b052e Missing proper comparison for depth pre-pass. 2020-02-11 12:03:21 +01:00
Juan Linietsky
acf0f6c8a7 GIProbes working. 2020-02-11 12:03:20 +01:00
Juan Linietsky
4aea9f74e6 Rewritten StreamTexture for better code reuse, added basis universal support 2020-02-11 12:02:36 +01:00
Juan Linietsky
263bebe023 Untested support for compute shaders 2020-02-11 12:02:34 +01:00
Juan Linietsky
b08f13d558 Skeletons are now working. 2020-02-11 12:02:17 +01:00
Rémi Verschelde
e3b76fd040 Merge pull request #32281 from Chaosus/vk_shader_array_varying2
[Vulkan] Implement shader array support for varyings
2020-02-11 12:02:06 +01:00
Yuri Roubinsky
bfa834a78a [Vulkan] Implement shader array support for varyings
Remake of #32175
2020-02-11 12:02:02 +01:00
Rémi Verschelde
d08bf966eb Merge pull request #32280 from Chaosus/vk_shader_switch2
[Vulkan] Implements switch flow control operator in shaders
2020-02-11 12:01:59 +01:00
Yuri Roubinsky
d51b7aafb5 [Vulkan] Implements switch flow control operator in shaders 2020-02-11 12:01:49 +01:00
Juan Linietsky
bc3dbe8240 Properly working instancing, and compatibility fixing for old meshes 2020-02-11 12:01:33 +01:00
Juan Linietsky
123ee5995c Visual GPU profiler and related profiling support in Vulkan. 2020-02-11 12:01:26 +01:00
Juan Linietsky
dc32083681 Proper texture reloading (was broken). 2020-02-11 12:01:25 +01:00
Juan Linietsky
dd3682e5fe Modernized default 3D material, fixes material bugs. 2020-02-11 12:01:24 +01:00
Juan Linietsky
6deffa62fb Several fixes to 3D rendering, and multimesh implementation. 2020-02-11 12:01:22 +01:00
Juan Linietsky
9d7b7f931b Reflection probes working 2020-02-11 12:01:21 +01:00
Juan Linietsky
69e83e4815 Directional light cleanup. 2020-02-11 12:01:21 +01:00
Juan Linietsky
88a7debbbc Directional lights and shadow mapping are functional. 2020-02-11 12:01:20 +01:00
Juan Linietsky
920db604d2 Rewrote large part of rendering, omni and spot shadows now work. 2020-02-11 12:01:18 +01:00
Juan Linietsky
1d871f6226 Tonemapping ported (not all parameters supported yet, only enough to get correct color) 2020-02-11 12:01:09 +01:00
Juan Linietsky
2d6a916835 Environment sky more or less working. 2020-02-11 12:01:05 +01:00
Rémi Verschelde
f7aa7927e7 Merge pull request #31527 from Chaosus/vk_shader_array_support2
[Vulkan] Implemented local shader arrays
2020-02-11 12:00:53 +01:00
Yuri Roubinski
ef50752292 [Vulkan] Implemented local shader arrays 2020-02-11 12:00:46 +01:00
Rémi Verschelde
86d0d88b42 Merge pull request #31526 from Chaosus/shader_bug_vk2
[Vulkan] Fix ternary operator shader compiler expression
2020-02-11 12:00:16 +01:00
Yuri Roubinski
47c0ef3308 [Vulkan] Fix ternary operator shader compiler expression 2020-02-11 12:00:10 +01:00
Yuri Roubinski
95e8375efb [Vulkan] Implemented do/while loops for shaders 2020-02-11 11:59:51 +01:00
Juan Linietsky
8cee7703a6 Yay very basic 3D (only white) finally shows. 2020-02-11 11:59:27 +01:00
Juan Linietsky
449df8f688 Base 3D engine done, still untested, though. 2020-02-11 11:59:25 +01:00
Juan Linietsky
dc3b47f3ab Vulkan/RD rasterizer now does clean exit. 2020-02-11 11:58:16 +01:00
Juan Linietsky
b52a2f3dfa Fix comment 2020-02-11 11:58:11 +01:00
Rémi Verschelde
6289e7d147 Merge pull request #29993 from bruvzg/vulkan
Initial Vulkan support for macOS (MoltenVK) and Windows
2020-02-11 11:57:40 +01:00
bruvzg
b456bfad5c Add runtime GLES2 / Vulkan context selection. 2020-02-11 11:57:34 +01:00
bruvzg
eb48be51db Add static Vulkan loader.
Initial Vulkan support for Windows.
Initial Vulkan support for macOS.
2020-02-11 11:57:11 +01:00
Juan Linietsky
6ecedd1e6c Add a system to properly update materials if the uniform set is gone (likely deleted texture) 2020-02-11 11:53:29 +01:00
Juan Linietsky
4fe3ee1730 Moved the shader source compilation code outside RenderingDevice and Vulkan 2020-02-11 11:53:29 +01:00
Juan Linietsky
c613ead5fa Added a spinlock template as well as a thread work pool class.
Also, optimized shader compilation to happen on threads.
2020-02-11 11:53:29 +01:00
Juan Linietsky
60c7498cee Replaced GLSLang reflection by SPIRV-Reflect, eventually allowing to move GLSLang out. 2020-02-11 11:53:29 +01:00
Juan Linietsky
0586e18449 Custom material support seems complete. 2020-02-11 11:53:29 +01:00
Juan Linietsky
8bbbb97336 Completed material/2D shader support (missing SCREEN_TEXTURE) 2020-02-11 11:53:29 +01:00
Juan Linietsky
50e9befb88 Changes to material required to add custom shaders in RD renderer 2020-02-11 11:53:28 +01:00
Juan Linietsky
ef083a583b Modified light rendering to make it more compatible.
Modified polygon management to make it more compatible with MoltenVK
2020-02-11 11:53:28 +01:00
Juan Linietsky
a3f8ffac63 Use a special sampler for 2D shadows, so they are softer 2020-02-11 11:53:28 +01:00
Juan Linietsky
f04359e70f 2D lighting seems more or less complete. 2020-02-11 11:53:28 +01:00
Juan Linietsky
a7b2ac7bb1 Normalmapping and Specularmapping working in 2D engine
Added support for Sprite, AnimatedSprite and Polygon2D (should add for tileset eventually).
2020-02-11 11:53:28 +01:00