Commit Graph

99 Commits

Author SHA1 Message Date
201d606b3d Addition of SDFGI for open world global illumination
Move GI to a deferred pass
2020-06-26 11:06:48 -03:00
5e62a2ee75 Vulkan: Initialize struct members on declaration
Supersedes and closes #38945.
2020-06-03 13:18:22 +02:00
4f23215395 Merge pull request #38750 from madmiraal/fix-vulkan-uninitialized-warning
Silence mulitple may be used uninitialized warnings in RenderingDeviceVulkan::uniform_set_create()
2020-05-15 18:02:56 +02:00
8f0b3392c3 Silence mulitple may be used uninitialized warnings in
RenderingDeviceVulkan::uniform_set_create()
2020-05-15 11:48:06 +01:00
07bc4e2f96 Style: Enforce separation line between function definitions
I couldn't find a tool that enforces it, so I went the manual route:
```
find -name "thirdparty" -prune \
  -o -name "*.cpp" -o -name "*.h" -o -name "*.m" -o -name "*.mm" \
  -o -name "*.glsl" > files
perl -0777 -pi -e 's/\n}\n([^#])/\n}\n\n\1/g' $(cat files)
misc/scripts/fix_style.sh -c
```

This adds a newline after all `}` on the first column, unless they
are followed by `#` (typically `#endif`). This leads to having lots
of places with two lines between function/class definitions, but
clang-format then fixes it as we enforce max one line of separation.

This doesn't fix potential occurrences of function definitions which
are indented (e.g. for a helper class defined in a .cpp), but it's
better than nothing. Also can't be made to run easily on CI/hooks so
we'll have to be careful with new code.

Part of #33027.
2020-05-14 16:54:55 +02:00
0be6d925dc Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks
Which means that reduz' beloved style which we all became used to
will now be changed automatically to remove the first empty line.

This makes us lean closer to 1TBS (the one true brace style) instead
of hybridating it with some Allman-inspired spacing.

There's still the case of braces around single-statement blocks that
needs to be addressed (but clang-format can't help with that, but
clang-tidy may if we agree about it).

