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