Commit Graph

2620 Commits

Author SHA1 Message Date
Fabio Alessandrelli 179e6fabb4 Fix RasterizerDummy, override, cleanup.
Add override keyword to RasterizerDummy methods.
Plus cleanup unused methods, remove virtual keyword.
2020-09-18 18:43:15 +02:00
Rémi Verschelde 01185acecb
NetBSD: Implement OS_Unix::get_executable_path()
Same implementation as OpenBSD seems to work fine.
2020-09-18 11:54:18 +02:00
Rémi Verschelde 5f4d64f4f3
Linux/BSD: Fix support for NetBSD
Add __NetBSD__ to `platform_config.h` so that it can find `alloca`
and use the proper `pthread_setname_np` format.

Rename RANDOM_MAX to avoid conflict with NetBSD stdlib.

Fixes .
2020-09-18 10:27:55 +02:00
Marcel Admiraal 4b3aec50c0 Replace calls to gmtime with gmtime_r and localtime with localtime_r. 2020-09-04 12:22:43 +01:00
bruvzg 80b8eff6aa
[Complex Test Layouts] Change `String` to use UTF-32 encoding on all platforms. 2020-09-03 19:56:24 +03:00
Marcel Admiraal f6ad1954f7 Ensure header guards enclose entire header. 2020-09-03 11:29:42 +01:00
clayjohn 8da3c739bf Add high quality glow mode 2020-08-31 23:16:41 -07:00
Rémi Verschelde 33b2070d2e Remove obsolete GLES2 backend code
This code currently isn't compiled (and cannot compile).

We plan to re-add OpenGL ES-based renderer(s) in Godot 4.0 alongside Vulkan
(probably ES 3.0, possibly also a low-end ES 2.0), but the code will be quite
different so it's not relevant to keep this old Godot 3.2 code.

The `drivers/gles2` code from the `3.2` branch can be used as a reference for
a potential new implementation.
2020-08-13 10:04:53 +02:00
bruvzg d6e3a8a137
[macOS] Fix crash on failed `fork`. 2020-08-11 17:45:09 +03:00
John Zulauf 98d677ef26 Cause buffer_update to emit error if called during compute/draw list
Add error message to buffer update if a compute or draw list is active.
2020-07-29 14:13:37 -06:00
Rémi Verschelde 3b340985cc SCons: Support linking system Vulkan loader while using vendored VMA 2020-07-26 13:20:08 +02:00
Sergey Minakov fe60815d66 iOS SCons: static Vulkan binary usage
Add VMA to iphone platform Use linkflag for iphone building to enforce static linking. Works fine with dynamic '.framework' library
Updated xcode project to use '.a' static library
2020-07-25 21:55:25 +02:00
Rémi Verschelde dfdfee04df Vulkan: Fix struct init for VkClearAttachment
The changes from  were not sufficient to fix , as VkClearAttachment
still had uninitialized member structs in its VkClearColor member struct.

The struct rabbit hole goes deep and trying to do validation as done in 
doesn't appear realistic.
2020-07-22 16:31:22 +02:00
Rémi Verschelde f54fd5ac10
Merge pull request from madmiraal/fix-38829
Fix may be used unitialized warnings in _render_pass_create() and  _draw_list_insert_clear_region().
2020-07-22 16:12:54 +02:00
Rémi Verschelde a5fb445121
Merge pull request from asmaloney/spelling
Fix spelling & grammar in comments, docs, and messages
2020-07-21 22:14:04 +02:00
Andy Maloney 4dda62f591 Fix spelling & grammar in comments, docs, and messages 2020-07-21 15:17:23 -04:00
Andy Maloney 8b949918b1 Fix spelling of a var, a struct, and message output 2020-07-17 12:02:06 -04:00
bruvzg 996910b627
Add error messages if Vulkan init failed, prevent Vulkan context freeing uninitialized device and instance. 2020-07-13 19:24:21 +03:00
Rémi Verschelde dcd11faad3
Merge pull request from madmiraal/add-override-keywords
Add override keywords.
2020-07-10 21:04:23 +02:00
Yuri Roubinsky ecb5f7ea23 Added 'fma' function to shader language 2020-07-10 19:58:03 +03:00
Marcel Admiraal 26fcf2b04c Add override keywords. 2020-07-10 13:56:54 +01:00
Johan Rastén e7e632cbed Handle 16 bit PNG files in sRGB format 2020-07-09 21:01:06 +02:00
PouleyKetchoupp e19a3df98f Fixed mesh data access errors in GLES2
1. Removed errors in mesh_surface_get_array as it's supported now
2. More accurate errors in mesh_surface_get_blend_shapes
2020-07-09 13:41:57 +02:00
Nathan Franke 09aeb7706b
Fix Directory Open Check 2020-07-06 11:32:05 -05:00
Rémi Verschelde 9000e59650
Merge pull request from akien-mga/environment-code-cleanup
Environment: Refactor code for readability + more
2020-07-01 16:28:48 +02:00
Rémi Verschelde a8a2769bb6
Merge pull request from aaronfranke/string-64bit
Make all String integer conversion methods be 64-bit
2020-07-01 16:01:05 +02:00
Rémi Verschelde 372136fe75 Environment: Refactor code for readability + more
- Makes all boolean setters/getters consistent.
- Fixes bug where `glow_hdr_bleed_scale` was not used.
- Split CameraEffects to their own source file.
- Reorder all Environment method and properties declarations,
  definitions and bindings to be consistent with each other
  and with the order of property bindings.
- Bind missing enum values added with SDFGI.
- Remove unused SDFGI enhance_ssr boolean.
- Sync doc changes after SDFGI merge and other misc changes.
2020-07-01 14:44:45 +02:00
Yuri Roubinsky c554d9e556 Added const qualifier support for function arguments in shaders 2020-07-01 12:55:00 +03:00
Fabio Alessandrelli eb2121d513 Fix RasterizerDummy after SDF GI changes.
Re-enable JavaScript CI.
2020-06-30 21:05:49 +02:00
Juan Linietsky 201d606b3d Addition of SDFGI for open world global illumination
Move GI to a deferred pass
2020-06-26 11:06:48 -03:00
Rémi Verschelde 4b5b60de85
Merge pull request from touilleMan/issue-38925
Unify OS.get_system_time_* and OS.get_unix_time
2020-06-15 23:57:16 +02:00
Yuri Roubinsky 1a7e101324 Fix shader's length() function parsing in expressions 2020-06-03 19:39:48 +03:00
Rémi Verschelde 5e62a2ee75 Vulkan: Initialize struct members on declaration
Supersedes and closes .
2020-06-03 13:18:22 +02:00
Aaron Franke bb8aa107fd
Remove 32-bit String to_int method 2020-06-03 00:03:34 -04:00
Emmanuel Leblond c6de3872f9
Remove OS.get_system_time_secs/get_system_time_msecs and change OS.get_unix_time return type to double 2020-05-31 14:19:31 +02:00
Nathan Franke e48fb01d59
fix(Directory): remove erasing print
Fixes 
2020-05-28 05:46:01 -05:00
CJ DiMaggio 66a294d459 Delete DummyMesh when RasterizerStorageDummy is freed 2020-05-20 21:23:37 -04:00
Marcel Admiraal 19d3e17f01 Fix may be used unitialized warnings in _render_pass_create()
and  _draw_list_insert_clear_region()
2020-05-19 04:14:57 +01:00
Fabio Alessandrelli 90c7102b51 Move mix_rate, ouput_latency to AudioDriverManager
Each driver used to define the (same) project settings values
`audio/mix_rate` and `audio/output_latency`, but the setting names are
not driver specific.
Overriding is still possible via platform tags.
2020-05-18 13:02:06 +02:00
Rémi Verschelde 4f23215395
Merge pull request 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
Marcel Admiraal 8f0b3392c3 Silence mulitple may be used uninitialized warnings in
RenderingDeviceVulkan::uniform_set_create()
2020-05-15 11:48:06 +01:00
Rémi Verschelde 0ee0fa42e6 Style: Enforce braces around if blocks and loops
Using clang-tidy's `readability-braces-around-statements`.
https://clang.llvm.org/extra/clang-tidy/checks/readability-braces-around-statements.html
2020-05-14 21:57:34 +02:00
Rémi Verschelde 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 .
2020-05-14 16:54:55 +02:00
Rémi Verschelde 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 .
2020-05-14 16:54:55 +02:00
Rémi Verschelde dcd1151d77 Enforce use of bool literals instead of integers
Using clang-tidy's `modernize-use-bool-literals`.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-bool-literals.html
2020-05-14 13:45:01 +02:00
Rémi Verschelde 1f6f364a56 Port member initialization from constructor to declaration (C++11)
Using `clang-tidy`'s `modernize-use-default-member-init` check and
manual review of the changes, and some extra manual changes that
`clang-tidy` failed to do.

