mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-12-08 21:26:17 +00:00
275 lines
7.9 KiB
WebGPU Shading Language
275 lines
7.9 KiB
WebGPU Shading Language
const v_f32_one: vec4<f32> = vec4<f32>(1f, 1f, 1f, 1f);
|
|
const v_f32_zero: vec4<f32> = vec4<f32>(0f, 0f, 0f, 0f);
|
|
const v_f32_half: vec4<f32> = vec4<f32>(0.5f, 0.5f, 0.5f, 0.5f);
|
|
const v_i32_one: vec4<i32> = vec4<i32>(1i, 1i, 1i, 1i);
|
|
|
|
fn builtins() -> vec4<f32> {
|
|
let s1_ = select(0i, 1i, true);
|
|
let s2_ = select(v_f32_zero, v_f32_one, true);
|
|
let s3_ = vec4<f32>(1f, 1f, 1f, 1f);
|
|
let m1_ = mix(v_f32_zero, v_f32_one, v_f32_half);
|
|
let m2_ = mix(v_f32_zero, v_f32_one, 0.1f);
|
|
let b1_ = bitcast<f32>(1i);
|
|
let b2_ = bitcast<vec4<f32>>(v_i32_one);
|
|
let v_i32_zero = vec4<i32>(0i, 0i, 0i, 0i);
|
|
return (((((vec4<f32>((vec4(s1_) + v_i32_zero)) + s2_) + m1_) + m2_) + vec4(b1_)) + b2_);
|
|
}
|
|
|
|
fn splat(m: f32, n: i32) -> vec4<f32> {
|
|
let a_2 = (((vec2(2f) + vec2(m)) - vec2(4f)) / vec2(8f));
|
|
let b = (vec4(n) % vec4(2i));
|
|
return (a_2.xyxy + vec4<f32>(b));
|
|
}
|
|
|
|
fn splat_assignment() -> vec2<f32> {
|
|
var a: vec2<f32> = vec2(2f);
|
|
|
|
let _e4 = a;
|
|
a = (_e4 + vec2(1f));
|
|
let _e8 = a;
|
|
a = (_e8 - vec2(3f));
|
|
let _e12 = a;
|
|
a = (_e12 / vec2(4f));
|
|
let _e15 = a;
|
|
return _e15;
|
|
}
|
|
|
|
fn bool_cast(x: vec3<f32>) -> vec3<f32> {
|
|
let y = vec3<bool>(x);
|
|
return vec3<f32>(y);
|
|
}
|
|
|
|
fn logical() {
|
|
let neg0_ = !(true);
|
|
let neg1_ = !(vec2(true));
|
|
let or = (true || false);
|
|
let and = (true && false);
|
|
let bitwise_or0_ = (true | false);
|
|
let bitwise_or1_ = (vec3(true) | vec3(false));
|
|
let bitwise_and0_ = (true & false);
|
|
let bitwise_and1_ = (vec4(true) & vec4(false));
|
|
return;
|
|
}
|
|
|
|
fn arithmetic() {
|
|
var prevent_const_eval: i32;
|
|
var wgpu_7437_: i32;
|
|
|
|
let neg0_1 = -(1f);
|
|
let neg1_1 = -(vec2(1i));
|
|
let neg2_ = -(vec2(1f));
|
|
let add0_ = (2i + 1i);
|
|
let add1_ = (2u + 1u);
|
|
let add2_ = (2f + 1f);
|
|
let add3_ = (vec2(2i) + vec2(1i));
|
|
let add4_ = (vec3(2u) + vec3(1u));
|
|
let add5_ = (vec4(2f) + vec4(1f));
|
|
let sub0_ = (2i - 1i);
|
|
let sub1_ = (2u - 1u);
|
|
let sub2_ = (2f - 1f);
|
|
let sub3_ = (vec2(2i) - vec2(1i));
|
|
let sub4_ = (vec3(2u) - vec3(1u));
|
|
let sub5_ = (vec4(2f) - vec4(1f));
|
|
let mul0_ = (2i * 1i);
|
|
let mul1_ = (2u * 1u);
|
|
let mul2_ = (2f * 1f);
|
|
let mul3_ = (vec2(2i) * vec2(1i));
|
|
let mul4_ = (vec3(2u) * vec3(1u));
|
|
let mul5_ = (vec4(2f) * vec4(1f));
|
|
let div0_ = (2i / 1i);
|
|
let div1_ = (2u / 1u);
|
|
let div2_ = (2f / 1f);
|
|
let div3_ = (vec2(2i) / vec2(1i));
|
|
let div4_ = (vec3(2u) / vec3(1u));
|
|
let div5_ = (vec4(2f) / vec4(1f));
|
|
let rem0_ = (2i % 1i);
|
|
let rem1_ = (2u % 1u);
|
|
let rem2_ = (2f % 1f);
|
|
let rem3_ = (vec2(2i) % vec2(1i));
|
|
let rem4_ = (vec3(2u) % vec3(1u));
|
|
let rem5_ = (vec4(2f) % vec4(1f));
|
|
{
|
|
let add0_1 = (vec2(2i) + vec2(1i));
|
|
let add1_1 = (vec2(2i) + vec2(1i));
|
|
let add2_1 = (vec2(2u) + vec2(1u));
|
|
let add3_1 = (vec2(2u) + vec2(1u));
|
|
let add4_1 = (vec2(2f) + vec2(1f));
|
|
let add5_1 = (vec2(2f) + vec2(1f));
|
|
let sub0_1 = (vec2(2i) - vec2(1i));
|
|
let sub1_1 = (vec2(2i) - vec2(1i));
|
|
let sub2_1 = (vec2(2u) - vec2(1u));
|
|
let sub3_1 = (vec2(2u) - vec2(1u));
|
|
let sub4_1 = (vec2(2f) - vec2(1f));
|
|
let sub5_1 = (vec2(2f) - vec2(1f));
|
|
let mul0_1 = (vec2(2i) * 1i);
|
|
let mul1_1 = (2i * vec2(1i));
|
|
let mul2_1 = (vec2(2u) * 1u);
|
|
let mul3_1 = (2u * vec2(1u));
|
|
let mul4_1 = (vec2(2f) * 1f);
|
|
let mul5_1 = (2f * vec2(1f));
|
|
let div0_1 = (vec2(2i) / vec2(1i));
|
|
let div1_1 = (vec2(2i) / vec2(1i));
|
|
let div2_1 = (vec2(2u) / vec2(1u));
|
|
let div3_1 = (vec2(2u) / vec2(1u));
|
|
let div4_1 = (vec2(2f) / vec2(1f));
|
|
let div5_1 = (vec2(2f) / vec2(1f));
|
|
let rem0_1 = (vec2(2i) % vec2(1i));
|
|
let rem1_1 = (vec2(2i) % vec2(1i));
|
|
let rem2_1 = (vec2(2u) % vec2(1u));
|
|
let rem3_1 = (vec2(2u) % vec2(1u));
|
|
let rem4_1 = (vec2(2f) % vec2(1f));
|
|
let rem5_1 = (vec2(2f) % vec2(1f));
|
|
}
|
|
let add = (mat3x3<f32>() + mat3x3<f32>());
|
|
let sub = (mat3x3<f32>() - mat3x3<f32>());
|
|
let mul_scalar0_ = (mat3x3<f32>() * 1f);
|
|
let mul_scalar1_ = (2f * mat3x3<f32>());
|
|
let mul_vector0_ = (mat4x3<f32>() * vec4(1f));
|
|
let mul_vector1_ = (vec3(2f) * mat4x3<f32>());
|
|
let mul = (mat4x3<f32>() * mat3x4<f32>());
|
|
let _e175 = prevent_const_eval;
|
|
wgpu_7437_ = (_e175 + i32(-2147483648));
|
|
return;
|
|
}
|
|
|
|
fn bit() {
|
|
let flip0_ = ~(1i);
|
|
let flip1_ = ~(1u);
|
|
let flip2_ = ~(vec2(1i));
|
|
let flip3_ = ~(vec3(1u));
|
|
let or0_ = (2i | 1i);
|
|
let or1_ = (2u | 1u);
|
|
let or2_ = (vec2(2i) | vec2(1i));
|
|
let or3_ = (vec3(2u) | vec3(1u));
|
|
let and0_ = (2i & 1i);
|
|
let and1_ = (2u & 1u);
|
|
let and2_ = (vec2(2i) & vec2(1i));
|
|
let and3_ = (vec3(2u) & vec3(1u));
|
|
let xor0_ = (2i ^ 1i);
|
|
let xor1_ = (2u ^ 1u);
|
|
let xor2_ = (vec2(2i) ^ vec2(1i));
|
|
let xor3_ = (vec3(2u) ^ vec3(1u));
|
|
let shl0_ = (2i << 1u);
|
|
let shl1_ = (2u << 1u);
|
|
let shl2_ = (vec2(2i) << vec2(1u));
|
|
let shl3_ = (vec3(2u) << vec3(1u));
|
|
let shr0_ = (2i >> 1u);
|
|
let shr1_ = (2u >> 1u);
|
|
let shr2_ = (vec2(2i) >> vec2(1u));
|
|
let shr3_ = (vec3(2u) >> vec3(1u));
|
|
return;
|
|
}
|
|
|
|
fn comparison() {
|
|
let eq0_ = (2i == 1i);
|
|
let eq1_ = (2u == 1u);
|
|
let eq2_ = (2f == 1f);
|
|
let eq3_ = (vec2(2i) == vec2(1i));
|
|
let eq4_ = (vec3(2u) == vec3(1u));
|
|
let eq5_ = (vec4(2f) == vec4(1f));
|
|
let neq0_ = (2i != 1i);
|
|
let neq1_ = (2u != 1u);
|
|
let neq2_ = (2f != 1f);
|
|
let neq3_ = (vec2(2i) != vec2(1i));
|
|
let neq4_ = (vec3(2u) != vec3(1u));
|
|
let neq5_ = (vec4(2f) != vec4(1f));
|
|
let lt0_ = (2i < 1i);
|
|
let lt1_ = (2u < 1u);
|
|
let lt2_ = (2f < 1f);
|
|
let lt3_ = (vec2(2i) < vec2(1i));
|
|
let lt4_ = (vec3(2u) < vec3(1u));
|
|
let lt5_ = (vec4(2f) < vec4(1f));
|
|
let lte0_ = (2i <= 1i);
|
|
let lte1_ = (2u <= 1u);
|
|
let lte2_ = (2f <= 1f);
|
|
let lte3_ = (vec2(2i) <= vec2(1i));
|
|
let lte4_ = (vec3(2u) <= vec3(1u));
|
|
let lte5_ = (vec4(2f) <= vec4(1f));
|
|
let gt0_ = (2i > 1i);
|
|
let gt1_ = (2u > 1u);
|
|
let gt2_ = (2f > 1f);
|
|
let gt3_ = (vec2(2i) > vec2(1i));
|
|
let gt4_ = (vec3(2u) > vec3(1u));
|
|
let gt5_ = (vec4(2f) > vec4(1f));
|
|
let gte0_ = (2i >= 1i);
|
|
let gte1_ = (2u >= 1u);
|
|
let gte2_ = (2f >= 1f);
|
|
let gte3_ = (vec2(2i) >= vec2(1i));
|
|
let gte4_ = (vec3(2u) >= vec3(1u));
|
|
let gte5_ = (vec4(2f) >= vec4(1f));
|
|
return;
|
|
}
|
|
|
|
fn assignment() {
|
|
var a_1: i32;
|
|
var vec0_: vec3<i32> = vec3<i32>();
|
|
|
|
a_1 = 1i;
|
|
let _e5 = a_1;
|
|
a_1 = (_e5 + 1i);
|
|
let _e7 = a_1;
|
|
a_1 = (_e7 - 1i);
|
|
let _e9 = a_1;
|
|
let _e10 = a_1;
|
|
a_1 = (_e10 * _e9);
|
|
let _e12 = a_1;
|
|
let _e13 = a_1;
|
|
a_1 = (_e13 / _e12);
|
|
let _e15 = a_1;
|
|
a_1 = (_e15 % 1i);
|
|
let _e17 = a_1;
|
|
a_1 = (_e17 & 0i);
|
|
let _e19 = a_1;
|
|
a_1 = (_e19 | 0i);
|
|
let _e21 = a_1;
|
|
a_1 = (_e21 ^ 0i);
|
|
let _e23 = a_1;
|
|
a_1 = (_e23 << 2u);
|
|
let _e25 = a_1;
|
|
a_1 = (_e25 >> 1u);
|
|
let _e28 = a_1;
|
|
a_1 = (_e28 + 1i);
|
|
let _e31 = a_1;
|
|
a_1 = (_e31 - 1i);
|
|
let _e37 = vec0_[1i];
|
|
vec0_[1i] = (_e37 + 1i);
|
|
let _e41 = vec0_[1i];
|
|
vec0_[1i] = (_e41 - 1i);
|
|
return;
|
|
}
|
|
|
|
fn negation_avoids_prefix_decrement() {
|
|
let i0_ = -(1i);
|
|
let i1_ = -(-(1i));
|
|
let i2_ = -(-(1i));
|
|
let i3_ = -(-(1i));
|
|
let i4_ = -(-(-(1i)));
|
|
let i5_ = -(-(-(-(1i))));
|
|
let i6_ = -(-(-(-(-(1i)))));
|
|
let i7_ = -(-(-(-(-(1i)))));
|
|
let f0_ = -(1f);
|
|
let f1_ = -(-(1f));
|
|
let f2_ = -(-(1f));
|
|
let f3_ = -(-(1f));
|
|
let f4_ = -(-(-(1f)));
|
|
let f5_ = -(-(-(-(1f))));
|
|
let f6_ = -(-(-(-(-(1f)))));
|
|
let f7_ = -(-(-(-(-(1f)))));
|
|
return;
|
|
}
|
|
|
|
@compute @workgroup_size(1, 1, 1)
|
|
fn main(@builtin(workgroup_id) id: vec3<u32>) {
|
|
let _e1 = builtins();
|
|
let _e6 = splat(f32(id.x), i32(id.y));
|
|
let _e7 = splat_assignment();
|
|
let _e12 = bool_cast(vec3<f32>(1f, 1f, 1f));
|
|
logical();
|
|
arithmetic();
|
|
bit();
|
|
comparison();
|
|
assignment();
|
|
negation_avoids_prefix_decrement();
|
|
return;
|
|
}
|