dawn-cmake/test/benchmark/bloom-vertical-blur.wgsl.ex...

68 lines
1.8 KiB
GLSL

#version 310 es
precision mediump float;
const vec2 bloomDir = vec2(0.0f, 1.0f);
float weights[3] = float[3](0.227027029f, 0.31621623f, 0.07027027f);
struct BloomUniforms {
float radius;
float dim;
};
layout (binding = 0) uniform BloomUniforms_1 {
float radius;
float dim;
} bloom;
uniform highp sampler2D bloomTexture;
struct FragmentInput {
vec2 texCoord;
};
vec4 getGaussianBlur(vec2 texCoord) {
vec2 texelRadius = (vec2(bloom.radius) / vec2(textureSize(bloomTexture, 0)));
vec2 tint_symbol = (bloomDir * texelRadius);
vec4 sum = vec4(0.0f);
sum = (sum + (texture(bloomTexture, texCoord) * weights[0]));
sum = (sum + (texture(bloomTexture, (texCoord + (tint_symbol * 1.0f))) * weights[1]));
sum = (sum + (texture(bloomTexture, (texCoord - (tint_symbol * 1.0f))) * weights[1]));
sum = (sum + (texture(bloomTexture, (texCoord + (tint_symbol * 2.0f))) * weights[2]));
sum = (sum + (texture(bloomTexture, (texCoord - (tint_symbol * 2.0f))) * weights[2]));
return vec4(sum.rgb, 1.0f);
}
uniform highp sampler2D prevTexture;
struct tint_symbol_3 {
vec2 texCoord;
};
struct tint_symbol_4 {
vec4 value;
};
vec4 fragmentMain_inner(FragmentInput tint_symbol_1) {
vec4 blurColor = getGaussianBlur(tint_symbol_1.texCoord);
vec4 dimColor = (texture(prevTexture, tint_symbol_1.texCoord) * bloom.dim);
return (blurColor + dimColor);
}
tint_symbol_4 fragmentMain(tint_symbol_3 tint_symbol_2) {
FragmentInput tint_symbol_5 = FragmentInput(tint_symbol_2.texCoord);
vec4 inner_result = fragmentMain_inner(tint_symbol_5);
tint_symbol_4 wrapper_result = tint_symbol_4(vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result.value = inner_result;
return wrapper_result;
}
in vec2 texCoord;
out vec4 value;
void main() {
tint_symbol_3 inputs;
inputs.texCoord = texCoord;
tint_symbol_4 outputs;
outputs = fragmentMain(inputs);
value = outputs.value;
}