working on function calls; ci skip
All checks were successful
Build / build (push) Has been skipped
Test / build (push) Has been skipped

This commit is contained in:
2026-01-17 02:05:52 +01:00
parent 076abf5d6a
commit db82448ac0
7 changed files with 309 additions and 224 deletions

View File

@@ -19,7 +19,7 @@ pub fn main() !void {
try rt.callEntryPoint(allocator, try rt.getEntryPointByName("main"));
var output: [4]f32 = undefined;
try rt.readOutput(f32, output[0..output.len], try rt.getResultByName("color"));
std.log.info("Output: Vec4[{d}, {d}, {d}, {d}]", .{ output[0], output[1], output[2], output[3] });
std.log.info("Output: Vec4{any}", .{output});
}
std.log.info("Successfully executed", .{});
}

View File

@@ -1,24 +1,21 @@
[nzsl_version("1.1")]
[feature(float64)]
module;
struct FragOut
{
[location(0)] color: vec4[f32]
}
[nzsl_version("1.1")]
[feature(float64)]
module;
[entry(frag)]
fn main() -> FragOut
{
let op1: f64 = 0.0;
let op2: f64 = 9.0;
let color: f32;
if (op1 == op2)
color = f32(op1);
else
color = f32(op2);
struct FragOut
{
[location(0)] color: vec4[f32]
}
let output: FragOut;
output.color = vec4[f32](color, color, color, color);
return output;
}
fn computeColor() -> f32
{
return 1.0;
}
[entry(frag)]
fn main() -> FragOut
{
let output: FragOut;
output.color = vec4[f32](computeColor(), computeColor(), computeColor(), computeColor());
return output;
}

Binary file not shown.

View File

@@ -1,70 +1,50 @@
Version 1.0
Generator: 2560130
Bound: 42
Bound: 27
Schema: 0
OpCapability Capability(Shader)
OpCapability Capability(Float64)
OpMemoryModel AddressingModel(Logical) MemoryModel(GLSL450)
OpEntryPoint ExecutionModel(Fragment) %17 "main" %6
OpExecutionMode %17 ExecutionMode(OriginUpperLeft)
OpEntryPoint ExecutionModel(Fragment) %14 "main" %8
OpExecutionMode %14 ExecutionMode(OriginUpperLeft)
OpSource SourceLanguage(NZSL) 4198400
OpSourceExtension "Version: 1.1"
OpName %7 "FragOut"
OpMemberName %7 0 "color"
OpName %6 "color"
OpName %17 "main"
OpDecorate %6 Decoration(Location) 0
OpMemberDecorate %7 0 Decoration(Offset) 0
%1 = OpTypeVoid
OpName %9 "FragOut"
OpMemberName %9 0 "color"
OpName %8 "color"
OpName %13 "computeColor"
OpName %14 "main"
OpDecorate %8 Decoration(Location) 0
OpMemberDecorate %9 0 Decoration(Offset) 0
%1 = OpTypeFloat 32
%2 = OpTypeFunction %1
%3 = OpTypeFloat 32
%4 = OpTypeVector %3 4
%5 = OpTypePointer StorageClass(Output) %4
%7 = OpTypeStruct %4
%8 = OpTypeFloat 64
%9 = OpConstant %8 f64(0)
%10 = OpTypePointer StorageClass(Function) %8
%11 = OpConstant %8 f64(9)
%12 = OpTypePointer StorageClass(Function) %3
%13 = OpTypeBool
%14 = OpTypePointer StorageClass(Function) %7
%15 = OpTypeInt 32 1
%16 = OpConstant %15 i32(0)
%39 = OpTypePointer StorageClass(Function) %4
%6 = OpVariable %5 StorageClass(Output)
%17 = OpFunction %1 FunctionControl(0) %2
%18 = OpLabel
%19 = OpVariable %10 StorageClass(Function)
%20 = OpVariable %10 StorageClass(Function)
%21 = OpVariable %12 StorageClass(Function)
%22 = OpVariable %14 StorageClass(Function)
OpStore %19 %9
OpStore %20 %11
%26 = OpLoad %8 %19
%27 = OpLoad %8 %20
%28 = OpFOrdEqual %13 %26 %27
OpSelectionMerge %23 SelectionControl(0)
OpBranchConditional %28 %24 %25
%24 = OpLabel
%29 = OpLoad %8 %19
%30 = OpFConvert %3 %29
OpStore %21 %30
OpBranch %23
%25 = OpLabel
%31 = OpLoad %8 %20
%32 = OpFConvert %3 %31
OpStore %21 %32
OpBranch %23
%23 = OpLabel
%33 = OpLoad %3 %21
%34 = OpLoad %3 %21
%35 = OpLoad %3 %21
%36 = OpLoad %3 %21
%37 = OpCompositeConstruct %4 %33 %34 %35 %36
%38 = OpAccessChain %39 %22 %16
OpStore %38 %37
%40 = OpLoad %7 %22
%41 = OpCompositeExtract %4 %40 0
OpStore %6 %41
%3 = OpConstant %1 f32(1)
%4 = OpTypeVoid
%5 = OpTypeFunction %4
%6 = OpTypeVector %1 4
%7 = OpTypePointer StorageClass(Output) %6
%9 = OpTypeStruct %6
%10 = OpTypePointer StorageClass(Function) %9
%11 = OpTypeInt 32 1
%12 = OpConstant %11 i32(0)
%24 = OpTypePointer StorageClass(Function) %6
%8 = OpVariable %7 StorageClass(Output)
%13 = OpFunction %1 FunctionControl(0) %2
%15 = OpLabel
OpReturnValue %3
OpFunctionEnd
%14 = OpFunction %4 FunctionControl(0) %5
%16 = OpLabel
%17 = OpVariable %10 StorageClass(Function)
%18 = OpFunctionCall %1 %13
%19 = OpFunctionCall %1 %13
%20 = OpFunctionCall %1 %13
%21 = OpFunctionCall %1 %13
%22 = OpCompositeConstruct %6 %18 %19 %20 %21
%23 = OpAccessChain %24 %17 %12
OpStore %23 %22
%25 = OpLoad %9 %17
%26 = OpCompositeExtract %6 %25 0
OpStore %8 %26
OpReturn
OpFunctionEnd