293 lines
7.2 KiB
WebGPU Shading Language
293 lines
7.2 KiB
WebGPU Shading Language
|
struct BST {
|
||
|
data : i32;
|
||
|
leftIndex : i32;
|
||
|
rightIndex : i32;
|
||
|
};
|
||
|
|
||
|
struct buf0 {
|
||
|
injectionSwitch : vec2<f32>;
|
||
|
};
|
||
|
|
||
|
var<private> tree_1 : array<BST, 10>;
|
||
|
|
||
|
[[group(0), binding(0)]] var<uniform> x_16 : buf0;
|
||
|
|
||
|
var<private> x_GLF_color : vec4<f32>;
|
||
|
|
||
|
fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
|
||
|
let x_165 : i32 = *(data);
|
||
|
(*(tree)).data = x_165;
|
||
|
(*(tree)).leftIndex = -1;
|
||
|
(*(tree)).rightIndex = -1;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
|
||
|
var baseIndex : i32;
|
||
|
var param : BST;
|
||
|
var param_1 : i32;
|
||
|
var x_170 : i32;
|
||
|
var param_2 : BST;
|
||
|
var param_3 : i32;
|
||
|
baseIndex = 0;
|
||
|
loop {
|
||
|
let x_175 : i32 = baseIndex;
|
||
|
let x_176 : i32 = *(treeIndex);
|
||
|
if ((x_175 <= x_176)) {
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
let x_179 : i32 = *(data_1);
|
||
|
let x_180 : i32 = baseIndex;
|
||
|
let x_182 : i32 = tree_1[x_180].data;
|
||
|
if ((x_179 <= x_182)) {
|
||
|
let x_187 : i32 = baseIndex;
|
||
|
let x_189 : i32 = tree_1[x_187].leftIndex;
|
||
|
if ((x_189 == -1)) {
|
||
|
let x_194 : i32 = baseIndex;
|
||
|
let x_195 : i32 = *(treeIndex);
|
||
|
tree_1[x_194].leftIndex = x_195;
|
||
|
let x_198 : f32 = x_16.injectionSwitch.x;
|
||
|
let x_200 : f32 = x_16.injectionSwitch.y;
|
||
|
if ((x_198 < x_200)) {
|
||
|
let x_204 : i32 = *(treeIndex);
|
||
|
let x_206 : BST = tree_1[x_204];
|
||
|
param = x_206;
|
||
|
let x_207 : i32 = *(data_1);
|
||
|
param_1 = x_207;
|
||
|
makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
|
||
|
let x_209 : BST = param;
|
||
|
tree_1[x_204] = x_209;
|
||
|
}
|
||
|
let x_212 : f32 = x_16.injectionSwitch.x;
|
||
|
let x_214 : f32 = x_16.injectionSwitch.y;
|
||
|
if ((x_212 < x_214)) {
|
||
|
return;
|
||
|
}
|
||
|
} else {
|
||
|
let x_218 : i32 = baseIndex;
|
||
|
let x_220 : i32 = tree_1[x_218].leftIndex;
|
||
|
baseIndex = x_220;
|
||
|
continue;
|
||
|
}
|
||
|
} else {
|
||
|
let x_222 : f32 = x_16.injectionSwitch.x;
|
||
|
let x_224 : f32 = x_16.injectionSwitch.y;
|
||
|
if ((x_222 < x_224)) {
|
||
|
let x_229 : i32 = baseIndex;
|
||
|
let x_231 : i32 = tree_1[x_229].rightIndex;
|
||
|
x_170 = x_231;
|
||
|
} else {
|
||
|
let x_232 : i32 = baseIndex;
|
||
|
let x_234 : i32 = tree_1[x_232].rightIndex;
|
||
|
x_170 = x_234;
|
||
|
}
|
||
|
let x_235 : i32 = x_170;
|
||
|
if ((x_235 == -1)) {
|
||
|
let x_240 : i32 = baseIndex;
|
||
|
let x_241 : i32 = *(treeIndex);
|
||
|
tree_1[x_240].rightIndex = x_241;
|
||
|
let x_243 : i32 = *(treeIndex);
|
||
|
let x_245 : BST = tree_1[x_243];
|
||
|
param_2 = x_245;
|
||
|
let x_246 : i32 = *(data_1);
|
||
|
param_3 = x_246;
|
||
|
makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
|
||
|
let x_248 : BST = param_2;
|
||
|
tree_1[x_243] = x_248;
|
||
|
return;
|
||
|
} else {
|
||
|
let x_250 : i32 = baseIndex;
|
||
|
let x_252 : i32 = tree_1[x_250].rightIndex;
|
||
|
baseIndex = x_252;
|
||
|
continue;
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
let x_254 : f32 = x_16.injectionSwitch.x;
|
||
|
let x_256 : f32 = x_16.injectionSwitch.y;
|
||
|
if ((x_254 > x_256)) {
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
fn search_i1_(target : ptr<function, i32>) -> i32 {
|
||
|
var index : i32;
|
||
|
var currentNode : BST;
|
||
|
var x_261 : i32;
|
||
|
index = 0;
|
||
|
loop {
|
||
|
let x_266 : i32 = index;
|
||
|
if ((x_266 != -1)) {
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
let x_269 : i32 = index;
|
||
|
let x_271 : BST = tree_1[x_269];
|
||
|
currentNode = x_271;
|
||
|
let x_273 : i32 = currentNode.data;
|
||
|
let x_274 : i32 = *(target);
|
||
|
if ((x_273 == x_274)) {
|
||
|
let x_278 : i32 = *(target);
|
||
|
return x_278;
|
||
|
}
|
||
|
let x_279 : i32 = *(target);
|
||
|
let x_281 : i32 = currentNode.data;
|
||
|
if ((x_279 > x_281)) {
|
||
|
let x_287 : i32 = currentNode.rightIndex;
|
||
|
x_261 = x_287;
|
||
|
} else {
|
||
|
let x_289 : i32 = currentNode.leftIndex;
|
||
|
x_261 = x_289;
|
||
|
}
|
||
|
let x_290 : i32 = x_261;
|
||
|
index = x_290;
|
||
|
}
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
fn main_1() {
|
||
|
var treeIndex_1 : i32;
|
||
|
var param_4 : BST;
|
||
|
var param_5 : i32;
|
||
|
var param_6 : i32;
|
||
|
var param_7 : i32;
|
||
|
var param_8 : i32;
|
||
|
var param_9 : i32;
|
||
|
var param_10 : i32;
|
||
|
var param_11 : i32;
|
||
|
var param_12 : i32;
|
||
|
var param_13 : i32;
|
||
|
var param_14 : i32;
|
||
|
var param_15 : i32;
|
||
|
var param_16 : i32;
|
||
|
var param_17 : i32;
|
||
|
var param_18 : i32;
|
||
|
var param_19 : i32;
|
||
|
var param_20 : i32;
|
||
|
var param_21 : i32;
|
||
|
var param_22 : i32;
|
||
|
var param_23 : i32;
|
||
|
var count : i32;
|
||
|
var i : i32;
|
||
|
var result : i32;
|
||
|
var param_24 : i32;
|
||
|
treeIndex_1 = 0;
|
||
|
let x_91 : BST = tree_1[0];
|
||
|
param_4 = x_91;
|
||
|
param_5 = 9;
|
||
|
makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
|
||
|
let x_93 : BST = param_4;
|
||
|
tree_1[0] = x_93;
|
||
|
let x_95 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_95 + 1);
|
||
|
let x_97 : i32 = treeIndex_1;
|
||
|
param_6 = x_97;
|
||
|
param_7 = 5;
|
||
|
insert_i1_i1_(&(param_6), &(param_7));
|
||
|
let x_99 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_99 + 1);
|
||
|
let x_101 : i32 = treeIndex_1;
|
||
|
param_8 = x_101;
|
||
|
param_9 = 12;
|
||
|
insert_i1_i1_(&(param_8), &(param_9));
|
||
|
let x_103 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_103 + 1);
|
||
|
let x_105 : i32 = treeIndex_1;
|
||
|
param_10 = x_105;
|
||
|
param_11 = 15;
|
||
|
insert_i1_i1_(&(param_10), &(param_11));
|
||
|
let x_107 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_107 + 1);
|
||
|
let x_109 : i32 = treeIndex_1;
|
||
|
param_12 = x_109;
|
||
|
param_13 = 7;
|
||
|
insert_i1_i1_(&(param_12), &(param_13));
|
||
|
let x_111 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_111 + 1);
|
||
|
let x_113 : i32 = treeIndex_1;
|
||
|
param_14 = x_113;
|
||
|
param_15 = 8;
|
||
|
insert_i1_i1_(&(param_14), &(param_15));
|
||
|
let x_115 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_115 + 1);
|
||
|
let x_117 : i32 = treeIndex_1;
|
||
|
param_16 = x_117;
|
||
|
param_17 = 2;
|
||
|
insert_i1_i1_(&(param_16), &(param_17));
|
||
|
let x_119 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_119 + 1);
|
||
|
let x_121 : i32 = treeIndex_1;
|
||
|
param_18 = x_121;
|
||
|
param_19 = 6;
|
||
|
insert_i1_i1_(&(param_18), &(param_19));
|
||
|
let x_123 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_123 + 1);
|
||
|
let x_125 : i32 = treeIndex_1;
|
||
|
param_20 = x_125;
|
||
|
param_21 = 17;
|
||
|
insert_i1_i1_(&(param_20), &(param_21));
|
||
|
let x_127 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_127 + 1);
|
||
|
let x_129 : i32 = treeIndex_1;
|
||
|
param_22 = x_129;
|
||
|
param_23 = 13;
|
||
|
insert_i1_i1_(&(param_22), &(param_23));
|
||
|
count = 0;
|
||
|
i = 0;
|
||
|
loop {
|
||
|
let x_135 : i32 = i;
|
||
|
if ((x_135 < 20)) {
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
let x_138 : i32 = i;
|
||
|
param_24 = x_138;
|
||
|
let x_139 : i32 = search_i1_(&(param_24));
|
||
|
result = x_139;
|
||
|
let x_140 : i32 = i;
|
||
|
switch(x_140) {
|
||
|
case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
|
||
|
let x_150 : i32 = result;
|
||
|
let x_151 : i32 = i;
|
||
|
if ((x_150 == x_151)) {
|
||
|
let x_155 : i32 = count;
|
||
|
count = (x_155 + 1);
|
||
|
}
|
||
|
}
|
||
|
default: {
|
||
|
let x_144 : i32 = result;
|
||
|
if ((x_144 == -1)) {
|
||
|
let x_148 : i32 = count;
|
||
|
count = (x_148 + 1);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
continuing {
|
||
|
let x_157 : i32 = i;
|
||
|
i = (x_157 + 1);
|
||
|
}
|
||
|
}
|
||
|
let x_159 : i32 = count;
|
||
|
if ((x_159 == 20)) {
|
||
|
x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
|
||
|
} else {
|
||
|
x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
struct main_out {
|
||
|
[[location(0)]]
|
||
|
x_GLF_color_1 : vec4<f32>;
|
||
|
};
|
||
|
|
||
|
[[stage(fragment)]]
|
||
|
fn main() -> main_out {
|
||
|
main_1();
|
||
|
return main_out(x_GLF_color);
|
||
|
}
|