Bug 314588
| Summary: | [WebGPU] iesna.eu/?wasm=skyglow_demo fails to compile shader | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Mike Wyrzykowski <mwyrzykowski> |
| Component: | WebGPU | Assignee: | Tadeu Zagallo <tzagallo> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | mwyrzykowski, tzagallo, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Mike Wyrzykowski
error = 1 error generated while compiling the shader:
159:45: Expected one of '(', a literal, or an identifier
I'm guessing we don't handle this trailing 'f':
sample = clamp(_e13, vec3(0.0001f), vec3(34028235000000000000000000000000000000f));
WGSL source follows:
---------------------------------------------------------------------
struct BloomUniforms {
threshold_precomputations: vec4<f32>,
viewport: vec4<f32>,
scale: vec2<f32>,
aspect: f32,
}
@group(0) @binding(0)
var input_texture: texture_2d<f32>;
@group(0) @binding(1)
var s: sampler;
@group(0) @binding(2)
var<uniform> uniforms: BloomUniforms;
fn soft_threshold(color: vec3<f32>) -> vec3<f32> {
var softness: f32;
var contribution: f32;
let brightness = max(color.x, max(color.y, color.z));
let _e9 = uniforms.threshold_precomputations.y;
softness = (brightness - _e9);
let _e12 = softness;
let _e16 = uniforms.threshold_precomputations.z;
softness = clamp(_e12, 0f, _e16);
let _e19 = softness;
let _e20 = softness;
let _e25 = uniforms.threshold_precomputations.w;
softness = ((_e19 * _e20) * _e25);
let _e30 = uniforms.threshold_precomputations.x;
let _e32 = softness;
contribution = max((brightness - _e30), _e32);
let _e37 = contribution;
contribution = (_e37 / max(brightness, 0.00001f));
let _e39 = contribution;
return (color * _e39);
}
fn tonemapping_luminance(v: vec3<f32>) -> f32 {
return dot(v, vec3<f32>(0.2126f, 0.7152f, 0.0722f));
}
fn karis_average(color_1: vec3<f32>) -> f32 {
let _e1 = tonemapping_luminance(color_1);
let luma = (_e1 / 4f);
return (1f / (1f + luma));
}
fn sample_input_13_tap(uv_2: vec2<f32>) -> vec3<f32> {
var group0_: vec3<f32>;
var group1_: vec3<f32>;
var group2_: vec3<f32>;
var group3_: vec3<f32>;
var group4_: vec3<f32>;
let _e6 = textureSample(input_texture, s, uv_2, vec2<i32>(-2i, 2i));
let a = _e6.xyz;
let _e13 = textureSample(input_texture, s, uv_2, vec2<i32>(0i, 2i));
let b = _e13.xyz;
let _e20 = textureSample(input_texture, s, uv_2, vec2<i32>(2i, 2i));
let c = _e20.xyz;
let _e27 = textureSample(input_texture, s, uv_2, vec2<i32>(-2i, 0i));
let d = _e27.xyz;
let _e31 = textureSample(input_texture, s, uv_2);
let e = _e31.xyz;
let _e38 = textureSample(input_texture, s, uv_2, vec2<i32>(2i, 0i));
let f = _e38.xyz;
let _e45 = textureSample(input_texture, s, uv_2, vec2<i32>(-2i, -2i));
let g = _e45.xyz;
let _e52 = textureSample(input_texture, s, uv_2, vec2<i32>(0i, -2i));
let h = _e52.xyz;
let _e59 = textureSample(input_texture, s, uv_2, vec2<i32>(2i, -2i));
let i = _e59.xyz;
let _e66 = textureSample(input_texture, s, uv_2, vec2<i32>(-1i, 1i));
let j = _e66.xyz;
let _e73 = textureSample(input_texture, s, uv_2, vec2<i32>(1i, 1i));
let k = _e73.xyz;
let _e80 = textureSample(input_texture, s, uv_2, vec2<i32>(-1i, -1i));
let l = _e80.xyz;
let _e87 = textureSample(input_texture, s, uv_2, vec2<i32>(1i, -1i));
let m = _e87.xyz;
group0_ = ((((a + b) + d) + e) * 0.03125f);
group1_ = ((((b + c) + e) + f) * 0.03125f);
group2_ = ((((d + e) + g) + h) * 0.03125f);
group3_ = ((((e + f) + h) + i) * 0.03125f);
group4_ = ((((j + k) + l) + m) * 0.125f);
let _e119 = group0_;
let _e120 = karis_average(_e119);
let _e121 = group0_;
group0_ = (_e121 * _e120);
let _e123 = group1_;
let _e124 = karis_average(_e123);
let _e125 = group1_;
group1_ = (_e125 * _e124);
let _e127 = group2_;
let _e128 = karis_average(_e127);
let _e129 = group2_;
group2_ = (_e129 * _e128);
let _e131 = group3_;
let _e132 = karis_average(_e131);
let _e133 = group3_;
group3_ = (_e133 * _e132);
let _e135 = group4_;
let _e136 = karis_average(_e135);
let _e137 = group4_;
group4_ = (_e137 * _e136);
let _e139 = group0_;
let _e140 = group1_;
let _e142 = group2_;
let _e144 = group3_;
let _e146 = group4_;
return ((((_e139 + _e140) + _e142) + _e144) + _e146);
}
fn sample_input_3x3_tent(uv_3: vec2<f32>) -> vec3<f32> {
var sample_1: vec3<f32>;
let _e2 = uniforms.scale;
let _e4 = textureDimensions(input_texture);
let frag_size = (_e2 / vec2<f32>(_e4));
let x = frag_size.x;
let y = frag_size.y;
let _e17 = textureSample(input_texture, s, vec2<f32>((uv_3.x - x), (uv_3.y + y)));
let a_1 = _e17.xyz;
let _e25 = textureSample(input_texture, s, vec2<f32>(uv_3.x, (uv_3.y + y)));
let b_1 = _e25.xyz;
let _e34 = textureSample(input_texture, s, vec2<f32>((uv_3.x + x), (uv_3.y + y)));
let c_1 = _e34.xyz;
let _e42 = textureSample(input_texture, s, vec2<f32>((uv_3.x - x), uv_3.y));
let d_1 = _e42.xyz;
let _e49 = textureSample(input_texture, s, vec2<f32>(uv_3.x, uv_3.y));
let e_1 = _e49.xyz;
let _e57 = textureSample(input_texture, s, vec2<f32>((uv_3.x + x), uv_3.y));
let f_1 = _e57.xyz;
let _e66 = textureSample(input_texture, s, vec2<f32>((uv_3.x - x), (uv_3.y - y)));
let g_1 = _e66.xyz;
let _e74 = textureSample(input_texture, s, vec2<f32>(uv_3.x, (uv_3.y - y)));
let h_1 = _e74.xyz;
let _e83 = textureSample(input_texture, s, vec2<f32>((uv_3.x + x), (uv_3.y - y)));
let i_1 = _e83.xyz;
sample_1 = (e_1 * 0.25f);
let _e93 = sample_1;
sample_1 = (_e93 + ((((b_1 + d_1) + f_1) + h_1) * 0.125f));
let _e100 = sample_1;
sample_1 = (_e100 + ((((a_1 + c_1) + g_1) + i_1) * 0.0625f));
let _e102 = sample_1;
return _e102;
}
@fragment
fn downsample_first(@location(0) output_uv: vec2<f32>) -> @location(0) vec4<f32> {
var sample: vec3<f32>;
let _e2 = uniforms.viewport;
let _e7 = uniforms.viewport;
let sample_uv = (_e2.xy + (output_uv * _e7.zw));
let _e11 = sample_input_13_tap(sample_uv);
sample = _e11;
let _e13 = sample;
sample = clamp(_e13, vec3(0.0001f), vec3(34028235000000000000000000000000000000f));
let _e19 = sample;
return vec4<f32>(_e19, 1f);
}
@fragment
fn downsample(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
let _e1 = sample_input_13_tap(uv);
return vec4<f32>(_e1, 1f);
}
@fragment
fn upsample(@location(0) uv_1: vec2<f32>) -> @location(0) vec4<f32> {
let _e1 = sample_input_3x3_tent(uv_1);
return vec4<f32>(_e1, 1f);
}
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/176827607>
Tadeu Zagallo
Pull request: https://github.com/WebKit/WebKit/pull/64768
EWS
Committed 313133@main (7f23f03e34b0): <https://commits.webkit.org/313133@main>
Reviewed commits have been landed. Closing PR #64768 and removing active labels.