파라미터와 리턴값이 없는 경우.
fn f() {
// function body
}
파라미터가 있을 경우.
fn f(a : vec4f, b : i32) {
// function body
}
리턴값이 있을 경우.
fn f() -> i32 {
return 42;
}
파라미터와 리턴값이 있을 경우.
fn f(v : vec3f) -> vec3f {
return -v;
}
직접이든 간접이든 자기자신을 호출할 수 없다.
fn a() {
a(); // error
}
fn a() {
b(); // error
}
fn b() {
a(); // error
}
선언전에 호출되어도 된다.
fn a() {
b(); // ok
}
fn b() {
// function body...
}
scalar type
int -> i32
uint -> u23
float -> f32
double -> N/A
matrix type
mat2 -> mat2x2<f32>
mat3x2 -> mat3x2<f32>
mat4x2 -> mat4x2<f32>
mat2x3 -> mat2x3<f32>
mat3 -> mat3x3<f32>
mat4x3 -> mat4x3<f32>
mat2x4 -> mat2x4<f32>
mat3x4 -> mat3x4<f32>
mat4 -> mat4x4<f32>
int a = 2;
for (int i = 0; i < 4; i++) {
a *= 2;
}
var a: i32 = 2;
var i: i32 = 0;
loop {
if i >=4 { break; }
a = a * 2;
i++;
}