Commit Graph

670 Commits

Author SHA1 Message Date
SirLynix 85b7e06ae8 Fix some additional warnings 2022-11-19 13:44:33 +01:00
SirLynix 5ca2cf9320 Fix a bunch of warnings 2022-11-19 11:02:16 +01:00
SirLynix 842e797cc4 Fix a bunch of warnings 2022-11-13 16:12:49 +01:00
SirLynix 640d877761 Forgot this file 2022-11-07 02:16:47 +01:00
SirLynix ad1f3bc321 Graphics/Graphics: Add preferred depth format 2022-11-06 23:45:37 +01:00
SirLynix fe0d70d9e1 Graphics/MaterialInstance: Add LoadFrom* 2022-11-05 00:28:33 +01:00
SirLynix 1205155466 Graphics/Material: Rename CreateInstance to Instantiate 2022-11-05 00:14:16 +01:00
Jérôme Leclercq dc6ce8427c
Refactor material system (#382) 2022-10-31 19:53:41 +01:00
SirLynix 9cd7976a91 Remove "MemoryManager" and very old code 2022-09-24 14:25:52 +02:00
SirLynix 99c9df5731 Graphics: Add default materials 2022-09-08 08:57:11 +02:00
SirLynix fbdc1faf8c Graphics: Add TextureLoader 2022-09-07 13:31:21 +02:00
SirLynix 25f44a624a Fix compilation 2022-08-30 19:45:05 +02:00
SirLynix 04d2f4a6c2 Graphics/MaterialPipeline: Rework GetRenderPipeline
Decrease the need for memory allocations in most cases (especially for sprites)
2022-08-30 19:29:23 +02:00
SirLynix 017a6c7af3 Graphics: Use memory pools for render elements 2022-08-30 19:27:52 +02:00
SirLynix 50ed8b4028 Add initial support for skeletal entities / components 2022-08-27 03:07:48 +02:00
SirLynix 7ada266917 Graphics: Add PredefinedSkeletalData 2022-08-25 12:59:01 +02:00
SirLynix 104f60f3e7 Add support for GPU skinning (WIP) 2022-08-25 12:59:01 +02:00
SirLynix 507a4f16be Fix compilation 2022-08-17 20:22:49 +02:00
SirLynix c669c68533 Minor fixes 2022-08-17 20:13:00 +02:00
SirLynix f1549b934c Graphics: Add DebugDrawer support 2022-08-17 20:12:49 +02:00
Lynix ad8b46db38 Rename Diffuse to BaseColor 2022-07-19 20:02:01 +02:00
SirLynix ccd7885213 Fix compilation 2022-07-18 22:04:44 +02:00
SirLynix 3e21b4bea6 Add PBR rendering (WIP) 2022-07-18 22:04:44 +02:00
SirLynix 96599d1116 Graphics: Add LinearSlicedSprite class 2022-07-12 08:45:02 +02:00
SirLynix 6203d5f0d1 Graphics/SlicedSprite: Fix GetTopLeftCorner linking 2022-07-12 08:44:43 +02:00
SirLynix 1b678defae Add system graph (wip) 2022-07-02 19:45:50 +02:00
SirLynix 6f18a02999 Add fullscreen vertex shader module 2022-06-16 19:26:57 +02:00
SirLynix 62ba4f172b Graphics/GraphicalMesh: Allow to update submeshes 2022-06-16 18:19:48 +02:00
SirLynix 8e8bee7037 Temp fix for NZSL update 2022-06-15 20:26:14 +02:00
SirLynix c7b6d83bbc Last nzsl version update 2022-06-07 20:18: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
SirLynix b6ab3ba1b3 Graphics: Add light type 2022-05-12 23:09:40 +02:00
SirLynix c209552f81 Math/Matrix4: Rework "transform matrix" support 2022-04-19 18:32:16 +02:00
SirLynix f9d4451b4a OCD fix 2022-04-19 18:32:16 +02:00
SirLynix 9d526741b9 Add proper support for IndexType and uint32 indices 2022-04-04 09:02:00 +02:00
SirLynix f14b10baf4 Graphics/ViewerInstance: fix typo 2022-03-31 13:35:08 +02:00
SirLynix 8146ec251a Shader: Add support for partial sanitization 2022-03-25 12:54:51 +01:00
Jérôme Leclercq 615509d1ba Add support for shader hotreloading 2022-03-17 21:36:36 +01:00
Jérôme Leclercq 0e92ef823d Graphics: Use module name to retrieve material shaders 2022-03-15 13:14:43 +01:00
Jérôme Leclercq e40e8eb204 Shader: Change module system (no longer based on path) 2022-03-14 18:30:55 +01:00
Jérôme Leclercq db0c1e6e8c Shader: Add module resolver + use modules for engine shaders 2022-03-14 18:30:55 +01:00
Jérôme Leclercq a7acf32886 Shader: Replace indices-based option keys by CRC32 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 8a097afb1b Graphics/FramePass: Replace render rect parameter of CommandCallback by FramePassEnvironment 2022-02-27 18:37:05 +01:00
Jérôme Leclercq fe16584c8c Minor fixes 2022-02-23 23:48:20 +01:00
Jérôme Leclercq 0dd8c21543 Graphics/ForwardFramePipeline: Fix scissor update 2022-02-22 13:31:22 +01:00
Jérôme Leclercq 20a86312ff Graphics/FramePipeline: Replace maps with memory pools and indices 2022-02-21 20:47:11 +01:00
Jérôme Leclercq cc0fc53bd3 Graphics: Move scissor box from InstancedRenderable to GraphicsComponent 2022-02-21 20:44:54 +01:00
Jérôme Leclercq 402e16bd2b Shader: Handle type as expressions 2022-02-17 13:23:56 +01:00
Jérôme Leclercq 5ce8120a0c Graphics: Move FramePipeline passes to separate classes 2022-02-16 18:29:27 +01:00
Jérôme Leclercq f466a7494b Update for EnTT 3.9 2022-02-08 20:05:14 +01:00
Jérôme Leclercq 6457854e03 Minor fixes 2022-02-04 13:54:26 +01:00
Jérôme Leclercq de7fee348a Graphics/ForwardFramePipeline: Frustum cull lights 2022-02-02 19:39:46 +01:00
Jérôme Leclercq 109127459b Graphics/ForwardFramePipeline: Reuse light UBO 2022-02-02 13:47:29 +01:00
Jérôme Leclercq 8a3a8547dc Add light support (WIP) 2022-02-02 12:55:39 +01:00
Jérôme Leclercq 29a01e975c Merge fix 2022-01-23 20:00:11 +01:00
Jérôme Leclercq 249aebac05 Merge branch 'master' into phong-lighting 2022-01-23 13:36:48 +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 b3ff5767f7 Graphics/Sprite: Fix AABB 2022-01-21 21:44:21 +01:00
Jérôme Leclercq b0a3941f4e Add Phong lighting (WIP) 2022-01-11 19:47:29 +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 b98fd65a01 Fix a lot of small bugs/warnings 2021-12-25 20:07:53 +01:00
Jérôme Leclercq ed3ee34565 Graphics/Sprite: Allow to change origin 2021-12-23 17:32:18 +01:00
Jérôme Leclercq 5963f4c848 Graphics/FrameGraph: Fix texture pool issue 2021-12-19 18:29:20 +01:00
Jérôme Leclercq 07199301df Graphics/FrameGraph: Handle invalidation and flush barriers 2021-12-16 18:29:40 +01:00
Jérôme Leclercq 90ab0e9438 Graphics/FramePass: Add SetReadInput method 2021-12-13 23:44:34 +01:00
Jérôme Leclercq dfa2a0040a Graphics/FrameGraph: Add AttachmentProxy 2021-12-13 23:44:14 +01:00
Jérôme Leclercq 4eb96849db Graphics/FrameGraph: Reuse textures if possible 2021-12-05 16:53:02 +01:00
Jérôme Leclercq 11d4ba22da Graphics/ForwardFramePipeline: Use RenderGraph to merge viewers views 2021-12-03 22:17:24 +01:00
Jérôme Leclercq 61779d1cad Graphics/Widgets: Add support for scissoring 2021-12-01 20:26:33 +01:00
Jérôme Leclercq a483e16e15 Graphics: Fix render layer sorting 2021-12-01 20:25:55 +01:00
Jérôme Leclercq 653c9e0028 Graphics/GraphicsComponent: Make renderMask a mandatory parameter 2021-12-01 18:58:25 +01:00
Jérôme Leclercq 8b899253b1 Graphics/InstancedRenderable: Add support for render layer 2021-12-01 18:57:50 +01:00
Jérôme Leclercq 45e5baf194 Graphics: Rename MaterialPassFlag::Transparent by MaterialPassFlag::SortByDistance 2021-12-01 10:41:15 +01:00
Jérôme Leclercq e1a378e733 Graphics/[SpriteChain|Submesh]Renderer: Fix material pass not breaking batching 2021-12-01 10:40:47 +01:00
Jérôme Leclercq b256ddd06b Graphics/SlicedSprite: Handle corner removal + lower size 2021-12-01 10:38:53 +01:00
Jérôme Leclercq db88f0ca0d Graphics: Add SlicedSprite class 2021-11-28 20:19:59 +01:00
Jérôme Leclercq 01cd4986cc Minor fixes 2021-11-28 20:19:37 +01:00
Jérôme Leclercq 0c3bcf6c86 Graphics/Camera: Add render order property 2021-11-28 20:15:22 +01:00
Jérôme Leclercq b6d366c89d Graphics/Sprite: Reverse vertices 2021-11-24 22:29:47 +01:00
Jérôme Leclercq d2cfc5fdf5 Graphics/GraphicsComponent: Add visibility control 2021-11-24 22:07:56 +01:00
Jérôme Leclercq c9aba016a8 Graphics/Sprite: Add [Get|Set]TextureCoords & SetTextureRect 2021-11-24 22:00:29 +01:00
Jérôme Leclercq b8b0552a4e Graphics: Fix blending (temporary fix until frame graph handles it) 2021-11-24 21:56:33 +01:00
Jérôme Leclercq 8f1cc79dc2 Graphics/InstancedRenderable: Add signal to tell some renderables need to be rebuild 2021-11-21 19:06:10 +01:00
Jérôme Leclercq 2a8568f2ac Graphics/InstancedRenderable: Replace constructor AABB with UpdateAABB method 2021-11-21 17:14:39 +01:00
Jérôme Leclercq 8c3a0a9200 Graphics/Camera: Update default values (according to projecting type) 2021-11-14 19:54:30 +01:00
Jérôme Leclercq ecd1e43890 Graphics: Add support for multi-viewer rendering (a bit hacky) 2021-11-13 20:08:03 +01:00
Jérôme Leclercq 342c053faa Graphics/Camera: Add clear color per viewer 2021-11-13 20:06:34 +01:00
Lynix 5d849129fd Graphics: Remove CullingList (fixes MinGW compilation) 2021-10-30 00:51:54 +02:00
Jérôme Leclercq 9e1df33440 Graphics: Add RenderMask (WIP) 2021-10-29 16:50:38 +02:00
Jérôme Leclercq a3d9aaf1fb Merge branch 'master' into automatic-file-fix 2021-10-28 09:57:59 +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 4067116eb8 Graphics/ForwardFramePipeline: Handle material invalidation correctly 2021-10-26 20:26:13 +02:00
Jérôme Leclercq 66bbf63e87 Core/Algorithm: Add SafeCast 2021-10-26 20:26:13 +02:00
Jérôme Leclercq 6bab824e4f Graphics: Use default white texture if material has empty texture slot 2021-10-26 20:26:13 +02:00
Jérôme Leclercq e84ec8e4ac Proof of concept 2021-10-26 20:26:13 +02:00
Jérôme Leclercq 58485cfa79 Rework shader bindings (WIP) 2021-10-26 20:26:13 +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
Lynix c3999d708f Graphics: Add DistanceAsSortKey function 2021-10-18 16:46:03 +02:00
Jérôme Leclercq a66f6faed1 Add widgets (WIP) 2021-10-04 09:25:45 +02:00
Jérôme Leclercq 601ed047ba Fix some initialization order 2021-09-24 15:24:21 +02:00
Jérôme Leclercq 74534236ef Graphics: Fix some warnings 2021-09-13 23:35:46 +02:00
Jérôme Leclercq 7f6b61df53 Graphics/SpriteChainRenderer: Improve copy 2021-09-13 23:35:31 +02:00
Jérôme Leclercq 72f2a5b531 Graphics: Add initial support for transparency 2021-09-08 19:08:44 +02:00
Jérôme Leclercq c6763bc623 Graphics/Camera: Fix Orthographic projection matrix 2021-09-08 19:08:21 +02:00
Jérôme Leclercq ece18bf472 Implement back text rendering (WIP) 2021-09-07 18:45:10 +02:00
Jérôme Leclercq abdcd63058 Graphics: Add support for draw call data (texture overlay) 2021-09-05 18:26:12 +02:00
Jérôme Leclercq 26e5a41dce Graphics/SpriteChainRenderer: Reuse vertex buffers and memory 2021-09-05 16:04:10 +02:00
Jérôme Leclercq 938d965e06 Graphics: Add SpriteChainRenderer 2021-09-05 15:50:17 +02:00
Jérôme Leclercq 732bb89a86 Graphics/UberShader: Add config callback 2021-09-05 15:46:59 +02:00
Jérôme Leclercq 02a12d9328 Handle shader options of any type 2021-09-03 19:33:41 +02:00
Jérôme Leclercq 0179ef4d65 Graphics: Improve frustum culling (do it once per viewer) 2021-08-21 01:42:53 +02:00
Jérôme Leclercq 8546631f62 Add frustum culling (WIP) 2021-08-19 23:26:34 +02:00
Jérôme Leclercq 8db8533300 Fixes a lot of warnings and move math enums to enum classes 2021-08-19 20:27:20 +02:00
Jérôme Leclercq a2a0e6bd54 Graphics: Add DepthMaterial 2021-08-19 18:47:11 +02:00
Jérôme Leclercq 7aafcfaae9 Minor stuff 2021-08-19 18:47:11 +02:00
Jérôme Leclercq c8e7fa5063 Graphics: Fix RenderElement missing export 2021-08-19 18:47:11 +02:00
Jérôme Leclercq 793952eb67 Graphics: Add Camera class 2021-08-19 18:47:11 +02:00
Jérôme Leclercq 9a311da2c8 Graphics: Add MaterialPassRegistry 2021-08-19 18:47:11 +02:00
Jérôme Leclercq 5b1123b971 Graphics: Fix WorldInstance removal while being in use 2021-08-19 18:47:11 +02:00
Jérôme Leclercq 289472dc9f Graphics/ForwardFramePipeline: Minor fixes 2021-08-19 18:47:11 +02:00
Jérôme Leclercq 3de0edec6f Graphics/RenderQueue: Remake it with a naive implementation
The idea is to improve it in the future, after profiling
2021-08-19 18:47:11 +02:00
Jérôme Leclercq 08921b36a6 Graphics: Add RenderElement and ElementRenderer (WIP) 2021-08-19 18:47:11 +02:00
Jérôme Leclercq 7fb5109dfa Graphics/FrameGraph: Make use of RenderPassCache 2021-08-19 18:47:11 +02:00
Jérôme Leclercq b5045a2c59 Graphics: Add Material and made use of passes (WIP) 2021-08-19 18:47:11 +02:00
Jérôme Leclercq f61deabe92 Graphics/BakedFrameGraph: Don't release in flight resources 2021-08-19 18:47:11 +02:00
Jérôme Leclercq 5669b5bc60 Graphics: Rename Material to MaterialPass 2021-08-19 18:47:11 +02:00
Jérôme Leclercq 90df17d45a Graphics/Material(Pipeline): Remove leftovers attributes 2021-07-13 14:38:09 +02:00
Jérôme Leclercq 99876d935d Graphics/Material: Fix IsDepthClampEnabled method 2021-07-13 12:04:19 +02:00
Jérôme Leclercq ae364934bb Graphics/CameraComponent: Add remaining features 2021-07-10 14:27:38 +02:00
Jérôme Leclercq c72dfc8004 Graphics: Add forceDisableFeatures config 2021-07-09 12:37:11 +02:00
Jérôme Leclercq 8458301a64 Add support for depth clamping 2021-07-09 00:22:08 +02:00
Jérôme Leclercq a895e553d4 Graphics: rework ubershaders to prevent duplicate shaders modules
Also rename all remaining conditions to options
2021-07-08 14:52:39 +02:00
Jérôme Leclercq 4ac5fe7cba Graphics: Add RenderSystem and frame pipeline 2021-07-06 11:04:22 +02:00
Jérôme Leclercq 1c482bbde6 Graphics/BakedFrameGraph: Handle resize in a better way 2021-07-03 13:57:18 +02:00
Jérôme Leclercq e073e1a44d Graphics/Material: Add PrimitiveMode support 2021-06-20 14:06:28 +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 c1a9a22177 Add initial ECS support 2021-06-20 14:06:28 +02:00
Jérôme Leclercq 6f87a01fb2 Graphics: Improve WorldInstance handling 2021-06-20 14:06:28 +02:00
Jérôme Leclercq 298beaedc0 Graphics/BasicMaterial: Add IsAlphaTestEnabled() 2021-06-16 16:50:00 +02:00
Jérôme Leclercq 3cd9172f7a Graphics: Make use of shader binding sets 2021-06-16 16:50:00 +02:00
Lynix 54d56abc56 WIP 2021-06-16 16:50:00 +02:00
Jérôme Leclercq e26c1f8e68 Graphics: Add ViewerInstance class 2021-06-05 19:06:02 +02:00
Jérôme Leclercq 743f8eeb24 Graphics/ModelInstance: Add UpdateWorldMatrix method 2021-06-05 19:05:06 +02:00
Jérôme Leclercq 9ee3a0d6be DeferredShading: Add bloom 2021-06-01 20:28:19 +02:00
Jérôme Leclercq cce32a64d4 Upgrade Utility 2021-05-25 10:40:07 +02:00
Lynix 13feaf4aab Renderer: RenderWindow now requires a RenderDevice 2021-05-16 23:13:00 +02:00