Commit Graph

2708 Commits

Author SHA1 Message Date
Jérôme Leclercq a28635ec70 Merge pull request #326 from DigitalPulseSoftware/vulkan
Add OpenGL / Vulkan renderers
2020-08-27 18:38:21 +02:00
Jérôme Leclercq 51ec9741df OpenGLRenderer: Handle resize/minimize 2020-08-27 18:32:22 +02:00
Jérôme Leclercq 7c9dcdfbe4 Allocate command buffers from pools 2020-08-27 18:31:26 +02:00
Jérôme Leclercq cbdac32f5f VulkanRenderer: Handle window resize 2020-08-27 16:16:33 +02:00
Jérôme Leclercq 63f259b907 SpirvAstVisitor: Add safety assert 2020-08-24 16:49:59 +02:00
Jérôme Leclercq f5fa211609 ShaderAstCloner: Fix Swizzle case 2020-08-24 16:49:38 +02:00
Jérôme Leclercq ba777ebbca Shader/SpirvPrinter: Add settings 2020-08-24 16:49:14 +02:00
Jérôme Leclercq 77b66620c9 Refactor SpirV classes
SpirvStatementVisitor was merged with SpirvExpressionLoad
SpirvExpressionLoadAccessMember was renamed SpirvExpressionLoad
2020-08-23 21:56:30 +02:00
Jérôme Leclercq 93de44d293 Big SpirVWriter refactor 2020-08-23 18:32:28 +02:00
Jérôme Leclercq 66a14721cb Shader/Spirv: Put types and constants in the same section 2020-08-21 22:51:11 +02:00
Jérôme Leclercq cd23c01ace Shader: AccessMember can now access nested fields 2020-08-21 22:50:30 +02:00
Jérôme Leclercq 9df219e402 Add SpirvConstantCache
And unsigned int types for shaders
2020-08-20 01:05:16 +02:00
Jérôme Leclercq 0b507708f4 Shader/SpirvWriter: Split section to another class + improve variadic parameters support 2020-08-18 00:00:05 +02:00
Jérôme Leclercq 73e88a2573 Add Spir-V header/source generator 2020-08-17 23:59:08 +02:00
Jérôme Leclercq 608b80981d Fix OpenGL & Vulkan renderers 2020-08-11 00:13:00 +02:00
Jérôme Leclercq 1a12e18a36 Fix copyright dates and some defines 2020-08-11 00:01:49 +02:00
Jérôme Leclercq 837a6585a1 Split shader generation to a new module 2020-08-11 00:00:36 +02:00
Jérôme Leclercq 0313f2d0a6 Enable GL_DEBUG_OUTPUT 2020-08-09 18:43:44 +02:00
Jérôme Leclercq d9b34b4ba8 OpenGLRenderer: Handle GL_DEBUG_SEVERITY_NOTIFICATION 2020-08-09 18:41:28 +02:00
Jérôme Leclercq d4f60c174e OpenGLRenderer: Flip screenspace 2020-08-09 18:40:59 +02:00
Jérôme Leclercq ac7b523bc7 OpenGLRenderer: Fix textures 2020-08-09 18:38:58 +02:00
Jérôme Leclercq 0da2ee6c99 First rendering using Spir-V generated shaders \o/ 2020-08-09 00:24:07 +02:00
Jérôme Leclercq 3829f0a002 ShaderAstCloner: Improve code readability 2020-08-05 16:28:41 +02:00
Jérôme Leclercq d6d452d43d Add ShaderAstCloner 2020-08-05 15:30:23 +02:00
Jérôme Leclercq 74fb01af28 Rename a few classes 2020-08-04 15:31:47 +02:00
Jérôme Leclercq 7a5f91f740 SpivWriter WIP
We have debug label, annotations, types and constants. The big part missing is instructions
2020-08-04 01:35:30 +02:00
Jérôme Leclercq 7fd3264d08 Add FieldOffsets class 2020-08-04 01:33:52 +02:00
Jérôme Leclercq 7736312c2f ShaderNodes: Replace union by std::variant 2020-08-04 01:33:31 +02:00
Lynix 50bd150345 WIP 2020-08-02 20:42:51 +02:00
Lynix 10860ed562 Improve code 2020-07-31 12:36:37 +02:00
Lynix 2271432748 Renderer/ShaderValidator: Use ShaderVarVisitor instead of switch 2020-07-29 14:39:34 +02:00
Lynix a02dd3bf05 Renderer: Add ShaderRecursiveVisitor 2020-07-29 14:31:54 +02:00
Jérôme Leclercq 251810ca99 WIP SpirvWriter 2020-07-29 11:22:52 +02:00
Jérôme Leclercq 59add283cf Add shader type 2020-07-27 18:52:58 +02:00
Lynix aff617f147 Network: Replace some String by std::string 2020-07-25 14:32:53 +02:00
Jérôme Leclercq 063b7dd602 Renderer/GlslWriter: Add parenthesis where required (wip) 2020-07-22 14:48:15 +02:00
Jérôme Leclercq c6c301c9f5 ShaderNode: Fix BufferField remaining bugs 2020-07-22 14:47:57 +02:00
Jérôme Leclercq 7b1d712560 ShaderNode: Fix struct members serialization 2020-07-22 14:47:13 +02:00
Jérôme Leclercq 471194ec16 ShaderNode: Add PositionOutputValue 2020-07-22 14:47:00 +02:00
Jérôme Leclercq 5a350ee76b ShaderNode: Add Mat4x4 type and nodes 2020-07-22 14:46:44 +02:00
Jérôme Leclercq b441bab218 Renderer/ShaderNodes: Fix BinOp expression type 2020-07-22 14:45:40 +02:00
Jérôme Leclercq db945d11fb Renderer/GlslWriter: Fix generation bugs 2020-07-22 14:45:19 +02:00
Jérôme Leclercq f66758f99b Renderer/ShaderSerializer: Fix AccessMember 2020-07-22 14:44:49 +02:00
Jérôme Leclercq 5ce67f434b Finish BufferField 2020-07-20 20:41:22 +02:00
Jérôme Leclercq 042eb067a0 Move and rename functions 2020-07-20 11:21:31 +02:00
Jérôme Leclercq 405c020125 Set some struct in default scene for testing 2020-07-19 21:08:53 +02:00
Jérôme Leclercq 3c1c61fb5e Improve code 2020-07-19 21:08:43 +02:00
Jérôme Leclercq e342c88e64 ShaderNodes/InputValue: Fix output type when using Float1 2020-07-19 21:08:25 +02:00
Jérôme Leclercq 5258f0b61a ShaderNodes: Add BufferField node 2020-07-19 21:08:21 +02:00
Jérôme Leclercq 086f76fb97 Renderer/ShaderNodes: Add support for accessing struct fields 2020-07-19 21:05:46 +02:00
Jérôme Leclercq 1d2fb88198 Renderer: Rename enums
ExpressionType => BasicType
ShaderAst::Type => ShaderExpressionType
2020-07-16 18:34:58 +02:00
Jérôme Leclercq c7a8091e68 ShaderNode: Add buffers and structs 2020-07-14 22:00:17 +02:00
Jérôme Leclercq fbba281d14 Renderer: Add support for struct and UBO 2020-07-14 21:59:49 +02:00
Jérôme Leclercq cd01facd01 GlslWriter: Handle OpenGL ES precision qualifier 2020-07-08 22:52:33 +02:00
Jérôme Leclercq b076a517c6 Merge branch 'vulkan' into shader-nodes 2020-07-08 22:38:24 +02:00
ImperatorS79 ee93680083 Fix arrayLayers not being correctly computed in VulkanTexture.cpp for ImageType_2D_array 2020-07-08 22:32:50 +02:00
Jérôme Leclercq 5164294bec ShaderNodes: Add TextureEdit dialog 2020-07-04 22:52:17 +02:00
Jérôme Leclercq 33d94c05f3 ShaderNodes: Use PreviewValues instead of QImage 2020-07-03 22:53:00 +02:00
Jérôme Leclercq 83cf358d02 Physics2D/RigidBody2D: Fix EnableSimulation 2020-07-03 16:27:14 +02:00
Lynix 4f671873c1 Renderer: Add NazaraBinary shader "language" and handle it in OpenGLRenderer 2020-06-18 20:05:22 +02:00
Lynix 58e59be267 ShaderNode: Add compile to binary action 2020-06-18 20:04:39 +02:00
Lynix 74acf440fc Minor fixes 2020-06-18 20:04:25 +02:00
Lynix 691de5b5c4 Renderer/ShaderSerialize: Use ByteStream instead of ByteArray 2020-06-18 20:03:56 +02:00
Lynix bc490a2fe5 Renderer/GlslWriter: Fix double identifier bug 2020-06-18 20:03:33 +02:00
Lynix 66a98b234f Renderer/GlslWriter: Add environment 2020-06-18 20:03:22 +02:00
Lynix 736ca1c409 Renderer/ShaderAst: Add serialization 2020-06-17 20:09:21 +02:00
Lynix 0ff10bf1e2 Improve GLSL output when using intrinsic 2020-06-17 16:07:58 +02:00
Lynix f38bfdde8a ShaderAst: Big refactor + add binding/location support 2020-06-17 16:00:03 +02:00
Lynix 463b540739 ShaderEditor: Add VecFloatMul 2020-06-16 17:46:03 +02:00
Lynix 80527dec3e ShaderEditor: Add VecDot 2020-06-16 17:45:36 +02:00
Lynix d3db22ce22 ShaderEditor/VecBinOp: Add component check 2020-06-16 17:45:21 +02:00
Lynix 9b911ac4bc Renderer/ShaderAst: Minor fixes relative to float/vec multiplication 2020-06-16 17:44:54 +02:00
Lynix 90abb52e4e ShaderEditor: Fixes 2020-06-16 17:44:20 +02:00
Lynix 2258a4f87f Add ShaderValidator 2020-06-06 16:44:17 +02:00
Lynix 8467c79021 Renderer: Add shader serialization 2020-06-05 19:47:29 +02:00
Lynix de1c64253e Fix missing files 2020-06-04 18:31:43 +02:00
Lynix 0888589716 ShaderNode: Add save/load 2020-06-04 18:31:35 +02:00
Lynix 5790b502f7 ShaderNode: Add VecDiv 2020-06-04 18:30:54 +02:00
Lynix 725ecc7606 ShaderNode: Add FloatValue 2020-06-04 18:30:40 +02:00
Lynix 25562a5856 Renderer/ShaderAst: Add BinaryFunc 2020-06-04 18:29:50 +02:00
Lynix 41b50eeac3 Fix compilation 2020-06-03 19:09:51 +02:00
Lynix 1b4199c0a7 Platform/SDL2: Don't SDL_PumpEvents when not owning Windows
This is a temporary fix
2020-06-02 16:40:08 +02:00
Lynix a73251f2df OpenGLRenderer: Fix version parsing
OpenGL ES 3.0 implementations don't seem to follow the spec, use GL_MAJOR_VERSION and GL_MINOR_VERSION instead
2020-06-01 17:11:34 +02:00
Lynix 8f04412a3f OpenGLRenderer: Fix GLES context creation
core profile bit has not meaning to OpenGL ES
2020-06-01 16:17:04 +02:00
Lynix 960a5c2d05 OpenGLRenderer: Fix extension loading 2020-06-01 16:16:41 +02:00
Lynix effd1b4552 ShaderNode: Handle vector component count at runtime 2020-05-31 18:39:28 +02:00
Lynix 2ecc624fe4 ShaderNode: Add custom output support 2020-05-30 14:31:11 +02:00
Lynix 0a0dce4109 ShaderNode: Add possibility to set variable name (+ force variables) 2020-05-29 18:22:58 +02:00
Lynix eabb8a630d ShaderNode: Extract texture from SampleTexture
Add TextureData and TextureValue node
2020-05-28 10:50:38 +02:00
Lynix 6ff670f13f ShaderNode: Move VecData to DataTypes folder 2020-05-28 10:47:49 +02:00
Lynix 2db78f5b10 Seriously 2020-05-28 00:22:54 +02:00
Lynix bc7ffb6ff3 ShaderNode: Add preview size option 2020-05-28 00:11:34 +02:00
Lynix 0ec927b82e ShaderNode/NodeEditor: Replace QVBoxLayout by QFormLayout 2020-05-28 00:11:16 +02:00
Lynix f8779915d3 Update OpenGL.cpp 2020-05-28 00:10:40 +02:00
Lynix 0f36131d9d Remove dependency to xcb_image 2020-05-28 00:00:48 +02:00
Lynix a1d7bc49c2 Update ScopedXCB.cpp 2020-05-27 23:45:31 +02:00
Lynix 85a5e8eedd Fix compilation 2020-05-27 22:57:32 +02:00
Lynix 89504de465 More commits for science 2020-05-27 21:24:56 +02:00
Lynix 3f5b041a81 Add some GLX files back 2020-05-27 21:16:59 +02:00
Lynix 4f9380da11 More Linux fixes 2020-05-27 21:01:14 +02:00
Lynix 1734b8e5db SDL fixes 2020-05-27 20:37:20 +02:00
Lynix 3fc4de26e3 ShaderGraph: Improve GLSL generation by introducing DeclareVariable statement 2020-05-27 20:08:41 +02:00
Lynix e4348349da Merge branch 'vulkan' into shader-nodes 2020-05-27 20:04:37 +02:00
Lynix e0e7435c55 Merge fixes 2020-05-27 20:03:46 +02:00
Lynix 68208f5426 Merge branch 'master' into vulkan 2020-05-27 19:48:22 +02:00
Lynix 81f03f04e5 Revert Renderer to its pre-SDL state 2020-05-27 19:42:53 +02:00
Lynix 2d189dc85e Fix WindowHandles 2020-05-27 18:55:03 +02:00
Lynix b0c72a6101 Replace platform backends by SDL 2020-05-27 17:47:52 +02:00
Lynix c071f52d8f Platform/Mouse: Add SetRelativeMouseMode 2020-05-27 17:08:49 +02:00
Jérôme Leclercq 1425f99edf Merge branch 'master' into SDL2 2020-05-27 11:11:21 +02:00
Lynix 1d033aabfd ShaderNode: Fix useless variables generation 2020-05-27 10:00:52 +02:00
Lynix d96bc9db6e ShaderNode: Add automatic variables 2020-05-26 20:30:24 +02:00
Lynix 09e08255fb ShaderAst: Add node editor window 2020-05-26 19:22:31 +02:00
Lynix b1b9030359 Math/Vector[I]: Replace implicit pointer conversion by [] operator overload 2020-05-26 16:03:57 +02:00
Lynix 460222e71e ShaderNode: Make #include explicit 2020-05-25 14:40:46 +02:00
Lynix 1165093b4e Replace some insert by emplace 2020-05-23 22:08:12 +02:00
Lynix 8fa456bdf5 Renderer: Remake backend selection 2020-05-23 22:07:22 +02:00
Lynix fdeff2e9d0 ShaderAst: Fix SwizzleOp::GetExpressionType 2020-05-23 22:05:37 +02:00
Lynix 93e76a17c7 ShaderNode: Add preview / cast / texture sampling 2020-05-23 22:04:10 +02:00
Lynix 206724c911 ShaderNode: Add inputs 2020-05-22 23:50:46 +02:00
Lynix 5169e0fe83 ShaderNode: Add captions 2020-05-22 19:21:56 +02:00
Lynix 33c8fe2562 ShaderNode: Add texture support 2020-05-22 15:39:10 +02:00
Lynix effaa9b88f Update ShaderNode 2020-05-19 20:06:32 +02:00
Lynix e23eb74802 Renderer/ShaderAst: Add Sample2D 2020-05-19 20:06:11 +02:00
Lynix c26f3b9b71 Add shadernode (big WIP) 2020-05-18 19:55:12 +02:00
Lynix 8c0d34313e GlslWriter: Fix bug 2020-05-18 19:55:00 +02:00
Jérôme Leclercq 8d8f44f4b9 Make Windows implementation DPI-Aware (+ fix issue with window position) (#322)
* WindowImpl : Fix windows centering on desktop

* WindowImpl : Make nazara DPI aware

* Refactor dpi stuff

* Minor aesthetic stuff

* More minor stuff

Co-authored-by: HardCPP <hardcpp@gmail.com>
2020-05-18 17:04:52 +02:00
Lynix 6a23d51147 OpenGL: Implement commands buffers 2020-05-11 14:12:13 +02:00
Lynix fe5b70ae1c OpenGL: Implement VAOs 2020-05-11 14:10:36 +02:00
Lynix 332278dded OpenGL: Random stuff I forgot 2020-05-11 14:05:40 +02:00
Lynix 2ea03fe05f OpenGL: Implement Framebuffers 2020-05-11 14:03:54 +02:00
Lynix 34804189d8 OpenGL: Set GL_TEXTURE_MAX_LEVEL 2020-05-11 14:01:57 +02:00
Lynix 51009cd745 OpenGL: Switch to SRGB formats 2020-05-11 14:01:45 +02:00
Lynix 3cf53c4d9a OpenGL: Implement RenderPipeline 2020-05-11 14:01:17 +02:00
Lynix 49c68e581a OpenGL: Fix TextureSampler mipmap issue 2020-05-11 13:58:12 +02:00
Lynix 6073d8f592 OpenGL: Implement UploadPool 2020-05-11 13:57:11 +02:00
Lynix b7a7c84a89 Minor fixes 2020-04-26 18:22:07 +02:00
Lynix 32157503e8 OpenGL: Implement RenderPipelineLayout 2020-04-26 18:21:38 +02:00
Lynix 0b05feb7e3 OpenGL: Implement buffers 2020-04-26 18:20:36 +02:00
Lynix 494801282d Minor fixes 2020-04-26 16:29:39 +02:00
Lynix e9f0b01e02 OpenGLRenderer: Implement TextureSampler (and texture units) 2020-04-26 16:29:31 +02:00
Lynix b4b15f826d OpenGL: Implement textures 2020-04-19 15:33:56 +02:00
Lynix 349e915e10 OpenGL: Link contexts to device 2020-04-19 15:33:36 +02:00
Lynix bd6924d66d OpenGL: Handle Spir-V 2020-04-19 15:31:48 +02:00
Lynix f63d045676 OpenGL: Better handling for activation/desactivation 2020-04-19 15:28:59 +02:00
Lynix d62e99091f OpenGL: Implement debug callback 2020-04-19 15:19:16 +02:00
Lynix a842e89881 Fix some missing files 2020-04-19 01:38:52 +02:00
Lynix 506099fcd7 OpenGL: Implement ShaderStage 2020-04-19 01:38:38 +02:00
Lynix 9dd208c3cf OpenGL: Fix contexts & loaders 2020-04-19 01:38:19 +02:00
Lynix 4dc8920a73 Implement some classes 2020-04-19 01:37:56 +02:00
Lynix 5c3eb31d4a OpenGL: Implement device 2020-04-19 01:36:44 +02:00
Lynix 3b24d020e8 Minor stuff 2020-04-19 01:24:37 +02:00
Lynix 68760209c1 Add OpenGLRenderer (WIP) 2020-04-15 19:38:11 +02:00
Lynix ebb271a089 Renderer: Fix crash when choosing another renderer 2020-04-15 19:38:01 +02:00
Lynix e905c3a004 Move Vulkan debug callback to module 2020-04-13 15:12:58 +02:00
Lynix 75241ed8f0 VkRenderWindow: Default to RGBA8 if supported 2020-04-13 15:11:35 +02:00
Lynix d9a08640d6 Vulkan: Add renderpass and framebuffers 2020-04-10 17:36:05 +02:00
Lynix 9507c56fc9 PixelFormat rename
PixelFormatInfo => PixelFormatDescription
PixelFormat => PixelFormatInfo
PixelFormatType => PixelFormat
2020-04-10 14:19:36 +02:00
Lynix 87f1209327 Vulkan: Refactor command buffer and introduce command pool 2020-04-07 21:10:16 +02:00
Lynix f6d21d066e Vulkan: Improve RenderWindow subpass dependencies 2020-04-06 21:14:18 +02:00
Lynix ac8b908079 Vulkan: Replace ShaderBinding& by ShaderBindingPtr 2020-04-06 21:13:59 +02:00
Lynix f443bec6bc Add command buffers (WIP) 2020-04-02 21:07:01 +02:00
Lynix cf396b0792 Add support for VK_EXT_debug_utils 2020-03-26 23:34:58 +01:00
Lynix 15b95ca4a1 Minor and forgotten stuff 2020-03-26 21:20:00 +01:00
Lynix 1dc0ed8e94 Add ShaderBinding 2020-03-26 21:19:46 +01:00
Lynix 874130efd4 Implement Texture and TextureSampler 2020-03-26 21:18:35 +01:00
Lynix b73d3e8f04 Add and make use of Vulkan Memory Allocator 2020-03-26 21:15:49 +01:00
Lynix 509c392e05 Implement UploadPool to efficiently update UBOs 2020-03-26 21:13:06 +01:00
Lynix d892e8eaff Add support for Vulkan 1.1 & 1.2 2020-03-26 20:42:57 +01:00
REMqb 96ea792656 ~ Formatting 2020-03-21 12:42:50 +01:00
Lynix 42d58bd77c Vulkan: Add physical device extension listing 2020-03-18 13:58:30 +01:00
Lynix 07fa581525 Cleanup device creation/selection 2020-03-18 13:48:53 +01:00
Lynix 4ede9f1cfe Add texture in demo 2020-03-18 13:48:05 +01:00
Lynix 9cc206b33e Minor C++ fixes 2020-03-17 17:13:27 +01:00
Lynix 5fde1e335b VulkanBuffer: Use WaitIdle instead of a fence (same effect) 2020-03-15 13:26:36 +01:00
Lynix 74adef0aec OCD fix 2020-03-14 17:34:21 +01:00
Lynix cee47f366f Rename Vk::Queue to Vk::QueueHandle 2020-03-14 17:33:50 +01:00
Lynix b774a879b6 Rework buffers synchronization 2020-03-13 18:44:49 +01:00
Lynix 63547fcd4e Replace DeviceHandle by references
and keep device alive until Vulkan is freed
2020-03-13 18:38:26 +01:00
Lynix 4cf24cde7d VertexDeclaration: Add check for duplicates 2020-03-08 18:10:23 +01:00
Lynix 28cf4ed6e3 Make Vk::Device store a reference to Vk::PhysicalDevice info 2020-03-08 18:10:12 +01:00
Lynix 0e27c2315f Move Vulkan functions list to external files 2020-03-08 18:09:45 +01:00
Lynix 2b3241f354 Add RenderPipelineLayout 2020-03-05 20:35:31 +01:00
Lynix 4941de61da Spaaaace 2020-03-05 17:28:16 +01:00
Lynix c23b6dfa01 Copyright year update
I can't wait to see the conflicts this will cause
2020-03-05 17:27:26 +01:00
Lynix 74275292bf Some cleanup 2020-03-05 17:24:55 +01:00
Lynix 9515f1c807 Improve synchronization based on vulkan-tutorial
https://vulkan-tutorial.com/Drawing_a_triangle/Drawing/Rendering_and_presentation
2020-03-04 20:13:37 +01:00
Lynix 9f4037e461 Reverse front face 2020-03-04 18:55:37 +01:00
Lynix 7ba9a33d35 Add Fence objects (+ use them for sync) 2020-03-04 18:50:41 +01:00
Lynix 7bf734cdd4 Improve pipeline building 2020-03-03 22:26:57 +01:00
Lynix d5c75926c6 WIP (VertexDeclaration) 2020-03-03 01:04:24 +01:00
Lynix 287be5d9b6 WIP 2020-03-01 20:31:48 +01:00
Lynix 286461c482 Make use of Nazara uniform buffer 2020-03-01 12:49:49 +01:00
Lynix af28ea02a8 Vulkan usage fixes 2020-02-29 23:28:59 +01:00
Lynix 5d449095bf Renderer: Add ShaderStage class 2020-02-29 23:28:21 +01:00
Lynix 798425ce10 Some work on render pipelines 2020-02-27 23:12:29 +01:00
Lynix 2944d73586 Fix instance extensions/layers query 2020-02-27 23:12:05 +01:00
Lynix c05ea4095a Begin work on RenderPipeline 2020-02-25 22:56:08 +01:00
Lynix 7bbba14ba0 Fix merge 2020-02-25 20:22:46 +01:00
Lynix cb66dddd45 Merge branch 'nazara-next' into vulkan 2020-02-25 19:15:07 +01:00