Also went manually through all of `core` to find occurrences that
`clang-tidy` couldn't handle, especially all initializations done
in a constructor without using initializer lists.
2020-05-14 10:01:56 +02:00
Fabio Alessandrelli 2dbd227c9a Fix DummyRenderer after new lightmapper merge. 2020-05-11 18:26:06 +02:00
Rémi Verschelde 32133a11b5
Merge pull request from reduz/new-lightmapper
New GPU lightmapper
2020-05-11 13:45:48 +02:00
Juan Linietsky 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
Fabio Alessandrelli 11a81341fa Restore RasterizerDummy. 2020-05-10 18:19:23 +02:00
Rémi Verschelde 69de7ce38c Style: clang-format: Disable AllowShortCaseLabelsOnASingleLine
Part of .
2020-05-10 13:13:54 +02:00
Rémi Verschelde e956e80c1f Style: clang-format: Disable AllowShortIfStatementsOnASingleLine
Part of , also discussed in .

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
Pedro J. Estébanez f7706659b5 Improve shader time roll over
- Resurrect it for GL ES 2
- Add it to the Vulkan rasterizer
- Expose the setting from the `RenderingServer`, since it does not belong in any specific rasterizer
2020-04-30 11:42:11 +02:00
Rémi Verschelde 0bf6a86db4
Merge pull request from Chaosus/shader_fix_const_order2
Fix shader constant sorting
2020-04-29 09:41:34 +02:00
bruvzg b5caa2e8b0
[Vulkan] Use `VK_LAYER_KHRONOS_validation` instead of deprecated `VK_LAYER_LUNARG_standard_validation`. 2020-04-26 16:47:25 +03:00
Rémi Verschelde 2074b43c6f
Merge pull request from Calinou/dummy-loader-add-extensions
Add more extensions to the dummy texture loader
2020-04-23 12:05:38 +02:00
Juan Linietsky f8ef38efed Add proper type to most public API uses of Array 2020-04-21 12:16:45 -03:00
Juan Linietsky 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
Rémi Verschelde b4855f5c83
Merge pull request from clayjohn/GLES2-depth-buffer
Use proper depth buffer format for rgba shadows
2020-04-20 23:47:24 +02:00
clayjohn 123dd390e4 Use proper depth buffer format for rgba shadows 2020-04-20 11:58:59 -07:00
Juan Linietsky 49d0c6a5c9 Ability to create local RenderingDevice instances. 2020-04-18 21:47:17 -03:00
qarmin 943ec79859 Fixes leaks in ResourceCache, Vulkan and X11 2020-04-15 10:27:57 +02:00
Rémi Verschelde 84142f6a5f
Merge pull request from qarmin/leak_vulkan
Fixes leaks with Vulkan device and instance
2020-04-14 21:45:48 +02:00
qarmin 2ab4b054e0 Fixes leaks with Vulkan device and instance 2020-04-14 20:15:48 +02:00
Juan Linietsky 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
Juan Linietsky a57dc398db Implement MSAA 2020-04-12 15:33:57 -03:00
Juan Linietsky 9dc19f7619
Merge pull request from reduz/port-effects-to-compute
Moved most of the effect code to compute.
2020-04-11 23:38:05 -03:00
Juan Linietsky 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
Yuri Roubinsky bc30f541e6 Fix shader constant sorting 2020-04-11 12:40:17 +03:00
Juan Linietsky 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
PouleyKetchoupp 802bbe87ad Fix extra warnings in Android build 2020-04-10 11:06:11 +02:00
Rémi Verschelde 23d786d6fb
Merge pull request from nekomatata/android-vulkan-rendering
Vulkan rendering support on Android
2020-04-09 00:16:26 +02:00
Hugo Locurcio 3007c7e2a3 Add more extensions to the dummy texture loader
This should make headless exporting work in projects using textures
in any format.

Error messages should no longer appear when running a project
that used image formats that were previously not present in the list.
2020-04-08 16:55:20 +02:00
PouleyKetchoupp e167af3737 Display Server support 2020-04-08 01:47:09 +02:00
clayjohn 3db61ce91c Avoid material rebinds when using skeletons 2020-04-07 10:34:35 -07:00
Rémi Verschelde 597ec5dbf8
Merge pull request from qarmin/vulkan_allocator_leak
Fix leak with Vulkan allocator
2020-04-07 09:16:02 +02:00
Rémi Verschelde befbdda7f2
Merge pull request from qarmin/leak_vertex
Fixed leak with vertex_formats
2020-04-06 21:32:25 +02:00
qarmin f4301b7259 Fixed leak with vertex_formats 2020-04-06 18:07:31 +02:00
Rémi Verschelde 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 .
2020-04-06 10:21:32 +02:00
qarmin a0832e6f5e Fix leak with Vulkan allocator 2020-04-04 20:16:48 +02:00
PouleyKetchoupp af424b1c7c Vulkan rendering for Android 2020-04-03 11:18:59 +02:00
lupoDharkael 95a1400a2a Replace NULL with nullptr 2020-04-02 13:38:00 +02:00
Pedro J. Estébanez 741f8d9bec Fix res:// trimmed to s:// on Windows 2020-04-01 10:30:22 +02:00
Rémi Verschelde e5033d3952 doc: Sync classref with DisplayServer/Window changes 2020-03-31 11:56:58 +02:00
Rémi Verschelde 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
Juan Linietsky 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
Juan Linietsky 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
Juan Linietsky f8a79a97c7 Effective DisplayServer separation, rename X11 -> LinuxBSD 2020-03-26 15:49:34 +01:00
Rémi Verschelde cbbe0743a9
Merge pull request from RajatGoswami/missing-include-guards
Adding missing include guards to header files identified by LGTM
2020-03-23 11:17:24 +01:00
Rajat Goswami 2ecf928ae3 Adding missing include guards to header files identified by LGTM.
This addresses the issue 
2020-03-23 04:52:36 -04:00
Rémi Verschelde ed9a0d0484
Merge pull request from clayjohn/VULKAN-sky-shader
Implement Sky Shaders
2020-03-22 20:03:35 +01:00
clayjohn 61a74739ca Working sky shader implementation 2020-03-21 20:43:44 -07:00
Aaron Franke 7dbe8b65ae
Make file formatting comply with POSIX and Unix standards
UTF-8, LF, no BOM, and newlines at the end of files
2020-03-21 17:41:03 -04:00
Bastiaan Olij c3fee7ba6c Add shader based background mode 2020-03-19 18:30:39 -07:00
Rémi Verschelde 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
Rémi Verschelde 05d9d1c0e7
Merge pull request from Faless/js/restore_and_ci
Resurrect HTML5 platform, add it to CI (no rendering yet)
2020-03-11 07:31:16 +01:00
Rémi Verschelde 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
Haoyu Qiu 46230d253b Initializes VulkanContext::queue_props to NULL 2020-03-10 14:36:39 +08:00
Rémi Verschelde 478337c412
Merge pull request from Faless/debugger/threads_and_profilers
ScriptDebugger refactor, threading, profilers.
2020-03-09 19:08:07 +01:00
PouleyKetchoupp d99bea20dc More explicit error messages when vulkan calls return errors 2020-03-09 13:25:54 +01:00
Fabio Alessandrelli b8ddaf9c33 Refactor ScriptDebugger.
EngineDebugger is the new interface to access the debugger.
It tries to be as agnostic as possible on the data that various
subsystems can expose.

