421 lines
10 KiB
WebGPU Shading Language
421 lines
10 KiB
WebGPU Shading Language
|
struct BST {
|
||
|
data : i32;
|
||
|
leftIndex : i32;
|
||
|
rightIndex : i32;
|
||
|
};
|
||
|
|
||
|
[[block]]
|
||
|
struct buf0 {
|
||
|
injectionSwitch : vec2<f32>;
|
||
|
};
|
||
|
|
||
|
struct Obj {
|
||
|
odd_numbers : array<f32, 10>;
|
||
|
even_numbers : array<f32, 10>;
|
||
|
};
|
||
|
|
||
|
var<private> tree_1 : array<BST, 10>;
|
||
|
|
||
|
[[group(0), binding(0)]] var<uniform> x_27 : buf0;
|
||
|
|
||
|
var<private> gl_FragCoord : vec4<f32>;
|
||
|
|
||
|
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_74 : i32 = *(data);
|
||
|
(*(tree)).data = x_74;
|
||
|
(*(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 param_2 : BST;
|
||
|
var param_3 : i32;
|
||
|
var GLF_live8i : i32;
|
||
|
var GLF_live8A : array<f32, 50>;
|
||
|
baseIndex = 0;
|
||
|
loop {
|
||
|
let x_75 : i32 = baseIndex;
|
||
|
let x_76 : i32 = *(treeIndex);
|
||
|
if ((x_75 <= x_76)) {
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
let x_77 : i32 = *(data_1);
|
||
|
let x_78 : i32 = baseIndex;
|
||
|
let x_79 : i32 = tree_1[x_78].data;
|
||
|
if ((x_77 <= x_79)) {
|
||
|
let x_80 : i32 = baseIndex;
|
||
|
let x_81 : i32 = tree_1[x_80].leftIndex;
|
||
|
if ((x_81 == -1)) {
|
||
|
let x_82 : i32 = baseIndex;
|
||
|
let x_83 : i32 = *(treeIndex);
|
||
|
tree_1[x_82].leftIndex = x_83;
|
||
|
let x_84 : i32 = *(treeIndex);
|
||
|
let x_350 : BST = tree_1[x_84];
|
||
|
param = x_350;
|
||
|
let x_85 : i32 = *(data_1);
|
||
|
param_1 = x_85;
|
||
|
makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
|
||
|
let x_352 : BST = param;
|
||
|
tree_1[x_84] = x_352;
|
||
|
return;
|
||
|
} else {
|
||
|
let x_86 : i32 = baseIndex;
|
||
|
let x_87 : i32 = tree_1[x_86].leftIndex;
|
||
|
baseIndex = x_87;
|
||
|
continue;
|
||
|
}
|
||
|
} else {
|
||
|
let x_88 : i32 = baseIndex;
|
||
|
let x_89 : i32 = tree_1[x_88].rightIndex;
|
||
|
if ((x_89 == -1)) {
|
||
|
let x_90 : i32 = baseIndex;
|
||
|
let x_91 : i32 = *(treeIndex);
|
||
|
tree_1[x_90].rightIndex = x_91;
|
||
|
let x_92 : i32 = *(treeIndex);
|
||
|
let x_362 : BST = tree_1[x_92];
|
||
|
param_2 = x_362;
|
||
|
let x_93 : i32 = *(data_1);
|
||
|
param_3 = x_93;
|
||
|
makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
|
||
|
let x_364 : BST = param_2;
|
||
|
tree_1[x_92] = x_364;
|
||
|
return;
|
||
|
} else {
|
||
|
GLF_live8i = 1;
|
||
|
let x_94 : i32 = GLF_live8i;
|
||
|
let x_95 : i32 = GLF_live8i;
|
||
|
let x_96 : i32 = GLF_live8i;
|
||
|
let x_369 : i32 = select(0, x_96, ((x_94 >= 0) && (x_95 < 50)));
|
||
|
let x_371 : f32 = GLF_live8A[0];
|
||
|
let x_373 : f32 = GLF_live8A[x_369];
|
||
|
GLF_live8A[x_369] = (x_373 + x_371);
|
||
|
loop {
|
||
|
let x_97 : i32 = baseIndex;
|
||
|
let x_98 : i32 = tree_1[x_97].rightIndex;
|
||
|
baseIndex = x_98;
|
||
|
|
||
|
continuing {
|
||
|
let x_382 : f32 = x_27.injectionSwitch.x;
|
||
|
let x_384 : f32 = x_27.injectionSwitch.y;
|
||
|
if ((x_382 > x_384)) {
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
continue;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
fn search_i1_(target : ptr<function, i32>) -> i32 {
|
||
|
var index : i32;
|
||
|
var currentNode : BST;
|
||
|
var x_387 : i32;
|
||
|
index = 0;
|
||
|
loop {
|
||
|
let x_99 : i32 = index;
|
||
|
if ((x_99 != -1)) {
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
let x_100 : i32 = index;
|
||
|
let x_395 : BST = tree_1[x_100];
|
||
|
currentNode = x_395;
|
||
|
let x_101 : i32 = currentNode.data;
|
||
|
let x_102 : i32 = *(target);
|
||
|
if ((x_101 == x_102)) {
|
||
|
let x_103 : i32 = *(target);
|
||
|
return x_103;
|
||
|
}
|
||
|
let x_104 : i32 = *(target);
|
||
|
let x_105 : i32 = currentNode.data;
|
||
|
if ((x_104 > x_105)) {
|
||
|
let x_106 : i32 = currentNode.rightIndex;
|
||
|
x_387 = x_106;
|
||
|
} else {
|
||
|
let x_107 : i32 = currentNode.leftIndex;
|
||
|
x_387 = x_107;
|
||
|
}
|
||
|
let x_108 : i32 = x_387;
|
||
|
index = x_108;
|
||
|
}
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
fn makeFrame_f1_(v : ptr<function, f32>) -> f32 {
|
||
|
var param_5 : i32;
|
||
|
var param_6 : i32;
|
||
|
var param_7 : i32;
|
||
|
let x_418 : f32 = *(v);
|
||
|
*(v) = (x_418 * 6.5);
|
||
|
let x_420 : f32 = *(v);
|
||
|
if ((x_420 < 1.5)) {
|
||
|
param_5 = 100;
|
||
|
let x_110 : i32 = search_i1_(&(param_5));
|
||
|
return f32(x_110);
|
||
|
}
|
||
|
let x_425 : f32 = *(v);
|
||
|
if ((x_425 < 4.0)) {
|
||
|
return 0.0;
|
||
|
}
|
||
|
let x_429 : f32 = *(v);
|
||
|
param_6 = 6;
|
||
|
let x_111 : i32 = search_i1_(&(param_6));
|
||
|
if ((x_429 < f32(x_111))) {
|
||
|
return 1.0;
|
||
|
}
|
||
|
param_7 = 30;
|
||
|
let x_112 : i32 = search_i1_(&(param_7));
|
||
|
return (10.0 + f32(x_112));
|
||
|
}
|
||
|
|
||
|
fn hueColor_f1_(angle : ptr<function, f32>) -> vec3<f32> {
|
||
|
var nodeData : f32;
|
||
|
var param_4 : i32;
|
||
|
param_4 = 15;
|
||
|
let x_109 : i32 = search_i1_(&(param_4));
|
||
|
nodeData = f32(x_109);
|
||
|
let x_409 : f32 = *(angle);
|
||
|
let x_410 : f32 = nodeData;
|
||
|
return ((vec3<f32>(30.0, 30.0, 30.0) + (vec3<f32>(1.0, 5.0, x_410) * x_409)) / vec3<f32>(50.0, 50.0, 50.0));
|
||
|
}
|
||
|
|
||
|
fn main_1() {
|
||
|
var treeIndex_1 : i32;
|
||
|
var param_8 : BST;
|
||
|
var param_9 : i32;
|
||
|
var param_10 : i32;
|
||
|
var param_11 : i32;
|
||
|
var GLF_live1_looplimiter2 : i32;
|
||
|
var GLF_live1i : 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 GLF_live4_looplimiter3 : i32;
|
||
|
var GLF_live4i : i32;
|
||
|
var GLF_live4index : i32;
|
||
|
var GLF_live4obj : Obj;
|
||
|
var param_24 : i32;
|
||
|
var param_25 : i32;
|
||
|
var param_26 : i32;
|
||
|
var param_27 : i32;
|
||
|
var z : vec2<f32>;
|
||
|
var x : f32;
|
||
|
var param_28 : f32;
|
||
|
var y : f32;
|
||
|
var param_29 : f32;
|
||
|
var sum : i32;
|
||
|
var target_1 : i32;
|
||
|
var result : i32;
|
||
|
var param_30 : i32;
|
||
|
var a : f32;
|
||
|
var x_235 : vec3<f32>;
|
||
|
var param_31 : f32;
|
||
|
treeIndex_1 = 0;
|
||
|
let x_237 : BST = tree_1[0];
|
||
|
param_8 = x_237;
|
||
|
param_9 = 9;
|
||
|
makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_8), &(param_9));
|
||
|
let x_239 : BST = param_8;
|
||
|
tree_1[0] = x_239;
|
||
|
let x_113 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_113 + 1);
|
||
|
let x_115 : i32 = treeIndex_1;
|
||
|
param_10 = x_115;
|
||
|
param_11 = 5;
|
||
|
insert_i1_i1_(&(param_10), &(param_11));
|
||
|
let x_116 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_116 + 1);
|
||
|
GLF_live1_looplimiter2 = 0;
|
||
|
GLF_live1i = 0;
|
||
|
loop {
|
||
|
if (true) {
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
let x_118 : i32 = GLF_live1_looplimiter2;
|
||
|
if ((x_118 >= 7)) {
|
||
|
break;
|
||
|
}
|
||
|
let x_119 : i32 = GLF_live1_looplimiter2;
|
||
|
GLF_live1_looplimiter2 = (x_119 + 1);
|
||
|
|
||
|
continuing {
|
||
|
let x_121 : i32 = GLF_live1i;
|
||
|
GLF_live1i = (x_121 + 1);
|
||
|
}
|
||
|
}
|
||
|
let x_123 : i32 = treeIndex_1;
|
||
|
param_12 = x_123;
|
||
|
param_13 = 12;
|
||
|
insert_i1_i1_(&(param_12), &(param_13));
|
||
|
let x_124 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_124 + 1);
|
||
|
let x_126 : i32 = treeIndex_1;
|
||
|
param_14 = x_126;
|
||
|
param_15 = 15;
|
||
|
insert_i1_i1_(&(param_14), &(param_15));
|
||
|
let x_127 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_127 + 1);
|
||
|
let x_129 : i32 = treeIndex_1;
|
||
|
param_16 = x_129;
|
||
|
param_17 = 7;
|
||
|
insert_i1_i1_(&(param_16), &(param_17));
|
||
|
let x_130 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_130 + 1);
|
||
|
let x_132 : i32 = treeIndex_1;
|
||
|
param_18 = x_132;
|
||
|
param_19 = 8;
|
||
|
insert_i1_i1_(&(param_18), &(param_19));
|
||
|
let x_133 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_133 + 1);
|
||
|
let x_135 : i32 = treeIndex_1;
|
||
|
param_20 = x_135;
|
||
|
param_21 = 2;
|
||
|
insert_i1_i1_(&(param_20), &(param_21));
|
||
|
let x_136 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_136 + 1);
|
||
|
let x_138 : i32 = treeIndex_1;
|
||
|
param_22 = x_138;
|
||
|
param_23 = 6;
|
||
|
insert_i1_i1_(&(param_22), &(param_23));
|
||
|
let x_139 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_139 + 1);
|
||
|
GLF_live4_looplimiter3 = 0;
|
||
|
GLF_live4i = 0;
|
||
|
loop {
|
||
|
if (true) {
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
let x_141 : i32 = GLF_live4_looplimiter3;
|
||
|
if ((x_141 >= 3)) {
|
||
|
break;
|
||
|
}
|
||
|
let x_142 : i32 = GLF_live4_looplimiter3;
|
||
|
GLF_live4_looplimiter3 = (x_142 + 1);
|
||
|
GLF_live4index = 1;
|
||
|
let x_144 : i32 = GLF_live4index;
|
||
|
let x_145 : i32 = GLF_live4index;
|
||
|
let x_146 : i32 = GLF_live4index;
|
||
|
let x_269 : f32 = GLF_live4obj.even_numbers[1];
|
||
|
GLF_live4obj.even_numbers[select(0, x_146, ((x_144 >= 0) && (x_145 < 10)))] = x_269;
|
||
|
let x_147 : i32 = GLF_live4i;
|
||
|
let x_148 : i32 = GLF_live4i;
|
||
|
let x_149 : i32 = GLF_live4i;
|
||
|
GLF_live4obj.even_numbers[select(0, x_149, ((x_147 >= 0) && (x_148 < 10)))] = 1.0;
|
||
|
|
||
|
continuing {
|
||
|
let x_150 : i32 = GLF_live4i;
|
||
|
GLF_live4i = (x_150 + 1);
|
||
|
}
|
||
|
}
|
||
|
let x_152 : i32 = treeIndex_1;
|
||
|
param_24 = x_152;
|
||
|
param_25 = 17;
|
||
|
insert_i1_i1_(&(param_24), &(param_25));
|
||
|
let x_278 : f32 = x_27.injectionSwitch.x;
|
||
|
let x_280 : f32 = x_27.injectionSwitch.y;
|
||
|
if ((x_278 > x_280)) {
|
||
|
return;
|
||
|
}
|
||
|
let x_153 : i32 = treeIndex_1;
|
||
|
treeIndex_1 = (x_153 + 1);
|
||
|
let x_155 : i32 = treeIndex_1;
|
||
|
param_26 = x_155;
|
||
|
param_27 = 13;
|
||
|
insert_i1_i1_(&(param_26), &(param_27));
|
||
|
let x_285 : vec4<f32> = gl_FragCoord;
|
||
|
z = (vec2<f32>(x_285.y, x_285.x) / vec2<f32>(256.0, 256.0));
|
||
|
let x_289 : f32 = z.x;
|
||
|
param_28 = x_289;
|
||
|
let x_290 : f32 = makeFrame_f1_(&(param_28));
|
||
|
x = x_290;
|
||
|
let x_292 : f32 = z.y;
|
||
|
param_29 = x_292;
|
||
|
let x_293 : f32 = makeFrame_f1_(&(param_29));
|
||
|
y = x_293;
|
||
|
sum = -100;
|
||
|
target_1 = 0;
|
||
|
loop {
|
||
|
let x_156 : i32 = target_1;
|
||
|
if ((x_156 < 20)) {
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
let x_157 : i32 = target_1;
|
||
|
param_30 = x_157;
|
||
|
let x_158 : i32 = search_i1_(&(param_30));
|
||
|
result = x_158;
|
||
|
let x_159 : i32 = result;
|
||
|
if ((x_159 > 0)) {
|
||
|
} else {
|
||
|
let x_160 : i32 = result;
|
||
|
switch(x_160) {
|
||
|
case 0: {
|
||
|
return;
|
||
|
}
|
||
|
case -1: {
|
||
|
let x_161 : i32 = sum;
|
||
|
sum = (x_161 + 1);
|
||
|
}
|
||
|
default: {
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
continuing {
|
||
|
let x_163 : i32 = target_1;
|
||
|
target_1 = (x_163 + 1);
|
||
|
}
|
||
|
}
|
||
|
let x_307 : f32 = x;
|
||
|
let x_308 : f32 = y;
|
||
|
let x_165 : i32 = sum;
|
||
|
a = (x_307 + (x_308 * f32(x_165)));
|
||
|
let x_313 : f32 = x_27.injectionSwitch.x;
|
||
|
let x_315 : f32 = x_27.injectionSwitch.y;
|
||
|
if ((x_313 < x_315)) {
|
||
|
x_235 = vec3<f32>(1.0, 0.0, 0.0);
|
||
|
} else {
|
||
|
let x_320 : f32 = a;
|
||
|
param_31 = x_320;
|
||
|
let x_321 : vec3<f32> = hueColor_f1_(&(param_31));
|
||
|
x_235 = x_321;
|
||
|
}
|
||
|
let x_322 : vec3<f32> = x_235;
|
||
|
x_GLF_color = vec4<f32>(x_322.x, x_322.y, x_322.z, 1.0);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
struct main_out {
|
||
|
[[location(0)]]
|
||
|
x_GLF_color_1 : vec4<f32>;
|
||
|
};
|
||
|
|
||
|
[[stage(fragment)]]
|
||
|
fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
|
||
|
gl_FragCoord = gl_FragCoord_param;
|
||
|
main_1();
|
||
|
return main_out(x_GLF_color);
|
||
|
}
|