WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
314588
[WebGPU] iesna.eu/?wasm=skyglow_demo fails to compile shader
https://bugs.webkit.org/show_bug.cgi?id=314588
Summary
[WebGPU] iesna.eu/?wasm=skyglow_demo fails to compile shader
Mike Wyrzykowski
Reported
2026-05-11 15:32:36 PDT
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
Comment 1
2026-05-11 15:32:42 PDT
<
rdar://problem/176827607
>
Tadeu Zagallo
Comment 2
2026-05-12 10:48:49 PDT
Pull request:
https://github.com/WebKit/WebKit/pull/64768
EWS
Comment 3
2026-05-12 23:01:18 PDT
Committed
313133@main
(7f23f03e34b0): <
https://commits.webkit.org/313133@main
> Reviewed commits have been landed. Closing PR #64768 and removing active labels.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug