Commit graph

25155 commits

Author SHA1 Message Date
Juan Linietsky
bae6f608d2 Reflection probes working 2019-12-12 17:08:00 +01:00
Juan Linietsky
6651336a8a Directional light cleanup. 2019-12-12 17:07:49 +01:00
Juan Linietsky
dd875c2c3c Directional lights and shadow mapping are functional. 2019-12-12 17:07:49 +01:00
Juan Linietsky
5f6ed2349c Rewrote large part of rendering, omni and spot shadows now work. 2019-12-12 17:07:48 +01:00
Juan Linietsky
8f5dc4f06c Tonemapping ported (not all parameters supported yet, only enough to get correct color) 2019-12-12 17:07:48 +01:00
Juan Linietsky
7db3532b2e Environment sky more or less working. 2019-12-12 17:07:47 +01:00
Rémi Verschelde
aaeac6633d Merge pull request #31527 from Chaosus/vk_shader_array_support2
[Vulkan] Implemented local shader arrays
2019-12-12 17:07:33 +01:00
Yuri Roubinski
b994cdbdc6 [Vulkan] Implemented local shader arrays 2019-12-12 17:07:32 +01:00
Rémi Verschelde
8fc7efb3d7 Merge pull request #31526 from Chaosus/shader_bug_vk2
[Vulkan] Fix ternary operator shader compiler expression
2019-12-12 17:07:29 +01:00
Yuri Roubinski
f7812b3ee6 [Vulkan] Fix ternary operator shader compiler expression 2019-12-12 17:07:29 +01:00
Rémi Verschelde
90eb4b1034 Merge pull request #31525 from Chaosus/vk_shaders_do2
[Vulkan] Implemented do/while loops for shaders
2019-12-12 17:07:23 +01:00
Yuri Roubinski
d49b6a72de [Vulkan] Implemented do/while loops for shaders 2019-12-12 17:07:19 +01:00
Juan Linietsky
bb712cca18 Yay very basic 3D (only white) finally shows. 2019-12-12 17:06:46 +01:00
Juan Linietsky
75299f4a63 Base 3D engine done, still untested, though. 2019-12-12 17:06:38 +01:00
Rémi Verschelde
994e8c5779 Merge pull request #31105 from akien-mga/vulkan
RID_Alloc: Fix locking in getornull and free early returns
2019-12-12 17:06:29 +01:00
Rémi Verschelde
7ca6cbd8d6 RID_Alloc: Fix locking in getornull and free early returns
Those missing unlocks were preventing the editor from starting.
2019-12-12 17:06:29 +01:00
Rémi Verschelde
c39834b4a7 Merge pull request #31102 from akien-mga/vulkan
SCons: Streamline Vulkan buildsystem + fixups
2019-12-12 17:06:28 +01:00
Rémi Verschelde
9ad3f02db1 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.
2019-12-12 17:06:27 +01:00
Rémi Verschelde
822094e548 Merge pull request #31100 from akien-mga/vulkan
VulkanLoader: Make Windows includes lowercase for MinGW
2019-12-12 17:06:20 +01:00
Rémi Verschelde
778ed91a33 VulkanLoader: Make Windows includes lowercase for MinGW
MinGW-w64 ships all Windows SDK headers as lowercase, which prevents
cross-compiling this code from Linux.

Windows filesystems are case insensitive so it should work fine with
lowercase includes.

