Shader: Handle type as expressions

This commit is contained in:
Jérôme Leclercq
2022-02-08 17:03:34 +01:00
parent 5ce8120a0c
commit 402e16bd2b
53 changed files with 1746 additions and 1141 deletions

View File

@@ -38,7 +38,7 @@ external
auto secondAccess = Nz::ShaderBuilder::AccessMember(std::move(firstAccess), { "field" });
auto swizzle = Nz::ShaderBuilder::Swizzle(std::move(secondAccess), { 2u });
auto varDecl = Nz::ShaderBuilder::DeclareVariable("result", Nz::ShaderAst::PrimitiveType::Float32, std::move(swizzle));
auto varDecl = Nz::ShaderBuilder::DeclareVariable("result", Nz::ShaderAst::ExpressionType{ Nz::ShaderAst::PrimitiveType::Float32 }, std::move(swizzle));
multiStatement.statements.push_back(Nz::ShaderBuilder::DeclareFunction(Nz::ShaderStageType::Vertex, "main", std::move(varDecl)));
@@ -75,7 +75,7 @@ OpFunctionEnd)");
auto access = Nz::ShaderBuilder::AccessMember(std::move(ubo), { "s", "field" });
auto swizzle = Nz::ShaderBuilder::Swizzle(std::move(access), { 2u });
auto varDecl = Nz::ShaderBuilder::DeclareVariable("result", Nz::ShaderAst::PrimitiveType::Float32, std::move(swizzle));
auto varDecl = Nz::ShaderBuilder::DeclareVariable("result", Nz::ShaderAst::ExpressionType{ Nz::ShaderAst::PrimitiveType::Float32 }, std::move(swizzle));
multiStatement.statements.push_back(Nz::ShaderBuilder::DeclareFunction(Nz::ShaderStageType::Vertex, "main", std::move(varDecl)));

View File

@@ -315,7 +315,6 @@ OpULessThan
OpLoopMerge
OpBranchConditional
OpLabel
OpAccessChain
OpLoad
OpAccessChain
OpLoad

View File

@@ -33,6 +33,7 @@ fn main()
fn main()
{
let output: f32 = 42.000000;
}
)");
}

View File

@@ -150,8 +150,8 @@ OpFunctionEnd)");
[entry(frag)]
fn main()
{
let vec = max(2.0, 1.0).xxx;
let vec2 = min(2.0, 1.0).xxx;
let v = max(2.0, 1.0).xxx;
let v2 = min(2.0, 1.0).xxx;
}
)";
@@ -161,9 +161,9 @@ fn main()
void main()
{
float cachedResult = max(2.000000, 1.000000);
vec3 vec = vec3(cachedResult, cachedResult, cachedResult);
vec3 v = vec3(cachedResult, cachedResult, cachedResult);
float cachedResult_2 = min(2.000000, 1.000000);
vec3 vec2_ = vec3(cachedResult_2, cachedResult_2, cachedResult_2);
vec3 v2 = vec3(cachedResult_2, cachedResult_2, cachedResult_2);
}
)");
@@ -171,8 +171,8 @@ void main()
[entry(frag)]
fn main()
{
let vec: vec3[f32] = (max(2.000000, 1.000000)).xxx;
let vec2: vec3[f32] = (min(2.000000, 1.000000)).xxx;
let v: vec3[f32] = (max(2.000000, 1.000000)).xxx;
let v2: vec3[f32] = (min(2.000000, 1.000000)).xxx;
}
)");