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

229 lines
7.3 KiB
WebGPU Shading Language

struct LeftOver {
time : f32,
@size(12)
padding : u32,
worldViewProjection : mat4x4<f32>,
outputSize : vec2<f32>,
stageSize : vec2<f32>,
spriteMapSize : vec2<f32>,
stageScale : f32,
spriteCount : f32,
colorMul : vec3<f32>,
};
@group(2) @binding(9) var<uniform> x_20 : LeftOver;
@group(2) @binding(3) var frameMapTexture : texture_2d<f32>;
@group(2) @binding(2) var frameMapSampler : sampler;
var<private> tUV : vec2<f32>;
@group(2) @binding(5) var tileMapsTexture0 : texture_2d<f32>;
@group(2) @binding(4) var tileMapsSampler : sampler;
@group(2) @binding(6) var tileMapsTexture1 : texture_2d<f32>;
@group(2) @binding(8) var animationMapTexture : texture_2d<f32>;
@group(2) @binding(7) var animationMapSampler : sampler;
var<private> mt : f32;
@group(2) @binding(1) var spriteSheetTexture : texture_2d<f32>;
@group(2) @binding(0) var spriteSheetSampler : sampler;
var<private> glFragColor : vec4<f32>;
var<private> tileID_1 : vec2<f32>;
var<private> levelUnits : vec2<f32>;
var<private> stageUnits_1 : vec2<f32>;
var<private> vPosition : vec3<f32>;
var<private> vUV : vec2<f32>;
fn getFrameData_f1_(frameID : ptr<function, f32>) -> mat4x4<f32> {
var fX : f32;
let x_15 : f32 = *(frameID);
let x_25 : f32 = x_20.spriteCount;
fX = (x_15 / x_25);
let x_37 : f32 = fX;
let x_40 : vec4<f32> = textureSampleBias(frameMapTexture, frameMapSampler, vec2<f32>(x_37, 0.0), 0.0);
let x_44 : f32 = fX;
let x_47 : vec4<f32> = textureSampleBias(frameMapTexture, frameMapSampler, vec2<f32>(x_44, 0.25), 0.0);
let x_51 : f32 = fX;
let x_54 : vec4<f32> = textureSampleBias(frameMapTexture, frameMapSampler, vec2<f32>(x_51, 0.5), 0.0);
return mat4x4<f32>(vec4<f32>(x_40.x, x_40.y, x_40.z, x_40.w), vec4<f32>(x_47.x, x_47.y, x_47.z, x_47.w), vec4<f32>(x_54.x, x_54.y, x_54.z, x_54.w), vec4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0).x, vec4<f32>(0.0, 0.0, 0.0, 0.0).y, vec4<f32>(0.0, 0.0, 0.0, 0.0).z, vec4<f32>(0.0, 0.0, 0.0, 0.0).w));
}
fn main_1() {
var color : vec4<f32>;
var tileUV : vec2<f32>;
var tileID : vec2<f32>;
var sheetUnits : vec2<f32>;
var spriteUnits : f32;
var stageUnits : vec2<f32>;
var i : i32;
var frameID_1 : f32;
var animationData : vec4<f32>;
var f : f32;
var frameData : mat4x4<f32>;
var param : f32;
var frameSize : vec2<f32>;
var offset_1 : vec2<f32>;
var ratio : vec2<f32>;
var nc : vec4<f32>;
var alpha : f32;
var mixed : vec3<f32>;
color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
let x_86 : vec2<f32> = tUV;
tileUV = fract(x_86);
let x_91 : f32 = tileUV.y;
tileUV.y = (1.0 - x_91);
let x_95 : vec2<f32> = tUV;
tileID = floor(x_95);
let x_101 : vec2<f32> = x_20.spriteMapSize;
sheetUnits = (vec2<f32>(1.0, 1.0) / x_101);
let x_106 : f32 = x_20.spriteCount;
spriteUnits = (1.0 / x_106);
let x_111 : vec2<f32> = x_20.stageSize;
stageUnits = (vec2<f32>(1.0, 1.0) / x_111);
i = 0;
loop {
let x_122 : i32 = i;
if ((x_122 < 2)) {
} else {
break;
}
let x_126 : i32 = i;
switch(x_126) {
case 1: {
let x_150 : vec2<f32> = tileID;
let x_154 : vec2<f32> = x_20.stageSize;
let x_156 : vec4<f32> = textureSampleBias(tileMapsTexture1, tileMapsSampler, ((x_150 + vec2<f32>(0.5, 0.5)) / x_154), 0.0);
frameID_1 = x_156.x;
}
case 0: {
let x_136 : vec2<f32> = tileID;
let x_140 : vec2<f32> = x_20.stageSize;
let x_142 : vec4<f32> = textureSampleBias(tileMapsTexture0, tileMapsSampler, ((x_136 + vec2<f32>(0.5, 0.5)) / x_140), 0.0);
frameID_1 = x_142.x;
}
default: {
}
}
let x_166 : f32 = frameID_1;
let x_169 : f32 = x_20.spriteCount;
let x_172 : vec4<f32> = textureSampleBias(animationMapTexture, animationMapSampler, vec2<f32>(((x_166 + 0.5) / x_169), 0.0), 0.0);
animationData = x_172;
let x_174 : f32 = animationData.y;
if ((x_174 > 0.0)) {
let x_181 : f32 = x_20.time;
let x_184 : f32 = animationData.z;
mt = ((x_181 * x_184) % 1.0);
f = 0.0;
loop {
let x_193 : f32 = f;
if ((x_193 < 8.0)) {
} else {
break;
}
let x_197 : f32 = animationData.y;
let x_198 : f32 = mt;
if ((x_197 > x_198)) {
let x_203 : f32 = animationData.x;
frameID_1 = x_203;
break;
}
let x_208 : f32 = frameID_1;
let x_211 : f32 = x_20.spriteCount;
let x_214 : f32 = f;
let x_217 : vec4<f32> = textureSampleBias(animationMapTexture, animationMapSampler, vec2<f32>(((x_208 + 0.5) / x_211), (0.125 * x_214)), 0.0);
animationData = x_217;
continuing {
let x_218 : f32 = f;
f = (x_218 + 1.0);
}
}
}
let x_222 : f32 = frameID_1;
param = (x_222 + 0.5);
let x_225 : mat4x4<f32> = getFrameData_f1_(&(param));
frameData = x_225;
let x_228 : vec4<f32> = frameData[0];
let x_231 : vec2<f32> = x_20.spriteMapSize;
frameSize = (vec2<f32>(x_228.w, x_228.z) / x_231);
let x_235 : vec4<f32> = frameData[0];
let x_237 : vec2<f32> = sheetUnits;
offset_1 = (vec2<f32>(x_235.x, x_235.y) * x_237);
let x_241 : vec4<f32> = frameData[2];
let x_244 : vec4<f32> = frameData[0];
ratio = (vec2<f32>(x_241.x, x_241.y) / vec2<f32>(x_244.w, x_244.z));
let x_248 : f32 = frameData[2].z;
if ((x_248 == 1.0)) {
let x_252 : vec2<f32> = tileUV;
tileUV = vec2<f32>(x_252.y, x_252.x);
}
let x_254 : i32 = i;
if ((x_254 == 0)) {
let x_263 : vec2<f32> = tileUV;
let x_264 : vec2<f32> = frameSize;
let x_266 : vec2<f32> = offset_1;
let x_268 : vec4<f32> = textureSample(spriteSheetTexture, spriteSheetSampler, ((x_263 * x_264) + x_266));
color = x_268;
} else {
let x_274 : vec2<f32> = tileUV;
let x_275 : vec2<f32> = frameSize;
let x_277 : vec2<f32> = offset_1;
let x_279 : vec4<f32> = textureSample(spriteSheetTexture, spriteSheetSampler, ((x_274 * x_275) + x_277));
nc = x_279;
let x_283 : f32 = color.w;
let x_285 : f32 = nc.w;
alpha = min((x_283 + x_285), 1.0);
let x_290 : vec4<f32> = color;
let x_292 : vec4<f32> = nc;
let x_295 : f32 = nc.w;
mixed = mix(vec3<f32>(x_290.x, x_290.y, x_290.z), vec3<f32>(x_292.x, x_292.y, x_292.z), vec3<f32>(x_295, x_295, x_295));
let x_298 : vec3<f32> = mixed;
let x_299 : f32 = alpha;
color = vec4<f32>(x_298.x, x_298.y, x_298.z, x_299);
}
continuing {
let x_304 : i32 = i;
i = (x_304 + 1);
}
}
let x_310 : vec3<f32> = x_20.colorMul;
let x_311 : vec4<f32> = color;
let x_313 : vec3<f32> = (vec3<f32>(x_311.x, x_311.y, x_311.z) * x_310);
let x_314 : vec4<f32> = color;
color = vec4<f32>(x_313.x, x_313.y, x_313.z, x_314.w);
let x_318 : vec4<f32> = color;
glFragColor = x_318;
return;
}
struct main_out {
@location(0)
glFragColor_1 : vec4<f32>,
};
@fragment
fn main(@location(2) tUV_param : vec2<f32>, @location(5) tileID_1_param : vec2<f32>, @location(4) levelUnits_param : vec2<f32>, @location(3) stageUnits_1_param : vec2<f32>, @location(0) vPosition_param : vec3<f32>, @location(1) vUV_param : vec2<f32>) -> main_out {
tUV = tUV_param;
tileID_1 = tileID_1_param;
levelUnits = levelUnits_param;
stageUnits_1 = stageUnits_1_param;
vPosition = vPosition_param;
vUV = vUV_param;
main_1();
return main_out(glFragColor);
}