dawn-cmake/test/bug/tint/922.wgsl

301 lines
7.4 KiB
WebGPU Shading Language

struct Mat4x4_ {
mx: vec4<f32>;
my: vec4<f32>;
mz: vec4<f32>;
mw: vec4<f32>;
};
struct Mat4x3_ {
mx: vec4<f32>;
my: vec4<f32>;
mz: vec4<f32>;
};
struct Mat4x2_ {
mx: vec4<f32>;
my: vec4<f32>;
};
[[block]]
struct ub_SceneParams {
u_Projection: Mat4x4_;
};
[[block]]
struct ub_MaterialParams {
u_TexMtx: [[stride(32)]] array<Mat4x2_,1>;
u_Misc0_: vec4<f32>;
};
[[block]]
struct ub_PacketParams {
u_PosMtx: [[stride(48)]] array<Mat4x3_,32>;
};
struct VertexOutput {
[[location(0)]] v_Color: vec4<f32>;
[[location(1)]] v_TexCoord: vec2<f32>;
[[builtin(position)]] member: vec4<f32>;
};
[[group(0), binding(0)]]
var<uniform> global: ub_SceneParams;
[[group(0), binding(1)]]
var<uniform> global1: ub_MaterialParams;
[[group(0), binding(2)]]
var<uniform> global2: ub_PacketParams;
var<private> a_Position1: vec3<f32>;
var<private> a_UV1: vec2<f32>;
var<private> a_Color1: vec4<f32>;
var<private> a_Normal1: vec3<f32>;
var<private> a_PosMtxIdx1: f32;
var<private> v_Color: vec4<f32>;
var<private> v_TexCoord: vec2<f32>;
var<private> gl_Position: vec4<f32>;
fn Mat4x3GetCol0_(m: Mat4x3_) -> vec3<f32> {
var m1: Mat4x3_;
m1 = m;
let _e2: Mat4x3_ = m1;
let _e5: Mat4x3_ = m1;
let _e8: Mat4x3_ = m1;
return vec3<f32>(_e2.mx.x, _e5.my.x, _e8.mz.x);
}
fn Mat4x3GetCol1_(m2: Mat4x3_) -> vec3<f32> {
var m3: Mat4x3_;
m3 = m2;
let _e2: Mat4x3_ = m3;
let _e5: Mat4x3_ = m3;
let _e8: Mat4x3_ = m3;
return vec3<f32>(_e2.mx.y, _e5.my.y, _e8.mz.y);
}
fn Mat4x3GetCol2_(m4: Mat4x3_) -> vec3<f32> {
var m5: Mat4x3_;
m5 = m4;
let _e2: Mat4x3_ = m5;
let _e5: Mat4x3_ = m5;
let _e8: Mat4x3_ = m5;
return vec3<f32>(_e2.mx.z, _e5.my.z, _e8.mz.z);
}
fn Mat4x3GetCol3_(m6: Mat4x3_) -> vec3<f32> {
var m7: Mat4x3_;
m7 = m6;
let _e2: Mat4x3_ = m7;
let _e5: Mat4x3_ = m7;
let _e8: Mat4x3_ = m7;
return vec3<f32>(_e2.mx.w, _e5.my.w, _e8.mz.w);
}
fn Mul(m8: Mat4x4_, v: vec4<f32>) -> vec4<f32> {
var m9: Mat4x4_;
var v1: vec4<f32>;
m9 = m8;
v1 = v;
let _e4: Mat4x4_ = m9;
let _e6: vec4<f32> = v1;
let _e8: Mat4x4_ = m9;
let _e10: vec4<f32> = v1;
let _e12: Mat4x4_ = m9;
let _e14: vec4<f32> = v1;
let _e16: Mat4x4_ = m9;
let _e18: vec4<f32> = v1;
return vec4<f32>(dot(_e4.mx, _e6), dot(_e8.my, _e10), dot(_e12.mz, _e14), dot(_e16.mw, _e18));
}
fn Mul1(m10: Mat4x3_, v2: vec4<f32>) -> vec3<f32> {
var m11: Mat4x3_;
var v3: vec4<f32>;
m11 = m10;
v3 = v2;
let _e4: Mat4x3_ = m11;
let _e6: vec4<f32> = v3;
let _e8: Mat4x3_ = m11;
let _e10: vec4<f32> = v3;
let _e12: Mat4x3_ = m11;
let _e14: vec4<f32> = v3;
return vec3<f32>(dot(_e4.mx, _e6), dot(_e8.my, _e10), dot(_e12.mz, _e14));
}
fn Mul2(m12: Mat4x2_, v4: vec4<f32>) -> vec2<f32> {
var m13: Mat4x2_;
var v5: vec4<f32>;
m13 = m12;
v5 = v4;
let _e4: Mat4x2_ = m13;
let _e6: vec4<f32> = v5;
let _e8: Mat4x2_ = m13;
let _e10: vec4<f32> = v5;
return vec2<f32>(dot(_e4.mx, _e6), dot(_e8.my, _e10));
}
fn Mul3(v6: vec3<f32>, m14: Mat4x3_) -> vec4<f32> {
var v7: vec3<f32>;
var m15: Mat4x3_;
v7 = v6;
m15 = m14;
let _e5: Mat4x3_ = m15;
let _e6: vec3<f32> = Mat4x3GetCol0_(_e5);
let _e7: vec3<f32> = v7;
let _e10: Mat4x3_ = m15;
let _e11: vec3<f32> = Mat4x3GetCol1_(_e10);
let _e12: vec3<f32> = v7;
let _e15: Mat4x3_ = m15;
let _e16: vec3<f32> = Mat4x3GetCol2_(_e15);
let _e17: vec3<f32> = v7;
let _e20: Mat4x3_ = m15;
let _e21: vec3<f32> = Mat4x3GetCol3_(_e20);
let _e22: vec3<f32> = v7;
return vec4<f32>(dot(_e6, _e7), dot(_e11, _e12), dot(_e16, _e17), dot(_e21, _e22));
}
fn _Mat4x4_(n: f32) -> Mat4x4_ {
var n1: f32;
var o: Mat4x4_;
n1 = n;
let _e4: f32 = n1;
o.mx = vec4<f32>(_e4, 0.0, 0.0, 0.0);
let _e11: f32 = n1;
o.my = vec4<f32>(0.0, _e11, 0.0, 0.0);
let _e18: f32 = n1;
o.mz = vec4<f32>(0.0, 0.0, _e18, 0.0);
let _e25: f32 = n1;
o.mw = vec4<f32>(0.0, 0.0, 0.0, _e25);
let _e27: Mat4x4_ = o;
return _e27;
}
fn _Mat4x4_1(m16: Mat4x3_) -> Mat4x4_ {
var m17: Mat4x3_;
var o1: Mat4x4_;
m17 = m16;
let _e4: Mat4x4_ = _Mat4x4_(1.0);
o1 = _e4;
let _e7: Mat4x3_ = m17;
o1.mx = _e7.mx;
let _e10: Mat4x3_ = m17;
o1.my = _e10.my;
let _e13: Mat4x3_ = m17;
o1.mz = _e13.mz;
let _e15: Mat4x4_ = o1;
return _e15;
}
fn _Mat4x4_2(m18: Mat4x2_) -> Mat4x4_ {
var m19: Mat4x2_;
var o2: Mat4x4_;
m19 = m18;
let _e4: Mat4x4_ = _Mat4x4_(1.0);
o2 = _e4;
let _e7: Mat4x2_ = m19;
o2.mx = _e7.mx;
let _e10: Mat4x2_ = m19;
o2.my = _e10.my;
let _e12: Mat4x4_ = o2;
return _e12;
}
fn _Mat4x3_(n2: f32) -> Mat4x3_ {
var n3: f32;
var o3: Mat4x3_;
n3 = n2;
let _e4: f32 = n3;
o3.mx = vec4<f32>(_e4, 0.0, 0.0, 0.0);
let _e11: f32 = n3;
o3.my = vec4<f32>(0.0, _e11, 0.0, 0.0);
let _e18: f32 = n3;
o3.mz = vec4<f32>(0.0, 0.0, _e18, 0.0);
let _e21: Mat4x3_ = o3;
return _e21;
}
fn _Mat4x3_1(m20: Mat4x4_) -> Mat4x3_ {
var m21: Mat4x4_;
var o4: Mat4x3_;
m21 = m20;
let _e4: Mat4x4_ = m21;
o4.mx = _e4.mx;
let _e7: Mat4x4_ = m21;
o4.my = _e7.my;
let _e10: Mat4x4_ = m21;
o4.mz = _e10.mz;
let _e12: Mat4x3_ = o4;
return _e12;
}
fn main1() {
var t_PosMtx: Mat4x3_;
var t_TexSpaceCoord: vec2<f32>;
let _e15: f32 = a_PosMtxIdx1;
let _e18: Mat4x3_ = global2.u_PosMtx[i32(_e15)];
t_PosMtx = _e18;
let _e23: Mat4x3_ = t_PosMtx;
let _e24: Mat4x4_ = _Mat4x4_1(_e23);
let _e25: vec3<f32> = a_Position1;
let _e29: Mat4x3_ = t_PosMtx;
let _e30: Mat4x4_ = _Mat4x4_1(_e29);
let _e31: vec3<f32> = a_Position1;
let _e34: vec4<f32> = Mul(_e30, vec4<f32>(_e31, 1.0));
let _e35: Mat4x4_ = global.u_Projection;
let _e37: Mat4x3_ = t_PosMtx;
let _e38: Mat4x4_ = _Mat4x4_1(_e37);
let _e39: vec3<f32> = a_Position1;
let _e43: Mat4x3_ = t_PosMtx;
let _e44: Mat4x4_ = _Mat4x4_1(_e43);
let _e45: vec3<f32> = a_Position1;
let _e48: vec4<f32> = Mul(_e44, vec4<f32>(_e45, 1.0));
let _e49: vec4<f32> = Mul(_e35, _e48);
gl_Position = _e49;
let _e50: vec4<f32> = a_Color1;
v_Color = _e50;
let _e52: vec4<f32> = global1.u_Misc0_;
if ((_e52.x == 2.0)) {
{
let _e59: vec3<f32> = a_Normal1;
let _e64: Mat4x2_ = global1.u_TexMtx[0];
let _e65: vec3<f32> = a_Normal1;
let _e68: vec2<f32> = Mul2(_e64, vec4<f32>(_e65, 1.0));
v_TexCoord = _e68.xy;
return;
}
} else {
{
let _e73: vec2<f32> = a_UV1;
let _e79: Mat4x2_ = global1.u_TexMtx[0];
let _e80: vec2<f32> = a_UV1;
let _e84: vec2<f32> = Mul2(_e79, vec4<f32>(_e80, 1.0, 1.0));
v_TexCoord = _e84.xy;
return;
}
}
}
[[stage(vertex)]]
fn main([[location(0)]] a_Position: vec3<f32>, [[location(1)]] a_UV: vec2<f32>, [[location(2)]] a_Color: vec4<f32>, [[location(3)]] a_Normal: vec3<f32>, [[location(4)]] a_PosMtxIdx: f32) -> VertexOutput {
a_Position1 = a_Position;
a_UV1 = a_UV;
a_Color1 = a_Color;
a_Normal1 = a_Normal;
a_PosMtxIdx1 = a_PosMtxIdx;
main1();
let _e11: vec4<f32> = v_Color;
let _e13: vec2<f32> = v_TexCoord;
let _e15: vec4<f32> = gl_Position;
return VertexOutput(_e11, _e13, _e15);
}