dawn-cmake/test/tint/benchmark/bloom-vertical-blur.wgsl
Ryan Harrison dbc13af287 tint->dawn: Shuffle source tree in preperation of merging repos
docs/    -> docs/tint/
fuzzers/ -> src/tint/fuzzers/
samples/ -> src/tint/cmd/
src/     -> src/tint/
test/    -> test/tint/

BUG=tint:1418,tint:1433

Change-Id: Id2aa79f989aef3245b80ef4aa37a27ff16cd700b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/80482
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2022-02-21 15:19:07 +00:00

43 lines
1.5 KiB
WebGPU Shading Language

let bloomDir = vec2(0.0, 1.0);
var<private> offsets : array<f32, 3> = array<f32, 3>(0.0, 1.384615421, 3.230769157);
var<private> weights : array<f32, 3> = array<f32, 3>(0.227027029, 0.31621623, 0.07027027);
struct BloomUniforms {
radius : f32;
dim : f32;
}
@group(0) @binding(0) var<uniform> bloom : BloomUniforms;
@group(0) @binding(1) var bloomTexture : texture_2d<f32>;
@group(0) @binding(2) var bloomSampler : sampler;
struct FragmentInput {
@location(0)
texCoord : vec2<f32>;
}
fn getGaussianBlur(texCoord : vec2<f32>) -> vec4<f32> {
let texelRadius = (vec2(bloom.radius) / vec2<f32>(textureDimensions(bloomTexture)));
let step = (bloomDir * texelRadius);
var sum = vec4(0.0);
sum = (sum + (textureSample(bloomTexture, bloomSampler, texCoord) * weights[0]));
sum = (sum + (textureSample(bloomTexture, bloomSampler, (texCoord + (step * 1.0))) * weights[1]));
sum = (sum + (textureSample(bloomTexture, bloomSampler, (texCoord - (step * 1.0))) * weights[1]));
sum = (sum + (textureSample(bloomTexture, bloomSampler, (texCoord + (step * 2.0))) * weights[2]));
sum = (sum + (textureSample(bloomTexture, bloomSampler, (texCoord - (step * 2.0))) * weights[2]));
return vec4(sum.rgb, 1.0);
}
@group(0) @binding(3) var prevTexture : texture_2d<f32>;
@stage(fragment)
fn fragmentMain(input : FragmentInput) -> @location(0) vec4<f32> {
let blurColor = getGaussianBlur(input.texCoord);
let dimColor = (textureSample(prevTexture, bloomSampler, input.texCoord) * bloom.dim);
return (blurColor + dimColor);
}