Juan Linietsky
b52a2f3dfa
Fix comment
2020-02-11 11:58:11 +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
6ecedd1e6c
Add a system to properly update materials if the uniform set is gone (likely deleted texture)
2020-02-11 11:53:29 +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
50e9befb88
Changes to material required to add custom shaders in RD renderer
2020-02-11 11:53:28 +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
a3f8ffac63
Use a special sampler for 2D shadows, so they are softer
2020-02-11 11:53:28 +01:00
Juan Linietsky
f04359e70f
2D lighting seems more or less complete.
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
92b27bccf1
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.
2020-02-11 11:53:28 +01:00
Juan Linietsky
24b16f3bf0
Fix crash on import.
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
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
3a5f45a6d1
Merge pull request #35682 from nathanwfranke/canvas-cull-control-fix
...
Fix bug where canvas culls things at origin with size 0
2020-02-08 14:14:10 +01:00
nathanwfranke
e5cb557b73
Fix bug where Control at origin with 0 size not rendered
...
Make a new method instead to make the code more elegant
Move Function down a bit
2020-02-07 14:43:27 -06:00
Rémi Verschelde
cdce912de7
Merge pull request #35986 from Chaosus/shader_index
...
Allow non-constants for indexing builtin types in shaders
2020-02-07 20:45:57 +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
Yuri Roubinsky
8469a383ec
Allow non-constants for indexing builtin types in shaders
2020-02-07 18:41:26 +03:00
Yuri Roubinsky
3a70566b15
Prevent shader crash if invalid builtin used after array member accessor
2020-02-07 15:21:15 +03:00
Marcel Admiraal
5af3b4ca27
Remove duplicate ERR_PRINT macro.
2020-02-05 11:13:24 +01:00
Yuri Roubinsky
2c4367441c
Prevent shader crash when name conflict with "dus" and "__" occured
2020-02-01 12:38:52 +03:00
clayjohn
68915ce20d
Add support for 3D textures to GLES2
2020-01-31 10:01:05 -08:00
Yuri Roubinsky
3473a195fc
Hides high-level functions from GLES2 shader autocompletion
2020-01-23 12:41:21 +03:00
Rémi Verschelde
46820527de
Merge pull request #35360 from Chaosus/restrict_uint_gles2
...
Disallow uint/uvec usage on GLES2 platform
2020-01-23 10:12:30 +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
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
4faaf6089a
Remove unused #if 0'ed code
2020-01-21 21:41:54 +01:00
Yuri Roubinsky
4c456ef979
Disallow uint/uvec usage on GLES2 platform
2020-01-20 18:59:35 +03:00
Yuri Roubinsky
3dea1c725e
Clears completion_class in shaders (may cause troubles if not).
2020-01-19 16:35:54 +03:00
Yuri Roubinsky
1eb8d5e142
Added missing form of array constructor in shaders
2020-01-18 11:41:55 +03:00
Yuri Roubinsky
5098232ee6
Disabled array initialization, const array and arr.length in shaders
2020-01-16 11:46:11 +03:00
clayjohn
3579187f90
Make texture_debug_usage thread safe
2020-01-12 15:22:54 -08:00
Yuri Roubinsky
1e154e0947
Fix nested break/return in shader switch statement
2020-01-10 11:57:56 +03:00
Rémi Verschelde
5edd1a27d2
Merge pull request #34671 from Chaosus/shader_hex_support
...
Support for hex numbers in shaders
2020-01-08 10:01:49 +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 #28404 .
2020-01-06 00:37:56 +01:00