It allows 2 types of interactions:

- Profilers:
  A subsystem can register a profiler, assigning it a unique name.
  That name can be used to activate the profiler or add data to it.
  The registered profiler can be composed of up to 3 functions:
    - Toggle: called when the profiler is activated/deactivated.
    - Add: called whenever data is added to the debugger
      (via `EngineDebugger::profiler_add_frame_data`)
    - Tick: called every frame (during idle), receives frame times.

- Captures: (Only relevant in remote debugger for now)
  A subsystem can register a capture, assigning it a unique name.
  When receiving a message, the remote debugger will check if it starts
  with `[prefix]:` and call the associated capture with name `prefix`.

Port MultiplayerAPI, Servers, Scripts, Visual, Performance to the new
profiler system.

Port SceneDebugger and RemoteDebugger to the new capture system.
The LocalDebugger also uses the new profiler system for scripts
profiling.
2020-03-08 12:36:39 +01:00
Fabio Alessandrelli aa8c825855 OS_Javascript temporarly uses dummy rasterizer. 2020-03-08 03:35:13 +01:00
Fabio Alessandrelli 7b22ca339f Restore dummy rasterizer
Not all functionalities are back, but it compiles and runs minimal
project.
2020-03-08 01:55:27 +01:00
Rémi Verschelde 42595085a5
Merge pull request from RandomShaper/rework_semaphore
Drop old semaphore implementation
2020-03-05 16:33:45 +01:00
Rémi Verschelde 398f714dfc
Merge pull request from akien-mga/vulkan-better-debug-prints
Vulkan: Use Godot print macros matching MessageSeverity flag
2020-03-04 20:31:02 +01:00
Rémi Verschelde 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. , .
2020-03-04 15:02:49 +01:00
Rémi Verschelde a0e33e17fb
Merge pull request from qarmin/static_analyzer_fixes
Fixes bugs found by Sonarcloud and Coverity
2020-03-04 13:41:38 +01:00
Rémi Verschelde f83f1d7c9b
Merge pull request from RandomShaper/imvu/improve_drives_ux
Improve UX of drive letters
2020-03-04 13:19:55 +01:00
Rémi Verschelde 2856740e6b
Merge pull request 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
Rémi Verschelde 98f88a4102
Merge pull request from disks86/master
Enhanced physical device selection
2020-03-04 13:00:52 +01:00
Mateo Dev .59 c933eb7acc Change when we can ERR_FAIL_COND and ERR_FAIL_CONV_V to static_assert 2020-03-04 04:44:47 -03:00
Mateo Dev .59 8a88637705 os: execute parse the command output from utf8 2020-03-03 21:58:50 -03:00
Pedro J. Estébanez 9a3a2b03b8 Drop old semaphore implementation
- Removed platform-specific implementations.
- Now all semaphores are in-object, unless they need to be conditionally created.
- Similarly to `Mutex`, provided a dummy implementation for when `NO_THREADS` is defined.
- Similarly to `Mutex`, methods are made `const` for easy use in such contexts.
- Language bindings updated: `wait()` and `post()` are now `void`.
- Language bindings updated: `try_wait()` added.

Bonus:
- Rewritten the `#ifdef` in `mutex.h` to meet the code style.
2020-03-03 13:20:42 +01:00
Pedro J. Estébanez aee586553a Improve UX of drive letters
Namely, move the drive dropdown to just the left of the path text box and don't include the former
in the latter.

This improves the UX on Windows.

In the UNIX case, since its concept of drives is (ab)used to provide shortcuts to useful paths, its
dropdown is kept at the original location.
2020-03-03 10:38:34 +01:00
qarmin 1f209bfc41 Fixes bugs found by Sonarcloud and Coverity 2020-03-02 19:17:20 +01:00
Haoyu Qiu 771e66b080 Adds null check of pMessageIdName 2020-02-29 18:26:38 +08:00
Christopher Joseph Dean Schaefer 4f3006e5ac Enhanced physical device selection to use device type and available memory in relation to issue 2020-02-28 21:02:29 -05:00
Juan Linietsky 475e4ea67b Removed interactive loader, added proper thread loading. 2020-02-28 11:20:45 -03:00
Rémi Verschelde b7b3978684
Merge pull request from RandomShaper/rework_mutex
Reimplement `Mutex` with C++'s `<mutex>` (plus more)
2020-02-28 00:26:01 +01:00
Rémi Verschelde 3a7f1300ee
Merge pull request from Calinou/remove-vulkan-debugging-prints
Remove Vulkan debugging prints
2020-02-27 21:11:24 +01:00
Pedro J. Estébanez 18fbdbb456 Reimplement Mutex with C++'s <mutex>
Main:
- It's now implemented thanks to `<mutex>`. No more platform-specific implementations.
- `BinaryMutex` (non-recursive) is added, as an alternative for special cases.
- Doesn't need allocation/deallocation anymore. It can live in the stack and be part of other classes.
- Because of that, it's methods are now `const` and the inner mutex is `mutable` so it can be easily used in `const` contexts.
- A no-op implementation is provided if `NO_THREADS` is defined. No more need to add `#ifdef NO_THREADS` just for this.
- `MutexLock` now takes a reference. At this point the cases of null `Mutex`es are rare. If you ever need that, just don't use `MutexLock`.
- Thread-safe utilities are therefore simpler now.

