diff --git a/src/back/wgsl/writer.rs b/src/back/wgsl/writer.rs index 7f05d7915b..5c0b61cb4c 100644 --- a/src/back/wgsl/writer.rs +++ b/src/back/wgsl/writer.rs @@ -1287,12 +1287,17 @@ impl Writer { )?; } TypeInner::Vector { size, .. } => { - write!( - self.out, - "vec{}<{}>", - back::vector_size_str(size), - scalar_kind_str(kind) - )?; + let vector_size_str = back::vector_size_str(size); + let scalar_kind_str = scalar_kind_str(kind); + if convert.is_some() { + write!(self.out, "vec{}<{}>", vector_size_str, scalar_kind_str)?; + } else { + write!( + self.out, + "bitcast>", + vector_size_str, scalar_kind_str + )?; + } } TypeInner::Scalar { .. } => { if convert.is_some() { diff --git a/tests/out/wgsl/operators.wgsl b/tests/out/wgsl/operators.wgsl index f43c1c88a1..6c7ab1147d 100644 --- a/tests/out/wgsl/operators.wgsl +++ b/tests/out/wgsl/operators.wgsl @@ -14,7 +14,7 @@ fn builtins() -> vec4 { let m1_: vec4 = mix(vec4(0.0, 0.0, 0.0, 0.0), vec4(1.0, 1.0, 1.0, 1.0), vec4(0.5, 0.5, 0.5, 0.5)); let m2_: vec4 = mix(vec4(0.0, 0.0, 0.0, 0.0), vec4(1.0, 1.0, 1.0, 1.0), 0.10000000149011612); let b1_: f32 = bitcast(vec4(1, 1, 1, 1).x); - let b2_: vec4 = vec4(vec4(1, 1, 1, 1)); + let b2_: vec4 = bitcast>(vec4(1, 1, 1, 1)); let v_i32_zero: vec4 = vec4(vec4(0.0, 0.0, 0.0, 0.0)); return (((((vec4((vec4(s1_) + v_i32_zero)) + s2_) + m1_) + m2_) + vec4(b1_)) + b2_); }