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
8d5276ddac
XMake: update SPIRV and Unicode data parsers
2021-10-26 11:14:20 +02:00
Jérôme Leclercq
14fb2b83ae
Minor fixes
2021-10-25 15:48:49 +02:00
Jérôme Leclercq
0442db1c53
Shader: Add support for compound operators
2021-09-24 15:39:03 +02:00
Jérôme Leclercq
601ed047ba
Fix some initialization order
2021-09-24 15:24:21 +02:00
Jérôme Leclercq
ea49f56530
Shader/LangParser: OCD fix
2021-09-23 17:49:36 +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
ac08afe9f1
Shader: Add missing ! and != parsing
2021-08-19 18:47:11 +02:00
Jérôme Leclercq
a5b71f33b9
Shader: Fix support of conditional functions
2021-08-19 18:47:11 +02:00
Jérôme Leclercq
863fb3ea7e
Shader: Fix optimization issues
...
Moving the unique_ptrs but failing to optimize the expression could cause issues
Also the constant query callback defaulted to ConstantValue (without const ref), thanks auto.
2021-07-11 11:17:48 +02:00
Jérôme Leclercq
996b5ef85c
Shader: Rename ConstantIndexExpression to ConstantExpression
2021-07-08 15:24:22 +02:00
Jérôme Leclercq
3a31c77524
Shader: Rename ConstantExpression to ConstantValueExpression
2021-07-08 15: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
d3e0d8a39f
Shader: Replace select_opt by const_select
2021-07-08 10:53:11 +02:00
Jérôme Leclercq
1f6937ab1b
Shader: Implement const if and const values
2021-07-07 22:38:24 +02:00
Jérôme Leclercq
72edff30c7
Shader: Add support for logical and/or
2021-07-07 22:38:24 +02:00
Jérôme Leclercq
f9af35b489
Shader: Attribute can now have expressions as values and struct fields can be conditionally supported
2021-07-07 22:38:24 +02:00
Jérôme Leclercq
ae73f68d8c
Shader: Fix variable shadowing with GLSL
2021-07-06 11:43:47 +02:00
Jérôme Leclercq
f9b453bd2b
Shader: Add support for branching and discard statements
2021-07-03 19:13:22 +02:00
Jérôme Leclercq
dfa46ebaa5
Fix shader generation unit tests
2021-06-16 16:50:00 +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
50bf26d92f
Shader: Add support for pow intrinsic
2021-06-05 01:29:36 +02:00
Jérôme Leclercq
4465e230af
Shader/NZSL: Add support for array indexing
2021-06-01 16:22:41 +02:00
Jérôme Leclercq
0f3c0abb96
Shader/ShaderAst: Rename AccessMember* to Access*
2021-06-01 12:38:17 +02:00
Jérôme Leclercq
16e2f5f819
Shader: Add support for depth_write and early_fragment_tests attributes (+ FragDepth builtin)
2021-06-01 12:32:24 +02:00
Jérôme Leclercq
465837ff12
Renderer: Add support for cubemaps
2021-06-01 12:30:37 +02:00
Jérôme Leclercq
2f8a82ed05
Shader/ShaderBuild: Fix ambiguity for AccessMember
2021-05-29 00:56:04 +02:00
Jérôme Leclercq
109b2a156e
OpenGLRenderer: Allow RenderPipeline without a fragment shader on OpenGL ES
2021-05-29 00:32:00 +02:00
Jérôme Leclercq
58fe411750
Shader/GlslWriter: Move function forward declaration before functions using them
...
Because of some weird ass shit bug in nvidia driver if functions were forward declared before declaration of UBO they were using
2021-05-26 22:21:57 +02:00
Jérôme Leclercq
e7a2573221
Shader: Add support for FragCoord builtin
2021-05-26 22:17:07 +02:00
Jérôme Leclercq
f6fd996bf1
Shader: Add support for custom functions calls (and better handle intrinsics)
2021-05-22 13:37:54 +02:00
Jérôme Leclercq
a7235ab02d
Shader: Add support for max/min intrinsic
2021-05-19 20:31:26 +02:00
Jérôme Leclercq
a002d5c210
Shader: Add constant cast optimization
2021-05-18 17:25:37 +02:00
Lynix
ccccbfe0ad
Shader/SpirV: Fix UInt32 support
2021-05-16 23:14:39 +02:00
Lynix
61d082e61b
Shader/ShaderWrite: Add optimize bool
2021-05-16 23:08:36 +02:00
Lynix
525f24af2e
Shader/ShaderLang: Add support for Unary operators
2021-05-16 23:07:25 +02:00
Jérôme Leclercq
830ec6ac94
Add a few helper functions
2021-05-14 02:09:25 +02:00
Jérôme Leclercq
51ecff2912
ShaderLang: Add support for length intrinsic
2021-05-14 02:02:12 +02:00
Jérôme Leclercq
2238bbfa0c
Shader: Add AstReflect
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
500ccda85a
Shader: StatementPtr& => const StatementPtr&
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
1a8599ba29
Shader: Add sanitization of identifiers (fixes GLSL generation)
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
3a7f5c2630
Shader: Fix optimization
2021-04-20 18:18:27 +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
9fd4249a87
Shader: compilation fixes
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
afe3a0ea93
Shader: Merge AstScopedVisitor, AstValidator and TransformVisitor to SanitizeVisitor
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
8515c9cea1
Shader: Improve ShaderAstCloner
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
0bb9c37a38
Shader/Lang: [[attribute]] => [attribute]
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
54c34869a4
Fix Shader unit tests
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
3e704b9ea6
Shader: Minor fixes
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
0860a0689f
Shader/GlslWriter: Improve GLSL readability
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
a90937eb4f
Update ShaderNode
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
4bca87b1cb
Shader: Add IsExpression/IsStatement
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
b234134abc
Shader/ShaderLang: Add type inference for variable declaration
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
0f15387c6c
Shader: Add ShaderAst::Clone free function
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
aababb205f
Shader: Move attribute parsing to parser, simplifying writer code
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
bca1561f73
Shader/GlslWriter: Improve GLSL output
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
3499c1f92f
Shader: Remove the need of layout(std140) in external block
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
ea99c6a19e
Shader: First working version on both Vulkan & OpenGL (ES)
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
f93a5bbdc1
Shader: Rework scope handling
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
09df5f389e
Shader: Add SpirvDecoder
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
c1d1838336
ShaderLang: Proof of concept (add support for a lot of things)
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
9d8ce8f2cd
Shader: Add support for function attributes (entry)
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
593d80c80e
SpirV grammar parser: Add result id operand and version info
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
da81a5b871
Shader: Add attribute parsing
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
8135f22b2f
Shader: Add attribute and square bracket tokens (first step for attribute support)
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
3f74ee4d66
Shader: Rework Parser internals
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
48b93a9dea
Shader: Fix SPIRV generation
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
fed7370e77
Rework shader AST (WIP)
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
b320b5b44e
Shader: Add function parameters and return handling
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
9a0f201433
Initial shaderlang commit
2021-04-20 18:18:27 +02:00
Jérôme Leclercq
311cfeaf3c
OpenGLRenderer: Fix Y flipping for FBOs
2021-02-20 19:23:29 +01:00
Jérôme Leclercq
32569eef5e
Add SpirV masks and update grammar
2021-02-19 14:47:24 +01:00
Jérôme Leclercq
a037eef4c9
Shader: Remove ShaderNode::GetExpressionType (replaced by visitor) and minor stuff
2021-01-14 22:01:53 +01:00
Jérôme Leclercq
00ac6e8a0a
Shader: Add ShaderAstOptimizer
2021-01-14 22:01:05 +01:00
Jérôme Leclercq
acb998f67e
ShaderAst: Add NoOp node
2021-01-14 21:58:06 +01:00
Jérôme Leclercq
a9f2e05b57
Fix typo in enum
2021-01-14 21:56:55 +01:00
Jérôme Leclercq
4d63d6e022
Shader: Add basic support for Branch node in spir-v
2021-01-04 10:27:08 +01:00
Jérôme Leclercq
44bc86d082
Shader/SpirvWriter: Rename MergeBlocks to MergeSections
...
to avoid confusion with SpirV blocks
2021-01-03 11:11:54 +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
ed72d668d9
Shader: Add Discard node
2020-12-30 20:05:16 +01:00
Jérôme Leclercq
960817a1f1
Add conditional expression/statement support for shaders
2020-11-19 13:56:54 +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
Lynix
79c53061e0
Shader: Add type functions
2020-09-22 21:50:07 +02:00
Lynix
9c2c62b063
Shader/ShaderAst: Add some noexcept specifiers
2020-09-22 21:24:51 +02:00
Jérôme Leclercq
36d3c51eeb
Add module configurations
2020-09-17 20:10:39 +02:00
Jérôme Leclercq
fd1d416510
Rename Module to ModuleBase
2020-09-11 13:39:18 +02:00
Jérôme Leclercq
a7fac3beb8
Rework modules
2020-09-10 20:12:09 +02:00
Jérôme Leclercq
7d2673eabd
Shader: Fix shader serialization
2020-09-01 18:46:57 +02:00
Jérôme Leclercq
0ff0425045
Some more fixes, hopefully GCC will stop shitting itself now
2020-08-27 23:22:13 +02:00
Jérôme Leclercq
3fe70476bb
Workaround some GCC bug
2020-08-27 22:58:44 +02:00
Jérôme Leclercq
36120b9501
Compilation fixes
2020-08-27 20:24:27 +02:00
Jérôme Leclercq
c87affe276
Fix redefinition of type
2020-08-27 20:12:54 +02:00
Jérôme Leclercq
df51526841
Fix some compilation errors
2020-08-27 20:02:20 +02:00
Jérôme Leclercq
9b313dac2e
Quality of life improvements
2020-08-24 17:14:01 +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
837a6585a1
Split shader generation to a new module
2020-08-11 00:00:36 +02:00