Part of #33027.
2020-05-14 16:54:55 +02:00
1bea8e1eac New lightmapper
-Added LocalVector (needed it)
-Added stb_rect_pack (It's pretty cool, we could probably use it for other stuff too)
-Fixes and changes all around the place
-Added library for 128 bits fixed point (required for Delaunay3D)
2020-05-10 15:59:09 -03:00
69de7ce38c Style: clang-format: Disable AllowShortCaseLabelsOnASingleLine
Part of #33027.
2020-05-10 13:13:54 +02:00
e956e80c1f Style: clang-format: Disable AllowShortIfStatementsOnASingleLine
Part of #33027, also discussed in #29848.

Enforcing the use of brackets even on single line statements would be
preferred, but `clang-format` doesn't have this functionality yet.
2020-05-10 13:12:16 +02:00
b5caa2e8b0 [Vulkan] Use VK_LAYER_KHRONOS_validation instead of deprecated VK_LAYER_LUNARG_standard_validation. 2020-04-26 16:47:25 +03:00
f8ef38efed Add proper type to most public API uses of Array 2020-04-21 12:16:45 -03:00
ae09b55a19 Exposed RenderingDevice to script API
Also added an easier way to load native GLSL shaders.

Extras:

Had to fix no-cache for subresources in resource loader, it was not properly working, making shaders not properly reload.

Note:

The precommit hooks are broken because they don't seem to support enums from one class being used in another.
Feel free to fix this after merging this PR.
2020-04-20 21:21:58 -03:00
49d0c6a5c9 Ability to create local RenderingDevice instances. 2020-04-18 21:47:17 -03:00
943ec79859 Fixes leaks in ResourceCache, Vulkan and X11 2020-04-15 10:27:57 +02:00
84142f6a5f Merge pull request #37881 from qarmin/leak_vulkan
Fixes leaks with Vulkan device and instance
2020-04-14 21:45:48 +02:00
2ab4b054e0 Fixes leaks with Vulkan device and instance 2020-04-14 20:15:48 +02:00
5944eb6e7f Implement decals
Also implemented decal atlas, so projectors and other stuff can be added.
Sidenote: Had to make RID hashable, so some unrelated includes changed
in order to include it in hashfuncs.h
2020-04-14 11:13:34 -03:00
a57dc398db Implement MSAA 2020-04-12 15:33:57 -03:00
9dc19f7619 Merge pull request #37808 from reduz/port-effects-to-compute
Moved most of the effect code to compute.
2020-04-11 23:38:05 -03:00
d81911490b Moved most of the effect code to compute.
Simplifies it and improves performance.
Improves image barrier handling per mipmap on RenderingDeviceVulkan
2020-04-11 19:44:07 -03:00
d06f8ef75a Shows proper scene render time in editor info
Also fixed GPU profiler, which was not working on nvidia hardware.
2020-04-10 14:19:30 -03:00
802bbe87ad Fix extra warnings in Android build 2020-04-10 11:06:11 +02:00
23d786d6fb Merge pull request #36919 from nekomatata/android-vulkan-rendering
Vulkan rendering support on Android
2020-04-09 00:16:26 +02:00
e167af3737 Display Server support 2020-04-08 01:47:09 +02:00
597ec5dbf8 Merge pull request #37586 from qarmin/vulkan_allocator_leak
Fix leak with Vulkan allocator
2020-04-07 09:16:02 +02:00
befbdda7f2 Merge pull request #37635 from qarmin/leak_vertex
Fixed leak with vertex_formats
2020-04-06 21:32:25 +02:00
f4301b7259 Fixed leak with vertex_formats 2020-04-06 18:07:31 +02:00
61342e5831 Vulkan: Use VK_NULL_HANDLE for handles, fixes 32-bit builds
Some Vulkan types are defined as "non dispatchable handles" and use a
different typedef on 32-bit and 64-bit systems (struct pointer on
64-bit, `uint64_t` otherwise).

0e78ffd1dc/include/vulkan/vulkan_core.h (L59-L65)

Contrarily to `NULL`, `nullptr` can't be converted to `uint64_t` so
build was now failing on 32-bit after converting the codebase from
using `NULL` to `nullptr`.

Fixes #37620.
2020-04-06 10:21:32 +02:00
a0832e6f5e Fix leak with Vulkan allocator 2020-04-04 20:16:48 +02:00
af424b1c7c Vulkan rendering for Android 2020-04-03 11:18:59 +02:00
95a1400a2a Replace NULL with nullptr 2020-04-02 13:38:00 +02:00
cd4e46ee65 SCons: Format buildsystem files with psf/black
Configured for a max line length of 120 characters.

psf/black is very opinionated and purposely doesn't leave much room for
configuration. The output is mostly OK so that should be fine for us,
but some things worth noting:

- Manually wrapped strings will be reflowed, so by using a line length
  of 120 for the sake of preserving readability for our long command
  calls, it also means that some manually wrapped strings are back on
  the same line and should be manually merged again.

- Code generators using string concatenation extensively look awful,
  since black puts each operand on a single line. We need to refactor
  these generators to use more pythonic string formatting, for which
  many options are available (`%`, `format` or f-strings).

- CI checks and a pre-commit hook will be added to ensure that future
  buildsystem changes are well-formatted.
2020-03-30 09:05:53 +02:00
a6f3bc7c69 Renaming of servers for coherency.
VisualServer -> RenderingServer
PhysicsServer -> PhysicsServer3D
Physics2DServer -> PhysicsServer2D
NavigationServer -> NavigationServer3D
Navigation2DServer -> NavigationServer2D

Also renamed corresponding files.
2020-03-27 15:21:27 -03:00
9e08742de8 Added a Window node, and made it the scene root.
Still a lot of work to do.
2020-03-26 15:49:38 +01:00
f8a79a97c7 Effective DisplayServer separation, rename X11 -> LinuxBSD 2020-03-26 15:49:34 +01:00
cb282c6ef0 Style: Set clang-format Standard to Cpp11
For us, it practically only changes the fact that `A<A<int>>` is now
used instead of the C++03 compatible `A<A<int> >`.

Note: clang-format 10+ changed the `Standard` arguments to fully
specified `c++11`, `c++14`, etc. versions, but we can't use `c++17`
now if we want to preserve compatibility with clang-format 8 and 9.
`Cpp11` is still supported as deprecated alias for `Latest`.
2020-03-17 07:36:24 +01:00
f70b5fa30c Revert "Enhanced physical device selection to use device type and available memory in relation to issue #35397"
This reverts commit 4f3006e5ac.
2020-03-10 08:58:34 +01:00
46230d253b Initializes VulkanContext::queue_props to NULL 2020-03-10 14:36:39 +08:00
d99bea20dc More explicit error messages when vulkan calls return errors 2020-03-09 13:25:54 +01:00
398f714dfc Merge pull request #36792 from akien-mga/vulkan-better-debug-prints
Vulkan: Use Godot print macros matching MessageSeverity flag
2020-03-04 20:31:02 +01:00
3625b057af Vulkan: Use Godot print macros matching MessageSeverity flag
Otherwise any verbose/info/warning debug message from Vulkan would
raise an error, confusing users about the severity of the message.

Cf. #36185, #36790.
2020-03-04 15:02:49 +01:00
a0e33e17fb Merge pull request #36733 from qarmin/static_analyzer_fixes
Fixes bugs found by Sonarcloud and Coverity
2020-03-04 13:41:38 +01:00
2856740e6b Merge pull request #36385 from kuruk-mm/some_static_asserts
Change when we can ERR_FAIL_COND and ERR_FAIL_CONV_V to static_assert
2020-03-04 13:18:48 +01:00
98f88a4102 Merge pull request #36585 from disks86/master
Enhanced physical device selection
2020-03-04 13:00:52 +01:00
c933eb7acc Change when we can ERR_FAIL_COND and ERR_FAIL_CONV_V to static_assert 2020-03-04 04:44:47 -03:00
1f209bfc41 Fixes bugs found by Sonarcloud and Coverity 2020-03-02 19:17:20 +01:00
771e66b080 Adds null check of pMessageIdName 2020-02-29 18:26:38 +08:00
4f3006e5ac Enhanced physical device selection to use device type and available memory in relation to issue #35397 2020-02-28 21:02:29 -05:00
3a7f1300ee Merge pull request #36186 from Calinou/remove-vulkan-debugging-prints
Remove Vulkan debugging prints
2020-02-27 21:11:24 +01:00
da3a504216 Merge pull request #36454 from akien-mga/vulkan-workaround-32-bit-lib-error
Vulkan: Work around false positive on 64-bit Linux w/ 32-bit ICDs
2020-02-22 16:28:48 +01:00