Misc.:
- `ScopedMutexLock` is dropped and replaced by `MutexLock`, because they were pretty much the same.
- Every case of lock, do-something, unlock is replaced by `MutexLock` (complex cases where it's not straightfoward are kept as as explicit lock and unlock).
- `ShaderRD` contained an `std::mutex`, which has been replaced by `Mutex`.
2020-02-26 20:40:10 +01:00
Juan Linietsky 33b5c57199 Variant: Added 64-bit packed arrays, renamed Variant::REAL to FLOAT.
- Renames PackedIntArray to PackedInt32Array.
- Renames PackedFloatArray to PackedFloat32Array.
- Adds PackedInt64Array and PackedFloat64Array.
- Renames Variant::REAL to Variant::FLOAT for consistency.

Packed arrays are for storing large amount of data and creating stuff like
meshes, buffers. textures, etc. Forcing them to be 64 is a huge waste of
memory. That said, many users requested the ability to have 64 bits packed
arrays for their games, so this is just an optional added type.

For Variant, the float datatype is always 64 bits, and exposed as `float`.

We still have `real_t` which is the datatype that can change from 32 to 64
bits depending on a compile flag (not entirely working right now, but that's
the idea). It affects math related datatypes and code only.

Neither Variant nor PackedArray make use of real_t, which is only intended
for math precision, so the term is removed from there to keep only float.
2020-02-25 12:55:53 +01:00
Rémi Verschelde da3a504216
Merge pull request 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
Juan Linietsky 54dfdd1cdb Correct condition wrongly converted to ERR_FAIL_COND_MSG
Fixes debugging of giprobes not working, likely other stuff
2020-02-22 11:36:26 -03:00
Rémi Verschelde e596439497 Vulkan: Work around false positive on 64-bit Linux w/ 32-bit ICDs
In the vast majority of cases, this will be a false positive error
thrown by Vulkan-Loader when a Linux system has Vulkan ICDs for both
32-bit and 64-bit. The error is of the form:
```
ERROR: [Loader Message] Code 0 : /usr/lib/libvulkan_intel.so: wrong ELF class: ELFCLASS32
ERROR: [Loader Message] Code 0 : /usr/lib/libvulkan_radeon.so: wrong ELF class: ELFCLASS32
```

The loader dlopen's the 32-bit ICDs first, raises this error, and then
happily goes on to try and use the 64-bit ICDs.

Upstream report: https://github.com/KhronosGroup/Vulkan-Loader/issues/262

Fixes .
2020-02-22 15:32:20 +01:00
Sam Green 06d7316419 Add iphone to vulkan drivers SCsub 2020-02-21 22:00:48 -08:00
Rémi Verschelde 5ace0beeaa
Merge pull request from IronicallySerious/rem-audio-driver-dummy
Remove unused driver/dummy/audio_driver_dummy.h
2020-02-19 21:49:17 +01:00
Twarit 04882a481b Remove unused driver/dummy/audio_driver_dummy.h 2020-02-20 00:59:31 +05:30
Rémi Verschelde 05e610b78c
Merge pull request from MateoMiccino/rendering_vulkan_vertexdescriptionkey_fix
rendering_vulkan: VertexDescriptionKey equal comparator was checking …
2020-02-19 15:54:33 +01:00
Mateo Dev .59 ab88d291b2 rendering_vulkan: VertexDescriptionKey equal comparator was checking only the first element of his vector of VertexDescription 2020-02-19 10:01:19 -03:00
Fabio Alessandrelli 19ef28a614 Fix set_reuse_address on non-Windows platforms.
Broken after cae0d8853d .
2020-02-19 10:15:36 +01:00
Rémi Verschelde 6e64036693
Merge pull request from Faless/net/win_tcp_noreuse
Disable NetSocket reuse address on Windows.
2020-02-18 16:03:29 +01:00
Rémi Verschelde 27326f8238
Merge pull request from Faless/dtls/enet_vulkan
DTLS support + optional ENet encryption
2020-02-18 15:01:53 +01:00
Rémi Verschelde c3f4c1baed
Merge pull request from madmiraal/fix-c4996-warning-vulkan_context
Fix VisualStudio throwing multiple C4996 warnings in vulkan_context.cpp.
2020-02-18 13:57:57 +01:00
Fabio Alessandrelli cae0d8853d Disable NetSocket reuse address on Windows.
It actually means reuse port -.- ...
2020-02-18 13:00:10 +01:00
Marcel Admiraal 529f924aaa Fix VisualStudio throwing multiple C4996 warnings in vulkan_context.cpp.
Use Godot's String to concatenate C-strings instead of strcat and sprintf,
which are unsafe, because they don't check for buffer overflows.
2020-02-18 12:35:59 +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
Fabio Alessandrelli 2811f07084 Add peek option to NetSocket recv_from. 2020-02-16 01:11:30 +01:00
Rémi Verschelde 79a7be6e7d Vulkan-Loader: Mark secure_getenv as available on Linux
It's a GNU extension part of glibc since 2.17, and it was also added
recently to musl libc. It doesn't seem to be available on *BSD (but
also not used there by Vulkan-Loader).

Could be made more thorough by doing a test compilation of a file to
check for the existence of the function on the host system, but unless
we run into actual issues, that's likely overkill.
2020-02-14 15:32:04 +01:00
Rémi Verschelde d2537407ef Fix various GCC compilation warnings after Vulkan merge
Part of .
2020-02-14 10:02:31 +01:00
Hugo Locurcio 71b74195de
Remove Vulkan debugging prints 2020-02-13 18:50:07 +01:00
Rémi Verschelde f1ac292084
Merge pull request from timothyqiu/memleak
Fixes some memory leaks
2020-02-13 11:28:35 +01:00
Rémi Verschelde 386968ea97 Remove obsolete GLES3 backend
Due to the port to Vulkan and complete redesign of the rendering backend,
the `drivers/gles3` code is no longer usable in this state and is not
planned to be ported to the new architecture.

The GLES2 backend is kept (while still disabled and non-working) as it
will eventually be ported to serve as the low-end renderer for Godot 4.0.

Some GLES3 features might be selectively ported to the updated GLES2
backend if there's a need for them, and extensions we can use for that.

So long, OpenGL driver bugs!
2020-02-13 10:36:44 +01:00
Haoyu Qiu a23a52db3f Fixes some memory leaks 2020-02-13 09:46:13 +08:00
Yuri Roubinsky 4aa31a2851
Merge pull request 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
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
Juan Linietsky bd364d1447 Auto exposure re-implemented in Vulkan 2020-02-11 12:14:23 +01:00
bruvzg 7bf72ed14e Update Vulkan loader to 1.1.127 2020-02-11 12:05:27 +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 .
2020-02-11 12:05:19 +01:00
Juan Linietsky da0457fa29 Several fixes to GIProbes 2020-02-11 12:04:56 +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
bruvzg d5df1b651c Improve HiDPI handling, fix incorrect window viewport clipping. 2020-02-11 12:04:04 +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
Juan Linietsky 965185c765 Better GIProbe quality settings. 2020-02-11 12:03:23 +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 123ee5995c Visual GPU profiler and related profiling support in Vulkan. 2020-02-11 12:01:26 +01:00
Juan Linietsky 6deffa62fb Several fixes to 3D rendering, and multimesh implementation. 2020-02-11 12:01:22 +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 2d6a916835 Environment sky more or less working. 2020-02-11 12:01:05 +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
Rémi Verschelde 511f65214f SCons: Streamline Vulkan buildsystem + fixups
- Renamed option to `builtin_vulkan`, since that's the name of the
  library and if we were to add new components, we'd likely use that
  same option.
- Merge `vulkan_loader/SCsub` in `vulkan/SCsub`.
- Accordingly, don't use built-in Vulkan headers when not building
  against the built-in loader library.
- Drop Vulkan registry which we don't appear to need currently.
- Style and permission fixes.
2020-02-11 11:59:04 +01:00
Rémi Verschelde 6289e7d147 Merge pull request 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 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 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 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
Juan Linietsky e3905f9af3 Added ability to retrieve back textures stored on GPU 2020-02-11 11:53:28 +01:00
Juan Linietsky e1b3444415 Bugfixes and ability to better specify filter and repeat modes everywhere.
Removes antialiased flag for draw_* methods.
2020-02-11 11:53:28 +01:00
Juan Linietsky 1b4281b895 basic 2D engine is more or less working with Vulkan, including editor.
Still a lot to do
2020-02-11 11:53:27 +01:00
Juan Linietsky 42b44f43ee Basic 2D engine is more or less working, needs more work for editor to be usable. 2020-02-11 11:53:27 +01:00
Juan Linietsky 9b0dd4f571 A lot of progress with canvas rendering, still far from working. 2020-02-11 11:53:27 +01:00
Juan Linietsky 836c2109a0 Changed my mind on Vulkan image API, images should now include mipmaps
This should make it easier to obtain the data directly from an Image
2020-02-11 11:53:27 +01:00
Juan Linietsky 3f335ce3d4 Texture refactor
-Texture renamed to Texture2D
-TextureLayered as base now inherits 2Darray, cubemap and cubemap array
-Removed all references to flags in textures (they will go in the shader)
-Texture3D gone for now (will come back later done properly)
-Create base rasterizer for RenderDevice, RasterizerRD
2020-02-11 11:53:26 +01:00
Juan Linietsky 9ffe57a10e Modify RenderingDevice to use RIDs, now that they are O(1) 2020-02-11 11:53:26 +01:00
Juan Linietsky 4f163972bb Refactored RID/RID_Owner to always use O(1) allocation.
* Implements a growing chunked allocator
* Removed redudant methods get and getptr, only getornull is supported now.
2020-02-11 11:53:26 +01:00
Juan Linietsky 1522d8c3ee Added support for push constants 2020-02-11 11:53:26 +01:00
Juan Linietsky edb6966024 Improved validation of attachments 2020-02-11 11:53:26 +01:00
Juan Linietsky fd188ddd51 Initial work on Vulkan:
-Added VulkanContext
-Added an X11 implementation
-Added a rendering device abstraction
-added a Vulkan rendering device abstraction
-Engine does not work, only shows Godot logo (run it from bin/)
2020-02-11 11:53:26 +01:00
Rémi Verschelde 0ead0eeabb Merge pull request from Calinou/improve-console-error-logging
Improve the console error logging appearance
2020-02-10 11:16:01 +01:00
Rémi Verschelde a4b8dbdc0b
Merge pull request from clayjohn/GLES2-add-3d-textures
Add support for 3D textures to GLES2
2020-02-07 18:36:24 +01:00
Marcel Admiraal f0db13502a Remove duplicate WARN_PRINT macro. 2020-02-05 11:13:24 +01:00
Marcel Admiraal 5af3b4ca27 Remove duplicate ERR_PRINT macro. 2020-02-05 11:13:24 +01:00
clayjohn 68915ce20d Add support for 3D textures to GLES2 2020-01-31 10:01:05 -08:00
Yuri Roubinsky 15358b808b Fix shader crash if using multiple underscores in identifier names 2020-01-31 09:11:17 +03:00
clayjohn eb5cb5d016 Add project setting for max irradiance size 2020-01-25 13:27:13 -08:00
Eric Rybicki 3d4a2a09f6 Fix Softbody always spawns from world center [gles2]
Fixes 
2020-01-24 09:25:05 +01:00
clayjohn 3631a3cc9e Fix recently introduced crash in viewport size 2020-01-23 08:11:01 -08:00
Hugo Locurcio 90a1f8d8a7
Make `OS.execute()` blocking by default if not specified
This makes `OS.execute()` calls quicker to set up when calling programs
in a blocking fashion.
2020-01-23 01:26:32 +01:00
Rémi Verschelde a8460bffd2
Merge pull request from Ovnuniarchos/AlsaMidiBadPitchBend
ALSA MIDI: Pitch bend and System Common messages
2020-01-22 22:12:57 +01:00
Rémi Verschelde 37897dba80
Merge pull request from lawnjelly/ortho-shadow
Replace CameraMatrix::get_viewport_size with get_viewport_half_extents, shadow culling with ortho camera and other affected issues
2020-01-22 22:02:09 +01:00
Ovnuniarchos 9c48eb1c59 ALSA MIDI driver:
Pith bend message now has correct size (was 2 bytes instead of 3).
	Recognized (but not implemented) 0xF? messages. SysEx messages will be reocognized as such, but their contents will be ignored.
