Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LfmxBc2caqoNZRmM44vCgF
Mugen87
reviewed
Sep 6, 2026
| const wb = ( step === 2 && i + 1 < kernelSize ) ? gaussianCoefficients[ i + 1 ] : 0; | ||
|
|
||
| const x = float( ( i * wa + ( i + 1 ) * wb ) / ( wa + wb ) ); | ||
| const w = float( wa + wb ); |
Collaborator
There was a problem hiding this comment.
This looks good as in BloomNode but there is one behavior change:
If a user passes a nearest filtered texture to the blur node, the merged fetch snaps to one texel instead of blending two. This is not an issue in the bloom code because the blur operators only on internal render targets which never end up nearest filtered.
Blurring a nearest-filtered texture is a valid use case and it seems this PR would introduce a regression.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pairs of adjacent Gaussian taps are fetched once at their weighted offset, relying on the linear filtering of the render targets (the same linear-sampling trick
BloomNodealready uses). Taps per pass drop from2 * kernelSize - 1tokernelSize: 21 to 11 at the default sigma, 45 to 23 at sigma 10. The premultiplied alpha path keeps single taps, since the hardware lerp happens before the per-tap premultiplication.Measured on an M1 with GPU timestamps (blur passes only, contenders interleaved in one page):
pass()texture, 1080ppass()texture, 1080ppass()texture, 4Kpass()texture, 4KOutput is unchanged in exact arithmetic; on hardware the result differs by at most one 8-bit step on 0.6% of pixels (half-float: 1 to 2 ulp). The e2e screenshots for
webgpu_postprocessing_lensflare,webgpu_volume_lighting,webgpu_mrt_maskandwebgpu_shadow_contactpass with 0.0% diff.🤖 Generated with Claude Code
https://claude.ai/code/session_01LfmxBc2caqoNZRmM44vCgF