Commit Graph

204 Commits

Author SHA1 Message Date
SirLynix 42f8cdb151 Add initial support for texture views 2022-12-08 18:17:13 +01:00
SirLynix 902dee6121 Renderer/TextureInfo: Separate layerCount from size 2022-12-08 18:17:13 +01:00
SirLynix e990a320cc WIP 2022-12-08 18:17:13 +01:00
SirLynix 77642cf431 Renderer: Implement and use debug names 2022-12-02 22:46:43 +01:00
SirLynix 842e797cc4 Fix a bunch of warnings 2022-11-13 16:12:49 +01:00
SirLynix 9cd7976a91 Remove "MemoryManager" and very old code 2022-09-24 14:25:52 +02:00
SirLynix a108e6ce65 VulkanRenderer: Update headers and VMA 2022-08-10 00:24:13 +02:00
SirLynix 117f7c2a4b Renderer: Allow to enable or disable API validation layers using config 2022-08-10 00:04:46 +02:00
SirLynix 093d9d344e Renderer: Add support for storage buffers 2022-06-17 20:15:16 +02:00
Jérôme Leclercq 03e2801dbe Split engine to packages NazaraUtils and NZSL (#375)
* Move code to NazaraUtils and NZSL packages

* Reorder includes

* Tests: Remove glslang and spirv-tools deps

* Tests: Remove glslang init

* Remove NazaraUtils tests and fix Vector4Test

* Fix Linux compilation

* Update msys2-build.yml

* Fix assimp package

* Update xmake.lua

* Update xmake.lua

* Fix shader compilation on MinGW

* Final fixes

* The final fix 2: the fix strikes back!

* Disable cache on CI

* The return of the fix™️
2022-05-25 19:36:10 +02:00
Alexandre Janniaux f146661a76 VulkanRenderer: implement metal view
The metal view backing the MoltenVK compatibility wrapper is written in
Obj-C.

It would have been possible to use the Objective-C runtime in C++ but
the code is less performant (the symbol binding is done at first use
instead of the beginning of the program) and actually harder to get
right.

Note that MoltenVK is not linked to the loader, so the libMoltenVK.dylib
object must be available for loading.
2022-05-04 22:12:01 +02:00
SirLynix e7274b24e9 Core/Color: Switch formal from RGBA8 to RGBA32F 2022-04-23 16:08:15 +02:00
SirLynix 68d2dfcae6 Move FieldOffsets class to Shader module and remove Utility dependency 2022-04-04 19:22:18 +02:00
SirLynix 9d526741b9 Add proper support for IndexType and uint32 indices 2022-04-04 09:02:00 +02:00
SirLynix 66ff6cfa81 Minor fixes 2022-04-04 08:17:03 +02:00
Jérôme Leclercq a541d44d03 MoltenVK fix 2022-03-20 15:30:19 +01:00
Jérôme Leclercq d86f61cd82 VulkanRenderer: Fix VK_EXT_debug_utils with MoltenVK 2022-03-20 14:54:38 +01:00
Jérôme Leclercq 43ac86e85c Shader/Modules: proof of concept 2022-03-14 18:30:55 +01:00
Jérôme Leclercq 99e07e6e1e Shader: Add module statement 2022-03-14 18:30:55 +01:00
Jérôme Leclercq 55a5ae0648 VulkanRenderer: Improve pixel format handling 2022-02-27 18:41:43 +01:00
Jérôme Leclercq 5945a7145c Fix MinGW compilation error 2022-02-02 13:48:39 +01:00
Jérôme Leclercq 29786765c6 Big buffer refactor
Replaced RenderBuffer class, replaced AbstractBuffer by Buffer
2022-01-23 00:05:08 +01:00
Jérôme Leclercq 972d5ffd3f Regenerate global headers, unicode and spirv data 2022-01-04 16:36:28 +01:00
SirLynix 89c7bbf197 Update copyright date 2022-01-01 15:30:09 +01:00
Jérôme Leclercq 38b143ce8f VulkanRenderer: Improve ImageAspectFlags handling 2021-12-16 18:29:15 +01:00
Jérôme Leclercq 7e4a058d41 Renderer/[OpenGL|Vulkan]Renderer: Add support for RGBA16F pixelformat 2021-12-05 17:01:55 +01:00
Jérôme Leclercq 17df8fafa4 Renderer/CommandBuffer: Add support for texture blit/copy 2021-12-03 22:15:34 +01:00
Jérôme Leclercq 32c204e95f Minor fixes 2021-10-29 13:29:49 +02:00
Jérôme Leclercq a02b1952c0 Apply header order fix 2021-10-28 09:53:56 +02:00
Jérôme Leclercq f491ee1e38 Apply inclusion fix 2021-10-27 18:09:19 +02:00
Jérôme Leclercq 93ec196dc4 Apply header guard check 2021-10-26 15:52:46 +02:00
Jérôme Leclercq ed7ab31933 Apply copyright fix to all files 2021-10-26 14:31:35 +02:00
Jérôme Leclercq 68708c54f7 Minor stuff 2021-10-04 09:24:42 +02:00
Jérôme Leclercq db85372778 Renderer/Texture: Add Copy method (wip) 2021-09-13 23:34:51 +02:00
Jérôme Leclercq 879b2f7aa6 Renderer/Texture: Implement Update of a region + inherit AbstractImage 2021-09-07 18:42:53 +02:00
Jérôme Leclercq a18d505ae2 VulkanRenderer: Some fixes 2021-09-05 15:49:36 +02:00
Jérôme Leclercq b6c3988bbe Renderer: Implement firstIndex on DrawIndexed command for OpenGL 2021-09-05 15:46:00 +02:00
Jérôme Leclercq e4a38d45bd Renderer/CommandBufferBuilder: Take const AbstractBuffer* to match others methods 2021-08-19 18:47:11 +02:00
Jérôme Leclercq 40ecdda3cd VulkanRenderer: Handle VulkanRenderPass destruction 2021-08-19 18:47:11 +02:00
Jérôme Leclercq c6611fcb9f Renderer/RenderTarget: Add size method and signal 2021-07-10 11:49:35 +02:00
Jérôme Leclercq 552dfbc01e Renderer: Add pipeline and texture sampler info validation 2021-07-09 12:34:38 +02:00
Jérôme Leclercq f14db3f5e9 Renderer: Expose RenderTarget and framebuffers indices 2021-07-03 13:52:29 +02:00
Jérôme Leclercq d88c4ecb5b Renderer/Framebuffer: Add GetType (and rework backend internals) 2021-06-22 17:30:08 +02:00
Jérôme Leclercq 0eda2d0721 Improve global header generation to take ECS into account 2021-06-20 14:06:28 +02:00
Jérôme Leclercq f22b501e25 Add initial support for shader binding sets (WIP) 2021-06-16 16:50:00 +02:00
Jérôme Leclercq 815a7b0c62 Replace const ShaderAst::StatementPtr& by ShaderAst::Statement& in input 2021-06-16 16:50:00 +02:00
Jérôme Leclercq 86097b331b Renderer: Add support for device-enabled features (anisotropic filtering) 2021-06-05 19:51:48 +02:00
Jérôme Leclercq 6161bbec76 Renderer: Handle more depthstencil formats (as Depth24Stencil8 may not be supported everywhere) 2021-06-02 20:16:43 +02:00
Jérôme Leclercq 465837ff12 Renderer: Add support for cubemaps 2021-06-01 12:30:37 +02:00
Jérôme Leclercq ff505e9019 Renderer: Implement and fix front face (winding order) between Vulkan / OpenGL 2021-05-28 22:58:14 +02:00
Jérôme Leclercq cce32a64d4 Upgrade Utility 2021-05-25 10:40:07 +02:00
Jérôme Leclercq 49a2cda0a1 VulkanRenderer: Fix descriptor pool release 2021-05-19 20:32:02 +02:00
Lynix 13feaf4aab Renderer: RenderWindow now requires a RenderDevice 2021-05-16 23:13:00 +02:00
Jérôme Leclercq 51c099b3ce Renderer: Allow UploadPool to handle very big (>= 2MB) blocks 2021-05-15 15:27:17 +02:00
Jérôme Leclercq f280cff0a2 Renderer: Add release queue to fix deletion while use 2021-05-14 02:04:47 +02:00
Jérôme Leclercq 24f7b75654 Renderer: Add support for PixelFormat_RGBA32F 2021-05-14 01:57:32 +02:00
Jérôme Leclercq bbfe06c443 Renderer: Fix UploadPool allocations references 2021-05-14 01:56:32 +02:00
Jérôme Leclercq aeac3282e4 Renderer: Add RenderDevice::GetDeviceInfo() 2021-05-14 01:55:16 +02:00
Jérôme Leclercq adbf1e1da0 Renderer: Add proper support for blending 2021-05-14 01:50:46 +02:00
Jérôme Leclercq 10aa7231b6 Renderer: Fix MRT support 2021-05-05 12:01:20 +02:00
Jérôme Leclercq 55c2dd8485 Add FrameGraph (WIP) 2021-05-02 13:58:35 +02:00
Jérôme Leclercq 87ce2edc6e Shader: Add initial support for options (WIP) 2021-04-20 18:18:27 +02:00
Jérôme Leclercq d335d44d6a Shader: Cleanup and rename AST files 2021-04-20 18:18:27 +02:00
Jérôme Leclercq feffcfa6e5 VulkanRenderer: Fix handling of shader modules 2021-04-20 18:18:27 +02:00
Jérôme Leclercq e4aabf309e Renderer: Replace ShaderStage by ShaderModule (a module can handle multiple stages) 2021-04-20 18:18:27 +02:00
Jérôme Leclercq d59423afca Renderer: Rename some TextureUsage 2021-02-24 23:50:12 +01:00
Jérôme Leclercq fb3468854f Renderer: Implement Framebuffers 2021-02-20 19:22:08 +01:00
Jérôme Leclercq ac3db8a8bf Utility/PixelFormat: Add preliminary support for SRGB formats (WIP) 2021-02-20 18:01:03 +01:00
Jérôme Leclercq d058a127e1 Renderer/RenderPass: Implement RenderPass correctly 2021-02-15 18:14:47 +01:00
Jérôme Leclercq 5eedd3c0bc Renderers: Fix UploadPool 2021-01-28 15:59:18 +01:00
Jérôme Leclercq c76d6505b0 Renderer/ShaderBinder: Make Update take a pointer and size 2021-01-22 23:15:31 +01:00
Jérôme Leclercq f327932738 Commit current work
Reworked conditions, added uber-shaders, comparison nodes, fixed Discard
2021-01-02 21:15:59 +01:00
Jérôme Leclercq 40f3072ff9 Renderer: Add RenderPipeline::GetPipelineInfo 2020-10-30 23:07:21 +01:00
Jérôme Leclercq b62130dab9 VulkanRenderer: Fix physical device bullshit
Keep a single list instead of many
2020-10-30 23:06:56 +01:00
Jérôme Leclercq 009e5a0466 Renderer: Rename ShaderStageImpl to ShaderStage 2020-10-30 23:06:15 +01:00
Jérôme Leclercq 65337c6a38 Fix a lot of warnings and some errors 2020-09-26 11:44:09 +02:00
Jérôme Leclercq 2b6a463a45 Remove Nz::String and Nz::StringStream 2020-09-25 19:31:01 +02:00
Jérôme Leclercq f15709c8a3 Renderer: Replace unique_ptr by shared_ptr 2020-09-20 15:56:58 +02:00
Jérôme Leclercq 631aeb77a2 Update global headers 2020-09-11 13:50:19 +02:00
Jérôme Leclercq 385927b05a Fix minor stuff 2020-09-04 16:14:11 +02:00
Jérôme Leclercq 53e5aa924f VulkanRenderer/Swapchain: Rename Buffer to Image 2020-09-04 15:58:07 +02:00
Jérôme Leclercq 69dda85e45 Vulkan: Refactor function list headers 2020-09-04 15:21:46 +02:00
Jérôme Leclercq 5f9025c23c Fix VulkanRenderer compilation under Linux ( 🖕 X.h) 2020-09-04 15:13:18 +02:00
Jérôme Leclercq 7ea0b223ec Linux fixes 2020-09-01 19:18:27 +02:00
Jérôme Leclercq 35dccd822c Remove useless Wrapper.hpp headers 2020-08-28 15:52:42 +02:00
Jérôme Leclercq 056b78c2f7 Fix 32bits compilation 2020-08-27 20:09:51 +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 982d28cace Fix infinite loop 2020-08-25 12:34:43 +02:00
Jérôme Leclercq 1a12e18a36 Fix copyright dates and some defines 2020-08-11 00:01:49 +02:00
Lynix 8fa456bdf5 Renderer: Remake backend selection 2020-05-23 22:07:22 +02:00
Lynix 332278dded OpenGL: Random stuff I forgot 2020-05-11 14:05:40 +02:00
Lynix 494801282d Minor fixes 2020-04-26 16:29:39 +02:00
Lynix cbd81e3abf Vulkan: Fix DeviceObject not destroying previous object 2020-04-26 16:26:24 +02:00
Lynix 3b24d020e8 Minor stuff 2020-04-19 01:24:37 +02:00
Lynix dd74e5ecc1 Includes fix 2020-04-13 16:29:15 +02:00
Lynix e905c3a004 Move Vulkan debug callback to module 2020-04-13 15:12:58 +02:00
Lynix 7447875753 Vulkan/Surface: Remove MIR support 2020-04-13 15:12:19 +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