2020-01-22 21:41:48 +01:00
lawnjelly eaf8e5ce52 Change CameraMatrix::get_viewport_size to get_viewport_half_extents
Fixes .
Fixes .

The viewport_size returned by get_viewport_size was previously incorrect, being half the correct value. The function is renamed to get_viewport_half_extents, and now returns a Vector2.

Code which called this function has also been modified accordingly.

This PR also fixes shadow culling when using ortho cameras, because the correct input for CameraMatrix::set_orthogonal should be the full HEIGHT from get_viewport_half_extents, and not half the width.

It also fixes state.ubo_data.viewport_size in rasterizer_scene_gles3.cpp to be the width and the height of the viewport in pixels as stated in the documentation, rather than the current value which is half the viewport extents in worldspace, presumed to be a bug.
2020-01-22 18:22:00 +00:00
Rémi Verschelde 00284a75e8 GLES3: Fix invalid value for GL_TEXTURE_MAG_FILTER parameter
`GL_LINEAR_MIPMAP_LINEAR` can be used for `GL_TEXTURE_MIN_FILTER`,
but not for `GL_TEXTURE_MAG_FILTER`.

Cf. https://www.khronos.org/opengl/wiki/GLAPI/glTexParameter

Fixes .
2020-01-22 15:18:56 +01:00
Rémi Verschelde 4faaf6089a Remove unused #if 0'ed code 2020-01-21 21:41:54 +01:00
Rémi Verschelde 837adb30fd Revert "Exposes capture methods to AudioServer + documentation"
Reverts the following commits:

- c81ec6f26d40b70283958a4ef3e216fb32cbaf14:
  "Exposes capture methods to AudioServer, variable renames for
  consistency, added documentation."
- 47c558b98abf842910c780294314326662410cdf:
  "Expose audio callbacks as signals."
- dabaa11b3c451e9b8f2cca7e563bd9ec51edb169:
  "Fix to make sure the capture buffers are deallocated at shutdown.
  Silences warnings."

Some documentation improvements were kept for pre-existing methods.

See rationale for reverting these changes in .
2020-01-20 13:18:01 +01:00
Rémi Verschelde 90a224c6eb
Merge pull request from akien-mga/gles3-irradiance-small-optimization
GLES3: Slight optimization to irradiance compute
2020-01-19 18:55:51 +01:00
Rémi Verschelde 4d052e51a2
Merge pull request from clayjohn/GLES3-env-map
Reduce complexity of irradiance map generation
2020-01-19 12:39:36 +01:00
Rémi Verschelde dc4db4ab45 GLES3: Slight optimization to irradiance compute
All the calculations leading up to `mipLevel` are only relevant for
Panorama mode. Similarly, the `source_resolution` uniform is only
needed for that mode.
2020-01-19 11:03:11 +01:00
Rémi Verschelde 43caf83c09
Merge pull request from Ovnuniarchos/MidiNoReopen
Alsa MIDI input thread gets properly reinitialized on open_midi_input.
2020-01-19 09:34:38 +01:00
clayjohn 0979411cad reduce complexity of irradiance map generation 2020-01-18 16:51:52 -08:00
Hugo Locurcio 580b8cc012
Improve the console error logging appearance
This makes secondary information less visually prominent
to improve overall readability.

Various loggers were also tweaked for consistency.
2020-01-19 00:24:17 +01:00
Ovnuniarchos af95554aff Alsa MIDI input thread gets properly reinitialized on open. 2020-01-18 15:59:59 +01:00
Rémi Verschelde 669cd46495
Merge pull request from clayjohn/multimesh-error
Add multimesh format max for proper error checking
2020-01-16 23:06:20 +01:00
clayjohn 041fa57a88 Add multimesh format max for proper error checking 2020-01-16 13:31:17 -08:00
clayjohn f3af81b059 Gracefully handle 3D textures in GLES2 2020-01-16 11:28:14 -08:00
Yuri Roubinsky 5098232ee6 Disabled array initialization, const array and arr.length in shaders 2020-01-16 11:46:11 +03:00
Rémi Verschelde 3af0400a32
Merge pull request from clayjohn/csg-crash
Fix light related crashes
2020-01-16 08:03:56 +01:00
Rémi Verschelde 318445c548
Merge pull request from clayjohn/GLES2-fix-lightmap
Fix array constructor for lightmaps
2020-01-16 07:47:49 +01:00
clayjohn f1d0c391c7 fix light related crashes 2020-01-15 21:40:05 -08:00
clayjohn 910f8719a0 Fix array constructor for lightmaps 2020-01-15 17:41:46 -08:00
clayjohn a345088433 Add background mode keep to GLES2 2020-01-15 15:59:00 -08:00
Rémi Verschelde 8130decfe4
Merge pull request from clayjohn/rendering_crashes
Fix light and multimesh crashes
2020-01-13 09:13:18 +01:00
clayjohn 179193775b Fix light and multimesh crashes 2020-01-12 17:45:06 -08:00
clayjohn 796d35d8b3 Fix generation of irradiance map 2020-01-12 14:45:31 -08:00
Rémi Verschelde 815bf761a5 RasterizerCanvas: Use getornull to fetch light occluder polygon
Fixes  when the occluder is not fully configured.
2020-01-08 11:29:15 +01:00
Rémi Verschelde 377ae2af97
Merge pull request from Calinou/no-color-in-non-tty
Disable colored console output when standard output isn't a TTY
2020-01-06 16:39:47 +01:00
Hugo Locurcio 0cad2c0cd1
Add VisualServer methods to get the video adapter name and vendor
These methods can be used in scripts to retrieve the OpenGL
`GL_RENDERER` and `GL_VENDOR` strings (respectively).

