Commit Graph

42 Commits

Author SHA1 Message Date
SirLynix f98cbcd00a Copyright year update 2023-01-22 17:41:18 +01:00
Jérôme Leclercq dc6ce8427c
Refactor material system (#382) 2022-10-31 19:53:41 +01: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 3e21b4bea6 Add PBR rendering (WIP) 2022-07-18 22:04:44 +02:00
SirLynix 8e8bee7037 Temp fix for NZSL update 2022-06-15 20:26:14 +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
Jérôme Leclercq a7acf32886 Shader: Replace indices-based option keys by CRC32 2022-03-14 18:30:55 +01:00
SirLynix 89c7bbf197 Update copyright date 2022-01-01 15:30:09 +01:00
Jérôme Leclercq ed7ab31933 Apply copyright fix to all files 2021-10-26 14:31:35 +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 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 5669b5bc60 Graphics: Rename Material to MaterialPass 2021-08-19 18:47:11 +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
Lynix 13feaf4aab Renderer: RenderWindow now requires a RenderDevice 2021-05-16 23:13:00 +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 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 ad88561245 Graphics: Fix MaterialPipeline::GetRenderPipeline 2020-10-31 16:29:02 +01:00
Jérôme Leclercq 89609570f4 Graphics: WIP (almost working) 2020-10-30 23:08:48 +01:00
Jérôme Leclercq 3b2e375382 WIP 2020-09-26 20:04:05 +02:00
Jérôme Leclercq 2a875c8bdc Remove Graphics module and fix compilation 2020-08-27 19:43:31 +02: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 3d22321109 Big f***ing cleanup part 1 2020-02-23 00:42:22 +01:00
Jérôme Leclercq 41e2d3e448 Graphics/Material: Add EnableVertexColor temporary 2018-06-15 14:13:18 +02:00
Lynix 9f95a6122b Graphics/MaterialPipeline: Disable depth sorting for Translucent2D pipeline 2018-04-15 02:35:51 +02:00
Jérôme Leclercq 2da086b7df New Render queues (#161)
* Add new render queues proof of concept + scissoring support (WIP)

* Graphics: Adapt basic sprites rendering to new render queue system

* Graphics: Fix layers when rendering sprites

* Graphics/RenderQueue: Fix sprite default overlay

* Graphics: Enable scissor test by default

* SDK/Widgets: Enable scissoring on widgets

* Graphics: Handle almost everything with the new renderqueues system

Todo:
- Billboard rendering
- Proper model rendering

* Graphics/RenderQueue: Billboard drawing now works (WIP)

At 1/4 of previous code performances due to individually process of billboards

* Add new render queues proof of concept + scissoring support (WIP)

* Graphics: Adapt basic sprites rendering to new render queue system

* Graphics: Fix layers when rendering sprites

* Graphics/RenderQueue: Fix sprite default overlay

* Graphics: Enable scissor test by default

* SDK/Widgets: Enable scissoring on widgets

* Graphics: Handle almost everything with the new renderqueues system

Todo:
- Billboard rendering
- Proper model rendering

* Graphics/RenderQueue: Billboard drawing now works (WIP)

At 1/4 of previous code performances due to individually process of billboards

* Graphics/RenderQueues: Add full support for billboards

* Graphics/RenderQueue: Cleanup and improve billboard rendering

* Graphics/RenderQueue: Fix model drawing

* Examples/Particles: Fix lighting on space station

* Graphics: Cleanup forward render queue/technique

* Fix compilation under Linux

* Graphics/ForwardRenderTechnique: Fix case when scissoring is enabled on material but disabled on element

* Add support for Deferred Shading

* SDK/Widgets: Fix widget rendering

* Graphics: Remove legacy code from render queues

* Graphics: Fix some objects sometimes not showing up due to broken scissor box

* Fix compilation error

* Sdk/GraphicsGraphics: Fix bounding volume

* SDK/World: Fix self-assignation

* Update changelog for render queues
2018-04-11 19:36:52 +02:00
Lynix 96f3104347 Fix Basic uber-shader compilation on some drivers 2018-03-10 13:02:30 +01:00
Lynix 75d57b3c29 Merge remote-tracking branch 'refs/remotes/origin/master' into reflection-mapping 2017-05-11 20:52:04 +02:00
Lynix 52a4a590e1 Graphics/Material: Fix depth sorting flag handling for meshes 2017-04-22 17:13:51 +02:00
Lynix 7d5d21f025 Merge remote-tracking branch 'refs/remotes/origin/master' into reflection-mapping 2017-01-21 15:56:37 +01:00
DrLynix f383eca19a Update copyright year 2017-01-20 12:58:35 +01:00
Lynix d2ee4744a9 Merge remote-tracking branch 'refs/remotes/origin/master' into reflection-mapping 2017-01-06 17:29:54 +01:00
Lynix a00dd39c51 Graphics/MaterialPipeline: Fix error when failing to override a shader 2016-12-21 18:25:22 +01:00
Lynix 37d36a89a6 Graphics: Add basic reflection mapping 2016-12-18 01:18:48 +01:00
Lynix 459c5e7a09 Graphics/Shaders: Add possibility to override Über-shaders at runtime 2016-12-18 01:16:26 +01:00
Lynix 682dab32b3 Graphics/Shader: Make texture units statics
Provides better performances and prevents the sampler type bug to happen
2016-12-18 01:13:46 +01:00
Lynix 6749bde3fc Graphics/MaterialPipeline: Add Translucent3D pipeline
Former-commit-id: 022e9e4eb922cc4aa5c9b973614e37fba77379b1 [formerly 26fe778c20258a71515be156a6818b4e37b8cd2e] [formerly dd5cda750e0a5ecbec9bdd0079233c13d4537b95 [formerly 27617b283f8c0d809f59cc76c05b3df75cd4c268]]
Former-commit-id: b50ce9e7fa9a7cdc13b372a1aebe257f3df80a65 [formerly c264fd6dab96b279e74d90b8884dc2ffd3c26f9a]
Former-commit-id: 4f8a31cb583b21a12df57bd990170b384522e5ea
2016-08-14 18:00:38 +02:00
Lynix 2f007efbfe Graphics/MaterialPipeline: Fix Translucent2D material not having blending enabled
Former-commit-id: 98893c36d727a47c802c6aa190c9950e623325a7 [formerly 445ebf13e8ada3852afd0076508fc7fc9ef0cc2a] [formerly d050d8e58c2e4b7a25e450b7487d15986ec5f116 [formerly ca2c8cb540fe5dfc57ec766df017a1a6c03ebab9]]
Former-commit-id: cea769b7017ab98074f009cdf49749132d606248 [formerly f7492974f1ad6c2698de4357cd1d6bac354888de]
Former-commit-id: 22369659913859e780aa9db111bcc24823b68936
2016-08-14 17:58:54 +02:00
Lynix 30380d2979 Graphics/MaterialPipeline: Fix default pipeline not having an ubershader
Former-commit-id: 740af3fb62dff7b07f184e8d13d00937b5e36f7d [formerly aedb01d9208c9e6579cae5d03e5a0c90424383f7] [formerly eb67802a9d6a3d67590f5c61e4b75c518da792ef [formerly d83b7c4c0241d43fa7d85741f67866303c1e86b6]]
Former-commit-id: c89e8612ad25f22a4bc471e916221c7338765b4d [formerly 1a72ceeeb9fa47b40fabfa2c6b98231e918bd18d]
Former-commit-id: 105238d08f0f41832751e0768324066c853b84b8
2016-08-14 17:58:38 +02:00
Lynix 5ebff77ef0 Fix compilation with GCC/Clang
Thanks to @Gawaboumga


Former-commit-id: c2ecad3d8c0bad06cb47b906829585c8d0b910c0 [formerly 7790b792e730ed65c3e8b8dddbd91b1527631e2e] [formerly ae62fe532d14dd33bfc88cf7bca1d19e63487a3f [formerly 41b273ee595cc56c6145651fb4caa1ceca0b2bf6]]
Former-commit-id: 7d4c3b3d0b48235a6c3534154c5787738440b2ae [formerly 96dcb709ba81c5696ba633b06e887007d5d9caf5]
Former-commit-id: 2a2013af6d26bb64362d1edd2e6aacaac000708f
2016-08-10 22:17:55 +02:00
Lynix ac25df0126 Graphics: Separate pipeline state from Material into a new class, MaterialPipeline
This allows much more efficient batching, along with pipeline reusage and preparation for the Vulkan API


Former-commit-id: fd2de2f0e9612ea275ee69c5578c68e7169cd05b [formerly 53bd8a5ed5695311b7543ad717df63f93fad2da6] [formerly 171740929652ac9fe30e84983709388859cedd6b [formerly 25096a76678f1052e76f67d26b458077a0632cc3]]
Former-commit-id: 7978dbeb87af2eac9e5501a97afa83849648bf6e [formerly 81b6cce1ee81a2ca8873d3c70d468b2c71510c95]
Former-commit-id: 6663e2721c3f79d5f1e3f33c6183174378b502f4
2016-08-05 22:11:13 +02:00