Bug 314588

Summary: [WebGPU] iesna.eu/?wasm=skyglow_demo fails to compile shader
Product: WebKit Reporter: Mike Wyrzykowski <mwyrzykowski>
Component: WebGPUAssignee: 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
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
Radar WebKit Bug Importer
Comment 1 2026-05-11 15:32:42 PDT
Tadeu Zagallo
Comment 2 2026-05-12 10:48:49 PDT
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.