mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-10 05:57:51 +00:00
wgsl: Replace [[decoration]] with @decoration
Deprecate the old syntax. Migrate everything to the new syntax. Bug: tint:1382 Change-Id: Ide12b2e927b17dc93b9714c7049090864cc568d3 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/77260 Reviewed-by: James Price <jrprice@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: David Neto <dneto@google.com> Commit-Queue: David Neto <dneto@google.com>
This commit is contained in:
committed by
Tint LUCI CQ
parent
8f1d5224ee
commit
01e4b6fc18
@@ -1,19 +1,19 @@
|
||||
struct VertexInputs0 {
|
||||
[[builtin(vertex_index)]] vertex_index : u32;
|
||||
[[location(0)]] loc0 : i32;
|
||||
@builtin(vertex_index) vertex_index : u32;
|
||||
@location(0) loc0 : i32;
|
||||
};
|
||||
struct VertexInputs1 {
|
||||
[[location(2)]] loc1 : u32;
|
||||
[[location(3)]] loc3 : vec4<f32>;
|
||||
@location(2) loc1 : u32;
|
||||
@location(3) loc3 : vec4<f32>;
|
||||
};
|
||||
|
||||
[[stage(vertex)]]
|
||||
@stage(vertex)
|
||||
fn main(
|
||||
inputs0 : VertexInputs0,
|
||||
[[location(1)]] loc1 : u32,
|
||||
[[builtin(instance_index)]] instance_index : u32,
|
||||
@location(1) loc1 : u32,
|
||||
@builtin(instance_index) instance_index : u32,
|
||||
inputs1 : VertexInputs1,
|
||||
) -> [[builtin(position)]] vec4<f32> {
|
||||
) -> @builtin(position) vec4<f32> {
|
||||
let foo : u32 = inputs0.vertex_index + instance_index;
|
||||
return vec4<f32>();
|
||||
}
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
struct VertexInputs0 {
|
||||
[[builtin(vertex_index)]]
|
||||
@builtin(vertex_index)
|
||||
vertex_index : u32;
|
||||
[[location(0)]]
|
||||
@location(0)
|
||||
loc0 : i32;
|
||||
}
|
||||
|
||||
struct VertexInputs1 {
|
||||
[[location(2)]]
|
||||
@location(2)
|
||||
loc1 : u32;
|
||||
[[location(3)]]
|
||||
@location(3)
|
||||
loc3 : vec4<f32>;
|
||||
}
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn main(inputs0 : VertexInputs0, [[location(1)]] loc1 : u32, [[builtin(instance_index)]] instance_index : u32, inputs1 : VertexInputs1) -> [[builtin(position)]] vec4<f32> {
|
||||
@stage(vertex)
|
||||
fn main(inputs0 : VertexInputs0, @location(1) loc1 : u32, @builtin(instance_index) instance_index : u32, inputs1 : VertexInputs1) -> @builtin(position) vec4<f32> {
|
||||
let foo : u32 = (inputs0.vertex_index + instance_index);
|
||||
return vec4<f32>();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// /fallthroUgh]
|
||||
fn marg8uintin() {
|
||||
_ = (0 );
|
||||
_ = (0 );
|
||||
_ = isNormal(4.);
|
||||
_ = (vec4<f32>( 2.));
|
||||
|
||||
@@ -37,36 +37,36 @@ struct Dbg {
|
||||
};
|
||||
|
||||
struct F32s {
|
||||
values : [[stride(4)]] array<f32>;
|
||||
values : @stride(4) array<f32>;
|
||||
};
|
||||
|
||||
struct U32s {
|
||||
values : [[stride(4)]] array<u32>;
|
||||
values : @stride(4) array<u32>;
|
||||
};
|
||||
|
||||
struct I32s {
|
||||
values : [[stride(4)]] array<i32>;
|
||||
values : @stride(4) array<i32>;
|
||||
};
|
||||
|
||||
struct AU32s {
|
||||
values : [[stride(4)]] array<atomic<u32>>;
|
||||
values : @stride(4) array<atomic<u32>>;
|
||||
};
|
||||
|
||||
struct AI32s {
|
||||
values : [[stride(4)]] array<atomic<i32>>;
|
||||
values : @stride(4) array<atomic<i32>>;
|
||||
};
|
||||
|
||||
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
|
||||
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
|
||||
@binding(10) @group(0) var<storage, read_write> indices : U32s;
|
||||
|
||||
[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
|
||||
@binding(11) @group(0) var<storage, read_write> positions : F32s;
|
||||
|
||||
[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
|
||||
@binding(20) @group(0) var<storage, read_write> counters : AU32s;
|
||||
|
||||
[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
|
||||
@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
|
||||
|
||||
[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
|
||||
@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
|
||||
|
||||
fn toVoxelPos(position : vec3<f32>) -> vec3<f32> {
|
||||
var bbMin = vec3<f32>(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z);
|
||||
@@ -106,8 +106,8 @@ fn doIgnore() {
|
||||
var g55 = atomicLoad(&(LUT.values[0]));
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(128)]]
|
||||
fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||
@stage(compute) @workgroup_size(128)
|
||||
fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||
var triangleIndex = GlobalInvocationID.x;
|
||||
if ((triangleIndex >= uniforms.numTriangles)) {
|
||||
return;
|
||||
|
||||
@@ -54,36 +54,36 @@ struct Dbg {
|
||||
}
|
||||
|
||||
struct F32s {
|
||||
values : [[stride(4)]] array<f32>;
|
||||
values : @stride(4) array<f32>;
|
||||
}
|
||||
|
||||
struct U32s {
|
||||
values : [[stride(4)]] array<u32>;
|
||||
values : @stride(4) array<u32>;
|
||||
}
|
||||
|
||||
struct I32s {
|
||||
values : [[stride(4)]] array<i32>;
|
||||
values : @stride(4) array<i32>;
|
||||
}
|
||||
|
||||
struct AU32s {
|
||||
values : [[stride(4)]] array<atomic<u32>>;
|
||||
values : @stride(4) array<atomic<u32>>;
|
||||
}
|
||||
|
||||
struct AI32s {
|
||||
values : [[stride(4)]] array<atomic<i32>>;
|
||||
values : @stride(4) array<atomic<i32>>;
|
||||
}
|
||||
|
||||
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
|
||||
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
|
||||
@binding(10) @group(0) var<storage, read_write> indices : U32s;
|
||||
|
||||
[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
|
||||
@binding(11) @group(0) var<storage, read_write> positions : F32s;
|
||||
|
||||
[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
|
||||
@binding(20) @group(0) var<storage, read_write> counters : AU32s;
|
||||
|
||||
[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
|
||||
@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
|
||||
|
||||
[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
|
||||
@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
|
||||
|
||||
fn toVoxelPos(position : vec3<f32>) -> vec3<f32> {
|
||||
var bbMin = vec3<f32>(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z);
|
||||
@@ -123,8 +123,8 @@ fn doIgnore() {
|
||||
var g55 = atomicLoad(&(LUT.values[0]));
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(128)]]
|
||||
fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||
@stage(compute) @workgroup_size(128)
|
||||
fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||
var triangleIndex = GlobalInvocationID.x;
|
||||
if ((triangleIndex >= uniforms.numTriangles)) {
|
||||
return;
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
u_scale : vec2<f32>;
|
||||
u_offset : vec2<f32>;
|
||||
};
|
||||
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
|
||||
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
|
||||
|
||||
struct VertexOutputs {
|
||||
[[location(0)]] texcoords : vec2<f32>;
|
||||
[[builtin(position)]] position : vec4<f32>;
|
||||
@location(0) texcoords : vec2<f32>;
|
||||
@builtin(position) position : vec4<f32>;
|
||||
};
|
||||
|
||||
[[stage(vertex)]] fn vs_main(
|
||||
[[builtin(vertex_index)]] VertexIndex : u32
|
||||
@stage(vertex) fn vs_main(
|
||||
@builtin(vertex_index) VertexIndex : u32
|
||||
) -> VertexOutputs {
|
||||
var texcoord = array<vec2<f32>, 3>(
|
||||
vec2<f32>(-0.5, 0.0),
|
||||
@@ -43,12 +43,12 @@ struct VertexOutputs {
|
||||
return output;
|
||||
}
|
||||
|
||||
[[binding(1), group(0)]] var mySampler: sampler;
|
||||
[[binding(2), group(0)]] var myTexture: texture_2d<f32>;
|
||||
@binding(1) @group(0) var mySampler: sampler;
|
||||
@binding(2) @group(0) var myTexture: texture_2d<f32>;
|
||||
|
||||
[[stage(fragment)]] fn fs_main(
|
||||
[[location(0)]] texcoord : vec2<f32>
|
||||
) -> [[location(0)]] vec4<f32> {
|
||||
@stage(fragment) fn fs_main(
|
||||
@location(0) texcoord : vec2<f32>
|
||||
) -> @location(0) vec4<f32> {
|
||||
// Clamp the texcoord and discard the out-of-bound pixels.
|
||||
var clampedTexcoord =
|
||||
clamp(texcoord, vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 1.0));
|
||||
|
||||
@@ -3,17 +3,17 @@ struct Uniforms {
|
||||
u_offset : vec2<f32>;
|
||||
}
|
||||
|
||||
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
|
||||
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
|
||||
|
||||
struct VertexOutputs {
|
||||
[[location(0)]]
|
||||
@location(0)
|
||||
texcoords : vec2<f32>;
|
||||
[[builtin(position)]]
|
||||
@builtin(position)
|
||||
position : vec4<f32>;
|
||||
}
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn vs_main([[builtin(vertex_index)]] VertexIndex : u32) -> VertexOutputs {
|
||||
@stage(vertex)
|
||||
fn vs_main(@builtin(vertex_index) VertexIndex : u32) -> VertexOutputs {
|
||||
var texcoord = array<vec2<f32>, 3>(vec2<f32>(-0.5, 0.0), vec2<f32>(1.5, 0.0), vec2<f32>(0.5, 2.0));
|
||||
var output : VertexOutputs;
|
||||
output.position = vec4<f32>(((texcoord[VertexIndex] * 2.0) - vec2<f32>(1.0, 1.0)), 0.0, 1.0);
|
||||
@@ -26,12 +26,12 @@ fn vs_main([[builtin(vertex_index)]] VertexIndex : u32) -> VertexOutputs {
|
||||
return output;
|
||||
}
|
||||
|
||||
[[binding(1), group(0)]] var mySampler : sampler;
|
||||
@binding(1) @group(0) var mySampler : sampler;
|
||||
|
||||
[[binding(2), group(0)]] var myTexture : texture_2d<f32>;
|
||||
@binding(2) @group(0) var myTexture : texture_2d<f32>;
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn fs_main([[location(0)]] texcoord : vec2<f32>) -> [[location(0)]] vec4<f32> {
|
||||
@stage(fragment)
|
||||
fn fs_main(@location(0) texcoord : vec2<f32>) -> @location(0) vec4<f32> {
|
||||
var clampedTexcoord = clamp(texcoord, vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 1.0));
|
||||
if (!(all((clampedTexcoord == texcoord)))) {
|
||||
discard;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
struct UBO {
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct S {
|
||||
data: array<i32, 64>;
|
||||
};
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result: Result;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
var s : S;
|
||||
result.out = s.data[ubo.dynamic_idx];
|
||||
|
||||
@@ -2,7 +2,7 @@ struct UBO {
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct S {
|
||||
data : array<i32, 64>;
|
||||
@@ -12,9 +12,9 @@ struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result : Result;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
var s : S;
|
||||
result.out = s.data[ubo.dynamic_idx];
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
struct UBO {
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct S {
|
||||
data: array<i32, 64>;
|
||||
};
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result: Result;
|
||||
|
||||
var<private> s : S;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
result.out = s.data[ubo.dynamic_idx];
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ struct UBO {
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct S {
|
||||
data : array<i32, 64>;
|
||||
@@ -12,11 +12,11 @@ struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result : Result;
|
||||
|
||||
var<private> s : S;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
result.out = s.data[ubo.dynamic_idx];
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
struct UBO {
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(2)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(2) var<storage, read_write> result: Result;
|
||||
|
||||
struct SSBO {
|
||||
data: array<i32, 4>;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read_write> ssbo: SSBO;
|
||||
@group(0) @binding(1) var<storage, read_write> ssbo: SSBO;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
result.out = ssbo.data[ubo.dynamic_idx];
|
||||
}
|
||||
|
||||
@@ -2,21 +2,21 @@ struct UBO {
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(2)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(2) var<storage, read_write> result : Result;
|
||||
|
||||
struct SSBO {
|
||||
data : array<i32, 4>;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read_write> ssbo : SSBO;
|
||||
@group(0) @binding(1) var<storage, read_write> ssbo : SSBO;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
result.out = ssbo.data[ubo.dynamic_idx];
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
struct UBO {
|
||||
data: [[stride(16)]] array<i32, 4>;
|
||||
data: @stride(16) array<i32, 4>;
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(2)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(2) var<storage, read_write> result: Result;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
result.out = ubo.data[ubo.dynamic_idx];
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
struct UBO {
|
||||
data : [[stride(16)]] array<i32, 4>;
|
||||
data : @stride(16) array<i32, 4>;
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(2)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(2) var<storage, read_write> result : Result;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
result.out = ubo.data[ubo.dynamic_idx];
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
struct UBO {
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct S {
|
||||
data: array<i32, 64>;
|
||||
};
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result: Result;
|
||||
|
||||
var<workgroup> s : S;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
result.out = s.data[ubo.dynamic_idx];
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ struct UBO {
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct S {
|
||||
data : array<i32, 64>;
|
||||
@@ -12,11 +12,11 @@ struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result : Result;
|
||||
|
||||
var<workgroup> s : S;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
result.out = s.data[ubo.dynamic_idx];
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
struct UBO {
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct S {
|
||||
data: array<i32, 64>;
|
||||
};
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result: Result;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
var s : S;
|
||||
s.data[ubo.dynamic_idx] = 1;
|
||||
|
||||
@@ -2,7 +2,7 @@ struct UBO {
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct S {
|
||||
data : array<i32, 64>;
|
||||
@@ -12,9 +12,9 @@ struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result : Result;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
var s : S;
|
||||
s.data[ubo.dynamic_idx] = 1;
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
struct UBO {
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct S {
|
||||
data: array<i32, 64>;
|
||||
};
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result: Result;
|
||||
|
||||
fn x(p : ptr<function, S>) {
|
||||
(*p).data[ubo.dynamic_idx] = 1;
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
var s : S;
|
||||
x(&s);
|
||||
|
||||
@@ -2,7 +2,7 @@ struct UBO {
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct S {
|
||||
data : array<i32, 64>;
|
||||
@@ -12,13 +12,13 @@ struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result : Result;
|
||||
|
||||
fn x(p : ptr<function, S>) {
|
||||
(*(p)).data[ubo.dynamic_idx] = 1;
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
var s : S;
|
||||
x(&(s));
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
struct UBO {
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct S {
|
||||
data: array<i32, 64>;
|
||||
};
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result: Result;
|
||||
|
||||
var<private> s : S;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
s.data[ubo.dynamic_idx] = 1;
|
||||
result.out = s.data[3];
|
||||
|
||||
@@ -2,7 +2,7 @@ struct UBO {
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct S {
|
||||
data : array<i32, 64>;
|
||||
@@ -12,11 +12,11 @@ struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result : Result;
|
||||
|
||||
var<private> s : S;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
s.data[ubo.dynamic_idx] = 1;
|
||||
result.out = s.data[3];
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
struct UBO {
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct S {
|
||||
data: array<i32, 64>;
|
||||
};
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result: Result;
|
||||
|
||||
var<private> s : S;
|
||||
|
||||
@@ -16,7 +16,7 @@ fn x(p : ptr<private, S>) {
|
||||
(*p).data[ubo.dynamic_idx] = 1;
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
x(&s);
|
||||
result.out = s.data[3];
|
||||
|
||||
@@ -2,7 +2,7 @@ struct UBO {
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct S {
|
||||
data : array<i32, 64>;
|
||||
@@ -12,7 +12,7 @@ struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result : Result;
|
||||
|
||||
var<private> s : S;
|
||||
|
||||
@@ -20,7 +20,7 @@ fn x(p : ptr<private, S>) {
|
||||
(*(p)).data[ubo.dynamic_idx] = 1;
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
x(&(s));
|
||||
result.out = s.data[3];
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
struct UBO {
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(2)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(2) var<storage, read_write> result: Result;
|
||||
|
||||
struct SSBO {
|
||||
data: array<i32, 4>;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read_write> ssbo: SSBO;
|
||||
@group(0) @binding(1) var<storage, read_write> ssbo: SSBO;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
ssbo.data[ubo.dynamic_idx] = 1;
|
||||
result.out = ssbo.data[3];
|
||||
|
||||
@@ -2,21 +2,21 @@ struct UBO {
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(2)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(2) var<storage, read_write> result : Result;
|
||||
|
||||
struct SSBO {
|
||||
data : array<i32, 4>;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read_write> ssbo : SSBO;
|
||||
@group(0) @binding(1) var<storage, read_write> ssbo : SSBO;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
ssbo.data[ubo.dynamic_idx] = 1;
|
||||
result.out = ssbo.data[3];
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
struct UBO {
|
||||
dynamic_idx: i32;
|
||||
};
|
||||
[[group(0), binding(0)]] var<uniform> ubo: UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo: UBO;
|
||||
struct S {
|
||||
data: array<i32, 64>;
|
||||
};
|
||||
struct Result {
|
||||
out: i32;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read_write> result: Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result: Result;
|
||||
|
||||
var<workgroup> s : S;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
s.data[ubo.dynamic_idx] = 1;
|
||||
result.out = s.data[3];
|
||||
|
||||
@@ -2,7 +2,7 @@ struct UBO {
|
||||
dynamic_idx : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> ubo : UBO;
|
||||
@group(0) @binding(0) var<uniform> ubo : UBO;
|
||||
|
||||
struct S {
|
||||
data : array<i32, 64>;
|
||||
@@ -12,11 +12,11 @@ struct Result {
|
||||
out : i32;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read_write> result : Result;
|
||||
@group(0) @binding(1) var<storage, read_write> result : Result;
|
||||
|
||||
var<workgroup> s : S;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
s.data[ubo.dynamic_idx] = 1;
|
||||
result.out = s.data[3];
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// 1112.wgsl
|
||||
[[group(0), binding(0)]] var Sampler: sampler;
|
||||
[[group(0), binding(1)]] var randomTexture: texture_2d<f32>;
|
||||
[[group(0), binding(2)]] var depthTexture: texture_2d<f32>;
|
||||
@group(0) @binding(0) var Sampler: sampler;
|
||||
@group(0) @binding(1) var randomTexture: texture_2d<f32>;
|
||||
@group(0) @binding(2) var depthTexture: texture_2d<f32>;
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn main([[location(0)]] vUV : vec2<f32>) -> [[location(0)]] vec4<f32> {
|
||||
@stage(fragment)
|
||||
fn main(@location(0) vUV : vec2<f32>) -> @location(0) vec4<f32> {
|
||||
let random: vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
|
||||
|
||||
var i = 0;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
[[group(0), binding(0)]] var Sampler : sampler;
|
||||
@group(0) @binding(0) var Sampler : sampler;
|
||||
|
||||
[[group(0), binding(1)]] var randomTexture : texture_2d<f32>;
|
||||
@group(0) @binding(1) var randomTexture : texture_2d<f32>;
|
||||
|
||||
[[group(0), binding(2)]] var depthTexture : texture_2d<f32>;
|
||||
@group(0) @binding(2) var depthTexture : texture_2d<f32>;
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn main([[location(0)]] vUV : vec2<f32>) -> [[location(0)]] vec4<f32> {
|
||||
@stage(fragment)
|
||||
fn main(@location(0) vUV : vec2<f32>) -> @location(0) vec4<f32> {
|
||||
let random : vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
|
||||
var i = 0;
|
||||
loop {
|
||||
|
||||
@@ -13,10 +13,10 @@ struct Particles {
|
||||
p : array<Particle>;
|
||||
};
|
||||
|
||||
[[group(1), binding(3)]] var<storage, read> particles : Particles;
|
||||
[[group(1), binding(4)]] var<uniform> sim : Simulation;
|
||||
@group(1) @binding(3) var<storage, read> particles : Particles;
|
||||
@group(1) @binding(4) var<uniform> sim : Simulation;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
var particle = particles.p[0];
|
||||
particle.position[sim.i] = particle.position[sim.i];
|
||||
|
||||
@@ -13,11 +13,11 @@ struct Particles {
|
||||
p : array<Particle>;
|
||||
}
|
||||
|
||||
[[group(1), binding(3)]] var<storage, read> particles : Particles;
|
||||
@group(1) @binding(3) var<storage, read> particles : Particles;
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> sim : Simulation;
|
||||
@group(1) @binding(4) var<uniform> sim : Simulation;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
var particle = particles.p[0];
|
||||
particle.position[sim.i] = particle.position[sim.i];
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
j : u32;
|
||||
};
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
var m1 : mat2x4<f32>;
|
||||
m1[uniforms.i][0] = 1.0;
|
||||
|
||||
@@ -3,9 +3,9 @@ struct Uniforms {
|
||||
j : u32;
|
||||
}
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
var m1 : mat2x4<f32>;
|
||||
m1[uniforms.i][0] = 1.0;
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
j : u32;
|
||||
};
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
var m1 : mat2x4<f32>;
|
||||
m1[uniforms.i][uniforms.j] = 1.0;
|
||||
|
||||
@@ -3,9 +3,9 @@ struct Uniforms {
|
||||
j : u32;
|
||||
}
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
var m1 : mat2x4<f32>;
|
||||
m1[uniforms.i][uniforms.j] = 1.0;
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
j : u32;
|
||||
};
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
var<private> m1 : mat2x4<f32>;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
m1[0][uniforms.j] = 1.0;
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ struct Uniforms {
|
||||
j : u32;
|
||||
}
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
var<private> m1 : mat2x4<f32>;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
m1[0][uniforms.j] = 1.0;
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
j : u32;
|
||||
};
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
var m1 : mat2x4<f32>;
|
||||
m1[uniforms.i] = vec4<f32>(1.0);
|
||||
|
||||
@@ -3,9 +3,9 @@ struct Uniforms {
|
||||
j : u32;
|
||||
}
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
var m1 : mat2x4<f32>;
|
||||
m1[uniforms.i] = vec4<f32>(1.0);
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
j : u32;
|
||||
};
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
var<private> m1 : mat2x4<f32>;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
m1[uniforms.i][0] = 1.0;
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ struct Uniforms {
|
||||
j : u32;
|
||||
}
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
var<private> m1 : mat2x4<f32>;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
m1[uniforms.i][0] = 1.0;
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
j : u32;
|
||||
};
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
var<private> m1 : mat2x4<f32>;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
m1[uniforms.i][uniforms.j] = 1.0;
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ struct Uniforms {
|
||||
j : u32;
|
||||
}
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
var<private> m1 : mat2x4<f32>;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
m1[uniforms.i][uniforms.j] = 1.0;
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
j : u32;
|
||||
};
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
var<private> m1 : mat2x4<f32>;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
m1[0][uniforms.j] = 1.0;
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ struct Uniforms {
|
||||
j : u32;
|
||||
}
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
var<private> m1 : mat2x4<f32>;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
m1[0][uniforms.j] = 1.0;
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
j : u32;
|
||||
};
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
var<private> m1 : mat2x4<f32>;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
m1[uniforms.i] = vec4<f32>(1.0);
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ struct Uniforms {
|
||||
j : u32;
|
||||
}
|
||||
|
||||
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
var<private> m1 : mat2x4<f32>;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
m1[uniforms.i] = vec4<f32>(1.0);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ fn foo() {
|
||||
}
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
|
||||
for (var i : i32 = 0; i < 2; i = i + 1) {
|
||||
|
||||
@@ -15,7 +15,7 @@ fn foo() {
|
||||
}
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
for(var i : i32 = 0; (i < 2); i = (i + 1)) {
|
||||
foo();
|
||||
|
||||
@@ -11,7 +11,7 @@ fn foo() {
|
||||
v2b[i] = true;
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
|
||||
for (var i : i32 = 0; i < 2; i = i + 1) {
|
||||
|
||||
@@ -14,7 +14,7 @@ fn foo() {
|
||||
v2b[i] = true;
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
for(var i : i32 = 0; (i < 2); i = (i + 1)) {
|
||||
foo();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
var v2f : vec2<f32>;
|
||||
var v3f : vec3<f32>;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
var v2f : vec2<f32>;
|
||||
var v3f : vec3<f32>;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
var v2f : vec2<f32>;
|
||||
var v2f_2 : vec2<f32>;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
var v2f : vec2<f32>;
|
||||
var v2f_2 : vec2<f32>;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
var v2f : vec2<f32>;
|
||||
var v3f : vec3<f32>;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
var v2f : vec2<f32>;
|
||||
var v3f : vec3<f32>;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
var v2f : vec2<f32>;
|
||||
var v3f : vec3<f32>;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
var v2f : vec2<f32>;
|
||||
var v3f : vec3<f32>;
|
||||
|
||||
@@ -4,7 +4,7 @@ struct PointLight {
|
||||
};
|
||||
|
||||
struct PointLights {
|
||||
values : [[stride(16)]] array<PointLight>;
|
||||
values : @stride(16) array<PointLight>;
|
||||
};
|
||||
|
||||
struct Uniforms {
|
||||
@@ -15,21 +15,21 @@ struct PointLight {
|
||||
color : vec4<f32>;
|
||||
};
|
||||
|
||||
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
|
||||
[[binding(1), group(0)]] var<storage_buffer, read> pointLights : PointLights;
|
||||
[[binding(2), group(0)]] var mySampler: sampler;
|
||||
[[binding(3), group(0)]] var myTexture: texture_2d<f32>;
|
||||
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
|
||||
@binding(1) @group(0) var<storage_buffer, read> pointLights : PointLights;
|
||||
@binding(2) @group(0) var mySampler: sampler;
|
||||
@binding(3) @group(0) var myTexture: texture_2d<f32>;
|
||||
|
||||
struct FragmentInput {
|
||||
[[builtin(position)]] position : vec4<f32>;
|
||||
[[location(0)]] view_position : vec4<f32>;
|
||||
[[location(1)]] normal : vec4<f32>;
|
||||
[[location(2)]] uv : vec2<f32>;
|
||||
[[location(3)]] color : vec4<f32>;
|
||||
@builtin(position) position : vec4<f32>;
|
||||
@location(0) view_position : vec4<f32>;
|
||||
@location(1) normal : vec4<f32>;
|
||||
@location(2) uv : vec2<f32>;
|
||||
@location(3) color : vec4<f32>;
|
||||
};
|
||||
|
||||
struct FragmentOutput {
|
||||
[[location(0)]] color : vec4<f32>;
|
||||
@location(0) color : vec4<f32>;
|
||||
};
|
||||
|
||||
fn getColor(fragment : FragmentInput) -> vec4<f32>{
|
||||
@@ -63,7 +63,7 @@ fn getColor(fragment : FragmentInput) -> vec4<f32>{
|
||||
return color;
|
||||
};
|
||||
|
||||
[[stage(fragment)]]
|
||||
@stage(fragment)
|
||||
fn main(fragment : FragmentInput) -> FragmentOutput {
|
||||
|
||||
var output : FragmentOutput;
|
||||
|
||||
@@ -3,7 +3,7 @@ struct PointLight {
|
||||
}
|
||||
|
||||
struct PointLights {
|
||||
values : [[stride(16)]] array<PointLight>;
|
||||
values : @stride(16) array<PointLight>;
|
||||
}
|
||||
|
||||
struct Uniforms {
|
||||
@@ -14,29 +14,29 @@ struct Uniforms {
|
||||
color : vec4<f32>;
|
||||
}
|
||||
|
||||
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
|
||||
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[binding(1), group(0)]] var<storage, read> pointLights : PointLights;
|
||||
@binding(1) @group(0) var<storage, read> pointLights : PointLights;
|
||||
|
||||
[[binding(2), group(0)]] var mySampler : sampler;
|
||||
@binding(2) @group(0) var mySampler : sampler;
|
||||
|
||||
[[binding(3), group(0)]] var myTexture : texture_2d<f32>;
|
||||
@binding(3) @group(0) var myTexture : texture_2d<f32>;
|
||||
|
||||
struct FragmentInput {
|
||||
[[builtin(position)]]
|
||||
@builtin(position)
|
||||
position : vec4<f32>;
|
||||
[[location(0)]]
|
||||
@location(0)
|
||||
view_position : vec4<f32>;
|
||||
[[location(1)]]
|
||||
@location(1)
|
||||
normal : vec4<f32>;
|
||||
[[location(2)]]
|
||||
@location(2)
|
||||
uv : vec2<f32>;
|
||||
[[location(3)]]
|
||||
@location(3)
|
||||
color : vec4<f32>;
|
||||
}
|
||||
|
||||
struct FragmentOutput {
|
||||
[[location(0)]]
|
||||
@location(0)
|
||||
color : vec4<f32>;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ fn getColor(fragment : FragmentInput) -> vec4<f32> {
|
||||
return color;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
@stage(fragment)
|
||||
fn main(fragment : FragmentInput) -> FragmentOutput {
|
||||
var output : FragmentOutput;
|
||||
output.color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(fragment)]]
|
||||
@stage(fragment)
|
||||
fn main() {
|
||||
loop {
|
||||
if (false) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(fragment)]]
|
||||
@stage(fragment)
|
||||
fn main() {
|
||||
loop {
|
||||
if (false) {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
struct FragIn {
|
||||
[[location(0)]] a : f32;
|
||||
[[builtin(sample_mask)]] mask : u32;
|
||||
@location(0) a : f32;
|
||||
@builtin(sample_mask) mask : u32;
|
||||
};
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn main(in : FragIn, [[location(1)]] b : f32) -> FragIn {
|
||||
@stage(fragment)
|
||||
fn main(in : FragIn, @location(1) b : f32) -> FragIn {
|
||||
if (in.mask == 0u) {
|
||||
return in;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
struct FragIn {
|
||||
[[location(0)]]
|
||||
@location(0)
|
||||
a : f32;
|
||||
[[builtin(sample_mask)]]
|
||||
@builtin(sample_mask)
|
||||
mask : u32;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn main(in : FragIn, [[location(1)]] b : f32) -> FragIn {
|
||||
@stage(fragment)
|
||||
fn main(in : FragIn, @location(1) b : f32) -> FragIn {
|
||||
if ((in.mask == 0u)) {
|
||||
return in;
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ fn f(x : i32) -> i32 {
|
||||
return x;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
|
||||
@stage(fragment)
|
||||
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
|
||||
var y = x.x;
|
||||
loop {
|
||||
let r = f(y);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
SKIP: FAILED
|
||||
|
||||
bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
|
||||
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
|
||||
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
|
||||
^
|
||||
|
||||
#version 310 es
|
||||
@@ -51,7 +51,7 @@ void main() {
|
||||
|
||||
Error parsing GLSL shader:
|
||||
ERROR: 0:35: 'int' : must be qualified as flat in
|
||||
ERROR: 0:35: '' : compilation terminated
|
||||
ERROR: 0:35: '' : compilation terminated
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
|
||||
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
|
||||
^
|
||||
bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
|
||||
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
|
||||
^
|
||||
|
||||
int f(int x) {
|
||||
if (true) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
|
||||
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
|
||||
^
|
||||
bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
|
||||
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
|
||||
^
|
||||
|
||||
#include <metal_stdlib>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
|
||||
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
|
||||
^
|
||||
bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
|
||||
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
|
||||
^
|
||||
|
||||
; SPIR-V
|
||||
; Version: 1.3
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
|
||||
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
|
||||
^
|
||||
bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
|
||||
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
|
||||
^
|
||||
|
||||
fn f(x : i32) -> i32 {
|
||||
if ((x == 10)) {
|
||||
@@ -9,8 +9,8 @@ fn f(x : i32) -> i32 {
|
||||
return x;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn main([[location(1)]] x : vec3<i32>) -> [[location(2)]] i32 {
|
||||
@stage(fragment)
|
||||
fn main(@location(1) x : vec3<i32>) -> @location(2) i32 {
|
||||
var y = x.x;
|
||||
loop {
|
||||
let r = f(y);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
let a = 1;
|
||||
let b = 0;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn f() {
|
||||
let a = 1;
|
||||
let b = 0;
|
||||
|
||||
@@ -8,7 +8,7 @@ fn g() {
|
||||
x(&v);
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
@stage(fragment)
|
||||
fn f() {
|
||||
g();
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ fn g() {
|
||||
x(&(v));
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
@stage(fragment)
|
||||
fn f() {
|
||||
g();
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
type Arr = [[stride(64)]] array<mat4x4<f32>, 2u>;
|
||||
type Arr = @stride(64) array<mat4x4<f32>, 2u>;
|
||||
|
||||
type Arr_1 = [[stride(16)]] array<f32, 4u>;
|
||||
type Arr_1 = @stride(16) array<f32, 4u>;
|
||||
|
||||
struct LeftOver {
|
||||
worldViewProjection : mat4x4<f32>;
|
||||
time : f32;
|
||||
[[size(12)]]
|
||||
@size(12)
|
||||
padding : u32;
|
||||
test2 : Arr;
|
||||
test : Arr_1;
|
||||
@@ -13,7 +13,7 @@ struct LeftOver {
|
||||
|
||||
var<private> position : vec3<f32>;
|
||||
|
||||
[[group(2), binding(2)]] var<uniform> x_14 : LeftOver;
|
||||
@group(2) @binding(2) var<uniform> x_14 : LeftOver;
|
||||
|
||||
var<private> vUV : vec2<f32>;
|
||||
|
||||
@@ -49,14 +49,14 @@ fn main_1() {
|
||||
}
|
||||
|
||||
struct main_out {
|
||||
[[builtin(position)]]
|
||||
@builtin(position)
|
||||
gl_Position : vec4<f32>;
|
||||
[[location(0)]]
|
||||
@location(0)
|
||||
vUV_1 : vec2<f32>;
|
||||
}
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn main([[location(0)]] position_param : vec3<f32>, [[location(2)]] uv_param : vec2<f32>, [[location(1)]] normal_param : vec3<f32>) -> main_out {
|
||||
@stage(vertex)
|
||||
fn main(@location(0) position_param : vec3<f32>, @location(2) uv_param : vec2<f32>, @location(1) normal_param : vec3<f32>) -> main_out {
|
||||
position = position_param;
|
||||
uv = uv_param;
|
||||
normal = normal_param;
|
||||
|
||||
@@ -23,23 +23,23 @@
|
||||
value_f32_3 : f32;
|
||||
};
|
||||
|
||||
struct F32s { values : [[stride(4)]] array<f32>; };
|
||||
struct U32s { values : [[stride(4)]] array<u32>; };
|
||||
struct I32s { values : [[stride(4)]] array<i32>; };
|
||||
struct AU32s { values : [[stride(4)]] array<atomic<u32>>; };
|
||||
struct AI32s { values : [[stride(4)]] array<atomic<i32>>; };
|
||||
struct F32s { values : @stride(4) array<f32>; };
|
||||
struct U32s { values : @stride(4) array<u32>; };
|
||||
struct I32s { values : @stride(4) array<i32>; };
|
||||
struct AU32s { values : @stride(4) array<atomic<u32>>; };
|
||||
struct AI32s { values : @stride(4) array<atomic<i32>>; };
|
||||
|
||||
// IN
|
||||
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
|
||||
[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
|
||||
[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
|
||||
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
|
||||
@binding(10) @group(0) var<storage, read_write> indices : U32s;
|
||||
@binding(11) @group(0) var<storage, read_write> positions : F32s;
|
||||
|
||||
// OUT
|
||||
[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
|
||||
[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
|
||||
@binding(20) @group(0) var<storage, read_write> counters : AU32s;
|
||||
@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
|
||||
|
||||
// DEBUG
|
||||
[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
|
||||
@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
|
||||
|
||||
fn toVoxelPos(position : vec3<f32>) -> vec3<f32>{
|
||||
|
||||
@@ -95,8 +95,8 @@ fn doIgnore(){
|
||||
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(128)]]
|
||||
fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||
@stage(compute) @workgroup_size(128)
|
||||
fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||
|
||||
var triangleIndex = GlobalInvocationID.x;
|
||||
|
||||
@@ -132,8 +132,8 @@ fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>)
|
||||
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(128)]]
|
||||
fn main_create_lut([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||
@stage(compute) @workgroup_size(128)
|
||||
fn main_create_lut(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||
|
||||
var voxelIndex = GlobalInvocationID.x;
|
||||
|
||||
@@ -155,8 +155,8 @@ fn main_create_lut([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u
|
||||
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(128)]]
|
||||
fn main_sort_triangles([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||
@stage(compute) @workgroup_size(128)
|
||||
fn main_sort_triangles(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||
|
||||
var triangleIndex = GlobalInvocationID.x;
|
||||
|
||||
|
||||
@@ -23,36 +23,36 @@ struct Dbg {
|
||||
}
|
||||
|
||||
struct F32s {
|
||||
values : [[stride(4)]] array<f32>;
|
||||
values : @stride(4) array<f32>;
|
||||
}
|
||||
|
||||
struct U32s {
|
||||
values : [[stride(4)]] array<u32>;
|
||||
values : @stride(4) array<u32>;
|
||||
}
|
||||
|
||||
struct I32s {
|
||||
values : [[stride(4)]] array<i32>;
|
||||
values : @stride(4) array<i32>;
|
||||
}
|
||||
|
||||
struct AU32s {
|
||||
values : [[stride(4)]] array<atomic<u32>>;
|
||||
values : @stride(4) array<atomic<u32>>;
|
||||
}
|
||||
|
||||
struct AI32s {
|
||||
values : [[stride(4)]] array<atomic<i32>>;
|
||||
values : @stride(4) array<atomic<i32>>;
|
||||
}
|
||||
|
||||
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
|
||||
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
|
||||
@binding(10) @group(0) var<storage, read_write> indices : U32s;
|
||||
|
||||
[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
|
||||
@binding(11) @group(0) var<storage, read_write> positions : F32s;
|
||||
|
||||
[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
|
||||
@binding(20) @group(0) var<storage, read_write> counters : AU32s;
|
||||
|
||||
[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
|
||||
@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
|
||||
|
||||
[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
|
||||
@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
|
||||
|
||||
fn toVoxelPos(position : vec3<f32>) -> vec3<f32> {
|
||||
var bbMin = vec3<f32>(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z);
|
||||
@@ -92,8 +92,8 @@ fn doIgnore() {
|
||||
var g55 = atomicLoad(&(LUT.values[0]));
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(128)]]
|
||||
fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||
@stage(compute) @workgroup_size(128)
|
||||
fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||
var triangleIndex = GlobalInvocationID.x;
|
||||
if ((triangleIndex >= uniforms.numTriangles)) {
|
||||
return;
|
||||
@@ -117,8 +117,8 @@ fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>)
|
||||
}
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(128)]]
|
||||
fn main_create_lut([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||
@stage(compute) @workgroup_size(128)
|
||||
fn main_create_lut(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||
var voxelIndex = GlobalInvocationID.x;
|
||||
doIgnore();
|
||||
var maxVoxels = ((uniforms.gridSize * uniforms.gridSize) * uniforms.gridSize);
|
||||
@@ -133,8 +133,8 @@ fn main_create_lut([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u
|
||||
atomicStore(&(LUT.values[voxelIndex]), offset);
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(128)]]
|
||||
fn main_sort_triangles([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||
@stage(compute) @workgroup_size(128)
|
||||
fn main_sort_triangles(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||
var triangleIndex = GlobalInvocationID.x;
|
||||
doIgnore();
|
||||
if ((triangleIndex >= uniforms.numTriangles)) {
|
||||
|
||||
@@ -15,7 +15,7 @@ struct LightData {
|
||||
struct LightsBuffer {
|
||||
lights: array<LightData>;
|
||||
};
|
||||
[[group(0), binding(0)]] var<storage, read_write> lightsBuffer: LightsBuffer;
|
||||
@group(0) @binding(0) var<storage, read_write> lightsBuffer: LightsBuffer;
|
||||
struct TileLightIdData {
|
||||
count: atomic<u32>;
|
||||
lightId: array<u32, 64>;
|
||||
@@ -23,8 +23,8 @@ struct TileLightIdData {
|
||||
struct Tiles {
|
||||
data: array<TileLightIdData, 4>;
|
||||
};
|
||||
[[group(1), binding(0)]] var<storage, read_write> tileLightId: Tiles;
|
||||
|
||||
@group(1) @binding(0) var<storage, read_write> tileLightId: Tiles;
|
||||
|
||||
struct Config {
|
||||
numLights : u32;
|
||||
numTiles : u32;
|
||||
@@ -33,7 +33,7 @@ struct TileLightIdData {
|
||||
numTileLightSlot : u32;
|
||||
tileSize : u32;
|
||||
};
|
||||
[[group(2), binding(0)]] var<uniform> config: Config;
|
||||
@group(2) @binding(0) var<uniform> config: Config;
|
||||
struct Uniforms {
|
||||
min : vec4<f32>;
|
||||
max : vec4<f32>;
|
||||
@@ -43,16 +43,16 @@ struct TileLightIdData {
|
||||
// Tile info
|
||||
fullScreenSize : vec4<f32>; // width, height
|
||||
};
|
||||
[[group(3), binding(0)]] var<uniform> uniforms: Uniforms;
|
||||
[[stage(compute), workgroup_size(64, 1, 1)]]
|
||||
fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||
@group(3) @binding(0) var<uniform> uniforms: Uniforms;
|
||||
@stage(compute) @workgroup_size(64, 1, 1)
|
||||
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||
var index = GlobalInvocationID.x;
|
||||
if (index >= config.numLights) {
|
||||
return;
|
||||
}
|
||||
// Light position updating
|
||||
lightsBuffer.lights[index].position.y = lightsBuffer.lights[index].position.y - 0.1 + 0.001 * (f32(index) - 64.0 * floor(f32(index) / 64.0));
|
||||
|
||||
|
||||
if (lightsBuffer.lights[index].position.y < uniforms.min.y) {
|
||||
lightsBuffer.lights[index].position.y = uniforms.max.y;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ struct LightsBuffer {
|
||||
lights : array<LightData>;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<storage, read_write> lightsBuffer : LightsBuffer;
|
||||
@group(0) @binding(0) var<storage, read_write> lightsBuffer : LightsBuffer;
|
||||
|
||||
struct TileLightIdData {
|
||||
count : atomic<u32>;
|
||||
@@ -19,7 +19,7 @@ struct Tiles {
|
||||
data : array<TileLightIdData, 4>;
|
||||
}
|
||||
|
||||
[[group(1), binding(0)]] var<storage, read_write> tileLightId : Tiles;
|
||||
@group(1) @binding(0) var<storage, read_write> tileLightId : Tiles;
|
||||
|
||||
struct Config {
|
||||
numLights : u32;
|
||||
@@ -30,7 +30,7 @@ struct Config {
|
||||
tileSize : u32;
|
||||
}
|
||||
|
||||
[[group(2), binding(0)]] var<uniform> config : Config;
|
||||
@group(2) @binding(0) var<uniform> config : Config;
|
||||
|
||||
struct Uniforms {
|
||||
min : vec4<f32>;
|
||||
@@ -40,10 +40,10 @@ struct Uniforms {
|
||||
fullScreenSize : vec4<f32>;
|
||||
}
|
||||
|
||||
[[group(3), binding(0)]] var<uniform> uniforms : Uniforms;
|
||||
@group(3) @binding(0) var<uniform> uniforms : Uniforms;
|
||||
|
||||
[[stage(compute), workgroup_size(64, 1, 1)]]
|
||||
fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||
@stage(compute) @workgroup_size(64, 1, 1)
|
||||
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||
var index = GlobalInvocationID.x;
|
||||
if ((index >= config.numLights)) {
|
||||
return;
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
struct Buffer { data: u32; };
|
||||
[[group(0), binding(0)]] var<storage, read_write> buffer: Buffer;
|
||||
@group(0) @binding(0) var<storage, read_write> buffer: Buffer;
|
||||
fn main() { buffer.data = buffer.data + 1u; }
|
||||
|
||||
@@ -2,7 +2,7 @@ struct Buffer {
|
||||
data : u32;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<storage, read_write> buffer : Buffer;
|
||||
@group(0) @binding(0) var<storage, read_write> buffer : Buffer;
|
||||
|
||||
fn main() {
|
||||
buffer.data = (buffer.data + 1u);
|
||||
|
||||
@@ -2,7 +2,7 @@ fn foo() -> i32 {
|
||||
return 1;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
@stage(fragment)
|
||||
fn main() {
|
||||
var arr = array<f32, 4>();
|
||||
for (let a = &arr[foo()]; ;) {
|
||||
|
||||
@@ -2,7 +2,7 @@ fn foo() -> i32 {
|
||||
return 1;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
@stage(fragment)
|
||||
fn main() {
|
||||
var arr = array<f32, 4>();
|
||||
for(let a = &(arr[foo()]); ; ) {
|
||||
|
||||
@@ -3,7 +3,7 @@ fn call_discard() -> bool {
|
||||
return true;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
@stage(fragment)
|
||||
fn f() {
|
||||
var v = call_discard();
|
||||
var also_unreachable : bool;
|
||||
|
||||
@@ -11,7 +11,7 @@ fn call_discard() -> bool {
|
||||
return true;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
@stage(fragment)
|
||||
fn f() {
|
||||
var v = call_discard();
|
||||
var also_unreachable : bool;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
[[group(0), binding(1)]]
|
||||
@group(0) @binding(1)
|
||||
var<storage, read> data : array<i32>;
|
||||
|
||||
fn foo() -> i32 {
|
||||
return data[0];
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(16, 16, 1)]]
|
||||
@stage(compute) @workgroup_size(16, 16, 1)
|
||||
fn main() {
|
||||
foo();
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
[[group(0), binding(1)]] var<storage, read> data : array<i32>;
|
||||
@group(0) @binding(1) var<storage, read> data : array<i32>;
|
||||
|
||||
fn foo() -> i32 {
|
||||
return data[0];
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(16, 16, 1)]]
|
||||
@stage(compute) @workgroup_size(16, 16, 1)
|
||||
fn main() {
|
||||
foo();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ fn main_1() {
|
||||
return;
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
@stage(compute) @workgroup_size(1, 1, 1)
|
||||
fn main() {
|
||||
main_1();
|
||||
}
|
||||
|
||||
@@ -5,9 +5,9 @@ struct Buf{
|
||||
data : Arr;
|
||||
};
|
||||
|
||||
[[group(0), binding (0)]] var<storage, read_write> b : Buf;
|
||||
@group(0) @binding(0) var<storage, read_write> b : Buf;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
var i : u32 = 0u;
|
||||
loop {
|
||||
|
||||
@@ -5,9 +5,9 @@ struct Buf {
|
||||
data : Arr;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<storage, read_write> b : Buf;
|
||||
@group(0) @binding(0) var<storage, read_write> b : Buf;
|
||||
|
||||
[[stage(compute), workgroup_size(1)]]
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
var i : u32 = 0u;
|
||||
loop {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[[stage(vertex)]]
|
||||
fn main() -> [[builtin(position)]] vec4<f32> {
|
||||
@stage(vertex)
|
||||
fn main() -> @builtin(position) vec4<f32> {
|
||||
var light : vec3<f32> = vec3<f32>(1.2, 1., 2.);
|
||||
var negative_light : vec3<f32> = -light;
|
||||
return vec4<f32>();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[[stage(vertex)]]
|
||||
fn main() -> [[builtin(position)]] vec4<f32> {
|
||||
@stage(vertex)
|
||||
fn main() -> @builtin(position) vec4<f32> {
|
||||
var light : vec3<f32> = vec3<f32>(1.200000048, 1.0, 2.0);
|
||||
var negative_light : vec3<f32> = -(light);
|
||||
return vec4<f32>();
|
||||
|
||||
@@ -3,6 +3,6 @@ struct Light {
|
||||
colour : vec3<f32>;
|
||||
};
|
||||
struct Lights {
|
||||
light : [[stride(32)]] array<Light>;
|
||||
light : @stride(32) array<Light>;
|
||||
};
|
||||
[[group(0), binding(1)]] var<storage, read> lights : Lights;
|
||||
@group(0) @binding(1) var<storage, read> lights : Lights;
|
||||
|
||||
@@ -4,7 +4,7 @@ struct Light {
|
||||
}
|
||||
|
||||
struct Lights {
|
||||
light : [[stride(32)]] array<Light>;
|
||||
light : @stride(32) array<Light>;
|
||||
}
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read> lights : Lights;
|
||||
@group(0) @binding(1) var<storage, read> lights : Lights;
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
m : mat2x2<f32>;
|
||||
};
|
||||
|
||||
[[group(0), binding(0)]] var<storage> SSBO : S;
|
||||
[[group(0), binding(0)]] var<uniform> UBO : S;
|
||||
@group(0) @binding(0) var<storage> SSBO : S;
|
||||
@group(0) @binding(0) var<uniform> UBO : S;
|
||||
|
||||
@@ -2,6 +2,6 @@ struct S {
|
||||
m : mat2x2<f32>;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<storage> SSBO : S;
|
||||
@group(0) @binding(0) var<storage> SSBO : S;
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> UBO : S;
|
||||
@group(0) @binding(0) var<uniform> UBO : S;
|
||||
|
||||
@@ -6,12 +6,12 @@ struct vertexUniformBuffer2 {
|
||||
transform2 : mat2x2<f32>;
|
||||
};
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> x_20 : vertexUniformBuffer1;
|
||||
[[group(1), binding(0)]] var<uniform> x_26 : vertexUniformBuffer2;
|
||||
@group(0) @binding(0) var<uniform> x_20 : vertexUniformBuffer1;
|
||||
@group(1) @binding(0) var<uniform> x_26 : vertexUniformBuffer2;
|
||||
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn main([[builtin(vertex_index)]] gl_VertexIndex : u32) -> [[builtin(position)]] vec4<f32> {
|
||||
@stage(vertex)
|
||||
fn main(@builtin(vertex_index) gl_VertexIndex : u32) -> @builtin(position) vec4<f32> {
|
||||
var indexable : array<vec2<f32>, 3>;
|
||||
let x_23 : mat2x2<f32> = x_20.transform1;
|
||||
let x_28 : mat2x2<f32> = x_26.transform2;
|
||||
|
||||
@@ -6,12 +6,12 @@ struct vertexUniformBuffer2 {
|
||||
transform2 : mat2x2<f32>;
|
||||
}
|
||||
|
||||
[[group(0), binding(0)]] var<uniform> x_20 : vertexUniformBuffer1;
|
||||
@group(0) @binding(0) var<uniform> x_20 : vertexUniformBuffer1;
|
||||
|
||||
[[group(1), binding(0)]] var<uniform> x_26 : vertexUniformBuffer2;
|
||||
@group(1) @binding(0) var<uniform> x_26 : vertexUniformBuffer2;
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn main([[builtin(vertex_index)]] gl_VertexIndex : u32) -> [[builtin(position)]] vec4<f32> {
|
||||
@stage(vertex)
|
||||
fn main(@builtin(vertex_index) gl_VertexIndex : u32) -> @builtin(position) vec4<f32> {
|
||||
var indexable : array<vec2<f32>, 3>;
|
||||
let x_23 : mat2x2<f32> = x_20.transform1;
|
||||
let x_28 : mat2x2<f32> = x_26.transform2;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user