PR'ed upstream: https://github.com/KhronosGroup/Vulkan-Loader/pull/212
2019-12-12 17:06:10 +01:00
Juan Linietsky
112c4c546c Vulkan/RD rasterizer now does clean exit. 2019-12-12 17:05:11 +01:00
Juan Linietsky
9b71f07c64 Fix comment 2019-12-12 17:05:07 +01:00
Rémi Verschelde
9b2dc59003 Merge pull request #29993 from bruvzg/vulkan
Initial Vulkan support for macOS (MoltenVK) and Windows
2019-12-12 17:04:53 +01:00
bruvzg
397545e97f Add runtime GLES2 / Vulkan context selection. 2019-12-12 13:48:47 +01:00
bruvzg
142188639c Add static Vulkan loader.
Initial Vulkan support for Windows.
Initial Vulkan support for macOS.
2019-12-12 13:19:45 +01:00
Juan Linietsky
d71ae5c152 Add a system to properly update materials if the uniform set is gone (likely deleted texture) 2019-12-12 13:08:26 +01:00
Juan Linietsky
9ae5001b0e Added a spinlock template as well as a thread work pool class.
Also, optimized shader compilation to happen on threads.
2019-12-12 13:05:27 +01:00
Juan Linietsky
e7c33ca141 Moved the shader source compilation code outside RenderingDevice and Vulkan 2019-12-12 13:05:25 +01:00
Juan Linietsky
f5f3d820e0 Replaced GLSLang reflection by SPIRV-Reflect, eventually allowing to move GLSLang out. 2019-12-12 13:01:23 +01:00
Juan Linietsky
ffbc9823d9 Custom material support seems complete. 2019-12-12 12:54:09 +01:00
Juan Linietsky
55426a3ab4 Completed material/2D shader support (missing SCREEN_TEXTURE) 2019-12-12 12:21:24 +01:00
Juan Linietsky
1dd402d083 Changes to material required to add custom shaders in RD renderer 2019-12-12 12:01:50 +01:00
Juan Linietsky
7c2bb1ceff Modified light rendering to make it more compatible.
Modified polygon management to make it more compatible with MoltenVK
2019-12-12 12:01:48 +01:00
Juan Linietsky
36b8c9c1bc Use a special sampler for 2D shadows, so they are softer 2019-12-12 11:49:31 +01:00
Juan Linietsky
2e9c7ce62e 2D lighting seems more or less complete. 2019-12-12 11:49:19 +01:00
Juan Linietsky
75701f756f Normalmapping and Specularmapping working in 2D engine
Added support for Sprite, AnimatedSprite and Polygon2D (should add for tileset eventually).
2019-12-12 11:49:14 +01:00
Juan Linietsky
7d87e11e99 Changed allocation strategy of CanvasItem draw commands.
They should now allocate memory in blocks and reuse the same
memory every time the item is cleared and redrawn.

This should improve performance considerably.
2019-12-12 11:46:35 +01:00
Juan Linietsky
490fd93995 Fix crash on import. 2019-12-12 11:44:08 +01:00
Juan Linietsky
823feb8310 Added ability to retrieve back textures stored on GPU 2019-12-12 11:44:06 +01:00
Juan Linietsky
667785e474 Bugfixes and ability to better specify filter and repeat modes everywhere.
Removes antialiased flag for draw_* methods.
2019-12-12 11:33:08 +01:00
Juan Linietsky
017bcf9be4 basic 2D engine is more or less working with Vulkan, including editor.
Still a lot to do
2019-12-12 11:06:23 +01:00
Juan Linietsky
179145aaf5 Basic 2D engine is more or less working, needs more work for editor to be usable. 2019-12-12 10:57:32 +01:00
Juan Linietsky
e2ffdb2d01 A lot of progress with canvas rendering, still far from working. 2019-12-12 10:50:00 +01:00
Juan Linietsky
d128ef1ecb 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
2019-12-12 10:15:57 +01:00
Juan Linietsky
d4d470bc97 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
2019-12-12 10:05:14 +01:00
Juan Linietsky
ee921965be Modify RenderingDevice to use RIDs, now that they are O(1) 2019-12-12 09:23:03 +01:00
Juan Linietsky
962382ac5c 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.
2019-12-12 08:55:15 +01:00
Juan Linietsky
b2b7a41318 Added support for push constants 2019-12-12 08:53:55 +01:00
Juan Linietsky
bba5752b4b Improved validation of attachments 2019-12-12 08:52:35 +01:00
Juan Linietsky
90e61a5632 Added default values where missing. 2019-12-12 08:50:48 +01:00