Rémi Verschelde
05e610b78c
Merge pull request #36357 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 #36321 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 #36296 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 #36320 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 #36132 .
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 #36169 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 #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
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 #33356 .
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 #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
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 #35301 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 #35142 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 #35373
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 #35414 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 #35406 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 #26637 .
Fixes #19900 .
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 #35436 .
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" #30468
...
Reverts the following commits:
- c81ec6f26d
:
"Exposes capture methods to AudioServer, variable renames for
consistency, added documentation."
- 47c558b98a
:
"Expose audio callbacks as signals."
- dabaa11b3c
:
"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 #30468 .
2020-01-20 13:18:01 +01:00
Rémi Verschelde
90a224c6eb
Merge pull request #35310 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 #35302 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 #35284 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 #35215 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 #35176 from clayjohn/csg-crash
...
Fix light related crashes
2020-01-16 08:03:56 +01:00
Rémi Verschelde
318445c548
Merge pull request #35178 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 #35064 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 #21286 when the occluder is not fully configured.
2020-01-08 11:29:15 +01:00
Rémi Verschelde
377ae2af97
Merge pull request #34808 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