Commit graph

2099 commits

Author SHA1 Message Date
bruvzg
f9de050216 Improve HiDPI handling, fix incorrect window viewport clipping. 2019-12-12 17:10:27 +01:00
Juan Linietsky
7cfa9396d4 Dynamic object support for GI Probes (a bit buggy still) 2019-12-12 17:10:16 +01:00
Juan Linietsky
871311d337 More GIProbe work and fixes 2019-12-12 17:10:15 +01:00
Juan Linietsky
afb3e744c6 Better GIProbe quality settings. 2019-12-12 17:09:46 +01:00
Juan Linietsky
307f84b43a GIProbes working. 2019-12-12 17:09:36 +01:00
Juan Linietsky
514236a97c Rewritten StreamTexture for better code reuse, added basis universal support 2019-12-12 17:09:05 +01:00
Juan Linietsky
a345f50c8b Untested support for compute shaders 2019-12-12 17:09:04 +01:00
Juan Linietsky
a0a7732aec Visual GPU profiler and related profiling support in Vulkan. 2019-12-12 17:08:05 +01:00
Juan Linietsky
7919ef863b Several fixes to 3D rendering, and multimesh implementation. 2019-12-12 17:08:00 +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
7db3532b2e Environment sky more or less working. 2019-12-12 17:07:47 +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
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
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
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
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
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
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
c5e77a1b2f 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/)
2019-12-12 08:50:47 +01:00
Rémi Verschelde
371de5132c
Merge pull request #34251 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 #34262 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 #32993
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 #30892.

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 #30892.

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 #34238 from clayjohn/GLES2-use-renderbuffer-post-process
Use renderbuffer depth for post-process buffers when appropriate
2019-12-10 17:16:40 +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 #34120.
2019-12-09 09:25:20 +01:00
Rémi Verschelde
fbfd56c247 GLES2: Fix uninitialized members in ShaderGLES2::Version
Fixes #34109.
2019-12-05 09:15:31 +01:00
Rémi Verschelde
745a8915fc Properly orphan polygon index buffer after binding (take 2)
Follow-up to #34088, 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 #33857 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 #33836 from clayjohn/blinn-fix
Fix Specular Blinn function
2019-12-03 07:50:37 +01:00