This closes .
2020-01-06 00:37:56 +01:00
Hugo Locurcio 785af45d8e
Disable colored console output when standard output isn't a TTY
This prevents Godot from writing ANSI escape codes when redirecting
stdout and stderr to a file.
2020-01-04 04:04:08 +01:00
Rémi Verschelde 94658de1ff
Merge pull request from clayjohn/GLES2-trimesh-crash
Fix crash on trimesh_create
2020-01-03 22:53:57 +01:00
clayjohn 906b5e7f3f Fix crash on trimesh_create by making surface->data available in non-tool builds 2020-01-03 13:39:40 -08:00
Rémi Verschelde fa82664419
Merge pull request from nekomatata/polygon2d-antialiasing-fix
Fixed antialiasing option for Polygon2D with concave/hollow shapes
2020-01-03 14:17:05 +01:00
Rémi Verschelde 2d6586ec78
Merge pull request from MadEqua/fix-light-with-skeleton
Fix 2D lighting when using skeleton.
2020-01-03 08:32:29 +01:00
Tritium Oxide bb6f04c9f5
Fix wrong return type
`ERROR: _display_error_with_code: CanvasShaderGLES3: Fragment Program Compilation Failed:
0:166(2): error: `return' with wrong type int, in function `map_ninepatch_axis' returning float`  caused by 
2020-01-01 19:14:51 +07:00
Rémi Verschelde e4907e50fe GLES3: Fix false positive in ninepatch axis stretch code
See .
2020-01-01 11:49:58 +01:00
PouleyKetchoupp 1591677eb8 Fixed antialiasing option for Polygon2D
Some cases were not handled properly for Polygon2D after making changes in common code to fix Line2D antialiasing. Added an option for drawing polygons to differentiate the two use cases.

Fixes 
2020-01-01 11:40:14 +01:00
Rémi Verschelde a7f49ac9a1 Update copyright statements to 2020
Happy new year to the wonderful Godot community!

We're starting a new decade with a well-established, non-profit, free
and open source game engine, and tons of further improvements in the
pipeline from hundreds of contributors.

Godot will keep getting better, and we're looking forward to all the
games that the community will keep developing and releasing with it.
2020-01-01 11:16:22 +01:00
Rémi Verschelde 162bebcafa
Merge pull request from madmiraal/pulse-audio-null-pointer
Check for null pointer in PulseAudio server info callback.
2019-12-30 17:41:28 +01:00
Rémi Verschelde a96c95f1ef
Merge pull request from winston-yallow/fix_omnilight_attenuation
Use correct omni light attenuation
2019-12-30 16:11:58 +01:00
Winston c9fe11dec1
Use correct omni light attenuation
fixes 
2019-12-29 17:22:34 +01:00
Bruno Lourenço 16429a4289 Reset GLES3 MultiMesh buffer id when reallocating. 2019-12-28 18:38:25 +00:00
Marcel Admiraal 32eccb87e0 Check for null pointer in PulseAudio server info callback. 2019-12-28 08:38:29 +01:00
Bruno Lourenço 65195f505f Fix canvas GLES3 skeleton transform uniform updating. 2019-12-23 18:40:48 +00:00
Bruno Lourenço f26c9d650b Fix 2D lighting when using skeleton. 2019-12-23 00:00:18 +00:00
Rémi Verschelde e21872f4b9
Merge pull request from MadEqua/fix-gles3-light-cutoff
Fix GLES3 light cutoff.
2019-12-21 23:40:15 +01:00
Bruno Lourenço d47374385c Fix GLES3 light cutoff. 2019-12-21 20:52:54 +00:00
Bruno Lourenço d7f9d71be2 Fix contact shadow when light is outside of viewport. 2019-12-21 16:55:41 +00:00
clayjohn 28543667fd Always use 16 bit renderbuffer depth on WebGL 2019-12-19 20:41:32 -08:00
Fabio Alessandrelli feb54d0ed7 Make NetSockets quiter.
Use print_verbose instead of ERR_* for network errors.
2019-12-17 16:08:24 +01:00
Rémi Verschelde c39aa2b200
Merge pull request from clayjohn/GLES2-shadow_color
Fix shadow color in GLES2 by making sRGB
2019-12-16 08:05:17 +01:00
clayjohn 2a694a44cb fix shadow color in GLES2 by making sRGB 2019-12-15 10:27:31 -08:00
Rémi Verschelde d3a07d3550
Merge pull request from Faless/net/android_mlock
Acquire MulticastLock on Android when using broadcast/multicast
2019-12-14 21:53:08 +01:00
Fabio Alessandrelli 9269d6be32 UDP sockets broadcast is now disabled by default.
Add method `set_broadcast_enabled` to allow enabling broadcast via
GDScript.
2019-12-14 17:48:16 +01:00
volzhs 904b7700fa Remove convex_decomp in drivers/SCsub
follow-up f111d1aaed
2019-12-14 21:41:21 +09:00
Rémi Verschelde f111d1aaed Drop b2d_convexdecomp. no longer necessary.
We now use `thirdparty/misc/triangulator.h` for all physics-related
(collision, navigation) triangulation needs.

Follow-up to .
2019-12-13 23:29:52 +01:00
Rémi Verschelde 371de5132c
Merge pull request from bojidar-bg/32993-lightoccluder-flip
Flip cull mode when rendering flipped Light2D and LightOccluder2D
2019-12-12 07:33:19 +01:00
Rémi Verschelde f676d7509e
Merge pull request from clayjohn/default_point_size
Add a default POINT_SIZE
2019-12-12 06:45:31 +01:00
Bojidar Marinov eec7702711
Flip cull mode when rendering flipped Light2D and LightOccluder2D
Fixes 
2019-12-11 23:28:35 +02:00
Rémi Verschelde c320a82213 SCons: Add 'split_libmodules' option to workaround linker issue
The new 'split_libmodules=yes' option is useful to work around linker
command line size limitations when linking a huge number of objects.
We're currently over 64k chars when linking libmodules.a on Windows
with MinGW, which triggers issues as seen in .

Even on Linux, we can also reach linker command line size limitations
by adding more custom modules.

We force this option to True for MinGW on Windows, which fixes .

Additional changes to lib splitting:

- Fix linking of the split module libs with interdependent symbols,
  hacking our way into LINKCOM and SHLINKCOM to set the `--start-group`
  and `--end-group` flags.
- Fix Python 3 compatibility in `methods.split_lib()`.
- Drop seemingly obsolete condition for 'msys' on 'posix'.
- Drop the unnecessary 'split_drivers' as the drivers lib is no longer
  too big since we moved all thirdparty builds to modules.

Co-authored-by: Hein-Pieter van Braam-Stewart <hp@tmm.cx>
2019-12-11 15:40:28 +01:00
clayjohn 676f647c74 Add a default POINT_SIZE 2019-12-10 23:08:20 -08:00
Rémi Verschelde 435cced7d8
Merge pull request from clayjohn/GLES2-use-renderbuffer-post-process
Use renderbuffer depth for post-process buffers when appropriate
2019-12-10 17:16:40 +01:00
Fabio Alessandrelli ab1bfb9007 NetSocket set_broadcast_enabled returns Error enum 2019-12-10 12:11:52 +01:00
clayjohn fd31cebcbe Use renderbuffer depth for post-process buffers when appropriate 2019-12-09 22:19:11 -08:00
clayjohn e8d652f160 Force 32 bit depth buffer for WebGL 2019-12-09 22:14:12 -08:00
Rémi Verschelde cd07a34598 GLES3: Properly unbind buffers after draw commands
Patch provided by @oeleo1.

Fixes .
2019-12-09 09:25:20 +01:00
Rémi Verschelde fbfd56c247 GLES2: Fix uninitialized members in ShaderGLES2::Version
Fixes .
2019-12-05 09:15:31 +01:00
Rémi Verschelde 745a8915fc Properly orphan polygon index buffer after binding (take 2)
Follow-up to , patch by @oeleo1 from
https://github.com/godotengine/godot/issues/34065#issuecomment-561530896
2019-12-04 12:16:50 +01:00
clayjohn b2dfbd77ec properly orphan polygon index buffer after binding 2019-12-03 07:54:25 -08:00
Rémi Verschelde 10bae7c05b
Merge pull request from nekomatata/polygon-2d-antialiasing
Fixed antialiased option for Polygon2D
2019-12-03 07:51:16 +01:00
Rémi Verschelde 65e6efaa3b
Merge pull request from clayjohn/blinn-fix
Fix Specular Blinn function
2019-12-03 07:50:37 +01:00
Rémi Verschelde d53e3d3acc
Merge pull request from nekomatata/shadow_viewport
Disable shadow map sampling when shadows are not used in GLES3
2019-12-02 09:28:42 +01:00
PouleyKetchoupp f5e81b894a Removed duplicated conditional in GLES2 2019-11-29 06:32:55 +01:00
PouleyKetchoupp 299b85c46f Disable shadow map sampling when shadows are not used in GLES3
Fixes 
2019-11-29 06:21:17 +01:00
PouleyKetchoupp e6ebc43d72 Fixed antialiased option for Polygon2D / Line2D
Polygon2D:
The property wasn't used anymore after switching from canvas_item_add_polygon() to canvas_item_add_triangle_array() for drawing.

Line2D:
Added the same property as for Polygon2D & fixed smooth line drawing to use indices correctly.

Fixes 
2019-11-28 22:57:27 +01:00
Rémi Verschelde da880520ca
Merge pull request from clayjohn/GLES3-sky-mipmaps-on-mobile
Fix radiance map generation on mobile
2019-11-28 09:06:38 +01:00
clayjohn 192aacd5d7 Fix radiance map generation on mobile 2019-11-27 22:18:21 -08:00
George Marques c51fe7f7cd
Use ANGLE multisample extensions for UWP 2019-11-26 13:55:19 -03:00
clayjohn 5ab3b61520 Restructure depth_internalformat code to work on mobile
This changes the code path so that `glRenderBufferStorage*` always uses
values appropriate for renderbuffers and `glTexImage2D` never uses an
internalformat meant for buffers.

Fixes .
2019-11-23 18:08:19 -08:00
Rémi Verschelde bb1d75f55e glTexImage2D: Fix confusion between format and internal format
The `format` parameter is similar to `internalFormat` but takes different
values, and especially only `GL_DEPTH_COMPONENT` for depth, without size
specifier.

Cf. https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml

Fixes a regression from  and another occurrence.
2019-11-23 19:38:31 +01:00
clayjohn 334d41d7cc Fix Specular Blinn function 2019-11-22 22:03:26 -08:00
clayjohn 203fb1b348 Fix GL error by properly using float uniform 2019-11-21 07:44:09 -08:00
clayjohn 4d6737ec73 Fix bugs introduced by IBL fixes 2019-11-20 22:54:44 -08:00
Rémi Verschelde 083d088de3
Merge pull request from qarmin/fix_overflows_unitialized
Fix some overflows and unitialized variables
2019-11-20 21:31:12 +01:00
Rafał Mikrut 99d8626f4a Fix some overflows and unitialized variables 2019-11-20 16:22:16 +01:00
Rémi Verschelde 3be6e76f22
Merge pull request from clayjohn/Fix_environment_mapping_issues
Fix issues with environment mapping
2019-11-20 08:45:53 +01:00
clayjohn cd40154890 Fix issues with environment mapping 2019-11-19 22:30:48 -08:00
Rémi Verschelde 7a0228fbba
Merge pull request from BastiaanOlij/fix_gles2_rgb8
Need to use GL_RGB8 and GL_RGBA8 as the internal format for GLES2
2019-11-19 11:12:03 +01:00
Bastiaan Olij 15cd81dc69 Need to use GL_RGB8 and GL_RGBA8 as the internal format for GLES2 2019-11-19 20:57:18 +11:00
Rémi Verschelde 6536105af2
Merge pull request from clayjohn/GLES2-bufferdata_optimization
Improve glBufferSubData usage where safe
2019-11-19 09:36:30 +01:00
clayjohn 14b06fc207 Fix negative light flickering 2019-11-17 22:18:54 -08:00
clayjohn 1253a33423 Improve glBufferSubData usage where safe 2019-11-11 16:38:41 -08:00
Rémi Verschelde 6b1628f9fc
Merge pull request from madmiraal/fix-_MSG-macros
Send *_MSG macros' explanations directly to the _err_print_error().
2019-11-11 13:27:51 +01:00
Rémi Verschelde 4b8feff594
Merge pull request from BastiaanOlij/msaa_ext_modes
Add MSAA mode for Quest
2019-11-11 11:46:50 +01:00
Bastiaan Olij 4e2343160c Add special external MSAA modes for GLES2 Rift S/Quest and OpenXR optimisation 2019-11-11 21:02:06 +11:00
Marcel Admiraal d18b2e599d Remove all uses of ERR_EXPLAIN macros. 2019-11-11 10:24:04 +01:00
PouleyKetchoupp 90b6062ebb Handle missing file properly when checking for case mismatch
This was causing false alarms to be randomly reported on Windows for files that didn't exist.
2019-11-10 09:51:09 +01:00
Bastiaan Olij add5eaca43 Make MSAA work with external texture 2019-11-08 23:27:48 +11:00
Bastiaan Olij f7cba26a52 Revert "fix MSAA depth buffer not used for external texture"
This reverts commit 418b035dda.
2019-11-08 22:47:36 +11:00
Rémi Verschelde a3ac7a94f0
Merge pull request from
fix  MSAA depth buffer not used for external texture
2019-11-08 09:53:22 +01:00
Rémi Verschelde 47389c3a16 Partial revert of , undoing line shifting by 0.5
As discussed in , this can't be done here as lines can be used
with a canvas scale, and this breaks them.
A suggestion is to do the pixel shifting at matrix level instead.

Fixes .
Fixes .
2019-11-07 15:43:04 +01:00
Holger Dammertz 418b035dda fix MSAA depth buffer not used for external texture
When rendering to an external texture and MSAA was active (as happened
in the Oculus Mobile ARVR plugin) no MSAA was rendered as the correct
depth buffer and multisample texture target was not used.
This also fixes https://github.com/GodotVR/godot_oculus_mobile/issues/54
2019-11-04 20:14:52 +01:00
Rémi Verschelde c1b0800784
Merge pull request from clayjohn/GLES2-depth-format
Fix depth format on Android in GLES2
2019-11-03 07:56:38 +01:00
clayjohn bc32779542 Fix depth format on Android in GLES2 2019-11-02 21:58:30 -07:00
Rémi Verschelde d89f24b6c9
Merge pull request from Chaosus/remove_gles2_switch_op
Removed switch operator from GLES2 shader back-end
2019-11-02 19:28:18 +01:00
Yuri Roubinsky 6b7f8558d9 Removed switch operator from GLES2 shader back-end 2019-11-02 12:43:32 +03:00
Rafał Mikrut 9ddb3265e1 Fix some crashes, overflows and using variables without values 2019-11-01 16:16:31 +01:00
clayjohn 033ae8a543 When framebuffer allocation fails for MSAA in GLES2 revert to normal without ERR_FAIL 2019-10-30 07:45:09 -07:00
Rémi Verschelde 63c5cd7eb8
Merge pull request from qarmin/fix_some_crashes
Fix some crashes and using null pointers
2019-10-28 08:37:59 +01:00
Rémi Verschelde 826ffc26c9
Merge pull request from clayjohn/GLES2-HTML-sampler_limit
Fixed using compressed textures and add work around for firefox webgl mesa sampler limit
2019-10-28 08:19:37 +01:00
Rafał Mikrut e53e1c566a Fix some crashes and using null pointers 2019-10-28 08:07:29 +01:00
clayjohn 7b3d098b2b Fixed using compressed textures and add work around for firefox webgl mesa sampler limit 2019-10-27 23:53:52 -07:00
clayjohn 51db564811 use proper texture in Android MSAA 2019-10-27 16:50:15 -07:00
Rémi Verschelde ad685960da
Merge pull request from Faless/fix/fopen_close_exec
Disable file descriptor sharing with subprocs.
2019-10-26 23:11:41 +02:00
Rémi Verschelde 3eb8bd08ec
Merge pull request from ptrojahn/lines
Fix draw_rect
2019-10-26 23:09:24 +02:00
Rémi Verschelde 3556876c08
Merge pull request from clayjohn/GLES2-HTML-shadows
Fix shadow mapping with RGBA textures on html
2019-10-26 22:07:46 +02:00
clayjohn 6ec7686a0c Fix shadow mapping with RGBA textures on html 2019-10-26 10:17:22 -07:00
Rémi Verschelde dba22e9788
Merge pull request from akien-mga/webgl2-resize-non-po2
WebGL 2.0: Force decompressing non power-of-2 textures with repeat/mipmap
2019-10-26 18:05:37 +02:00
Fabio Alessandrelli d780570faf Use WSAConnect instead of connect on Windows.
The misterious windows networking stack...
Using connect instead of WSAConnect causes socket error 10022 under
certain conditions.
See: https://github.com/godotengine/webrtc-native/ (issue 6)
Having to guess, code path for connect is different then WSAConnect with
NULL extra parameters.
The only reference about weird error with this code mentions something
called "Windows Filtering Platform" but windows internals are, as
always, obscure.

This might be something to try and report to Microsoft if anyone has the
time to spare with the likely outcome of being ignored.
2019-10-25 18:13:51 +02:00
Rémi Verschelde 69003457b3 WebGL 2.0: Force decompressing non power-of-2 textures with repeat/mipmap
While OpenGL ES 3.0 and WebGL 2.0 both support non power-of-2 (NPOT)
textures in their specification, the situation seems to be less clear
about *compressed* NPOT textures using repeat or mipmap flags.

At least Chrome on Linux doesn't seem to support this combination,
and a variety of mobile hardware have similar limitations.

As a workaround, we force decompressing such textures when running on
WebGL 2.0, at the cost of loading time and memory usage.

Fixes .
2019-10-25 13:01:10 +02:00
bruvzg 7b64340eb0
Fix compilation warnings in macOS build, enable `warnings=extra werror=yes` for macOS CI. 2019-10-24 20:37:56 +03:00
clayjohn 071bf81750 only render depth with alpha prepass on prepass 2019-10-11 22:34:10 -07:00
Paul Trojahn bdaedb601c Fix draw_rect
OpenGL uses the diamond exit rule to rasterize lines. If we don't shift
the points down and to the right by 0.5, the line can sometimes miss a
pixel when it shouldn't. The final fragment of a line isn't drawn. By
drawing the lines clockwise, we can avoid a missing pixel in the rectangle.
See section 3.4.1 in the OpenGL 1.5 specification.
Fixes 
2019-10-11 10:26:53 +02:00
Rémi Verschelde a39aeade5b
Merge pull request from puthre/ninepatch-fix
GLES2 & GLES3 Fixes ninepatch margins for high resolution textures.
2019-10-09 08:33:56 +02:00
Rémi Verschelde 02d75f99b9
Merge pull request from Faless/net/fix_close_exec
Disable socket descriptor sharing with subprocs.
2019-10-08 07:32:11 +02:00
Rémi Verschelde e43155b44f
Merge pull request from jeronimo-schreyer/disable_unix_socket
Optional Unix Socket disable for devices that do not support it
2019-10-08 06:40:17 +02:00
Valentin Zagura 100d05cbec GLES3 Fixes for ninepatch margins when patch size is smaller than the patch texture resolution
Scaled ninepatch margins in screen space to be relative of the ninepatch size when the patch size is smaller than the patch texture resolution.
2019-10-07 13:19:27 +01:00
Fabio Alessandrelli ad9a5ee6f1 Disable file descriptor sharing with subprocs.
On Unix systems, file descriptors are usually shared among child
processes.
This means, that if we spawn a subprocess (or we fork) like we do in
the editor any open file descriptor will leak to the new process.
This PR sets the close-on-exec flag when opening a file, which causes
the file descriptor to not be shared with the child process.
2019-10-07 11:57:44 +02:00
Fabio Alessandrelli 9c91b2051a Disable socket descriptor sharing with subprocs.
On Unix systems, sockets are like file descriptors, and file descriptors
are usually shared among child processes.
This means, that if we spawn a subprocess (or we fork) like we do in the
editor, open file descriptors will leak to the new process.
This causes issue with sockets as they might remain open and bound
(listening) when the original process closes.
2019-10-07 11:53:01 +02:00
Rémi Verschelde 234289de2b
Merge pull request from clayjohn/GLES2-canvas-bg-mode
Add canvas background mode to GLES2
2019-10-07 08:57:44 +02:00
clayjohn 77939c6e2e add canvas background mode to GLES2 2019-10-06 23:26:11 -07:00
clayjohn cea1f13176 fix current issues with post-processing 2019-10-06 12:07:31 -07:00
Rémi Verschelde 0deccd4a65
Merge pull request from clayjohn/GLES2-fix-black-editor-and-crash
Remove glViewport call as it wasnt needed and caused crash GLES2
2019-10-03 08:16:19 +02:00
Rémi Verschelde ce336e7e72
Merge pull request from clayjohn/GLES2-fix-probe-crash
Fix reflection probe crash in GLES2 with post-processing
2019-10-03 07:55:08 +02:00
clayjohn a152816c52 remove glViewport call as it wasnt needed and caused crash 2019-10-02 20:21:41 -07:00
clayjohn 07fd9719bf Fix reflection probe crash in GLES2 with post-processing 2019-10-02 14:35:10 -07:00
Rémi Verschelde 642a258d54
Merge pull request from akien-mga/fix-ip-uwp
IP: Fix build error on UWP
2019-10-02 21:03:59 +02:00
Rémi Verschelde 3f32ac11cc IP: Fix build error on UWP
Fixes this error:
```
drivers\unix\ip_unix.cpp(155): error C2593: 'operator =' is ambiguous
.\core/ustring.h(177): note: could be 'void String::operator =(const CharType *)'
.\core/ustring.h(176): note: or       'void String::operator =(const char *)'
drivers\unix\ip_unix.cpp(155): note: while trying to match the argument list '(String, int)'
```
2019-10-02 13:38:02 +02:00
Yuri Roubinsky 1472fca951 Removed unnecessary shader error log messages 2019-10-02 12:37:22 +03:00
clayjohn afaa68628a updated defaults and documentation for GLES2 glow 2019-10-01 07:55:04 -07:00
Kanabenki add91724e6 Fix casting to uint64_t when returning unix system time 2019-10-01 11:44:26 +02:00
Jairo fe068b61ad Optional Unix Socket disable for devices that do not support it 2019-09-30 21:15:50 -03:00
clayjohn 82f63633d1 Implement DOF blur, Glow, and BCS in GLES2 2019-09-30 08:04:31 -07:00
Ruslan Mullayanov b4c927b514 Added an exit code to the blocking mode of OS::execute
Updated documentation accordingly.

Fixes .
2019-09-26 08:12:07 +02:00
Rémi Verschelde dec10dd776
Merge pull request from qarmin/some_error_explanation
Added some obvious errors explanations
2019-09-25 11:51:54 +02:00
qarmin 17732fe698 Added some obvious errors explanations 2019-09-25 10:28:50 +02:00
Rémi Verschelde 823c3def72 Fix copyright headers and style issues 2019-09-24 11:52:06 +02:00
Rémi Verschelde f1146c261d
Merge pull request from clayjohn/GLES3-Viewport-crash-canvas
Throw error when canvas background is used without sample buffer
2019-09-23 15:35:31 +02:00
Rémi Verschelde 159470df08
Merge pull request from godotengine/skin_support
Added skin support and simplified APIs to override bone position + glTF 2.0 import fixes
2019-09-23 15:02:15 +02:00
Rémi Verschelde 393a0152ea
Merge pull request from qarmin/some_code_fixes
Changed some code found by Clang Tidy and Coverity
2019-09-23 10:00:31 +02:00