1#version 460 core
2#extension GL_ARB_separate_shader_objects : enable
3#extension GL_ARB_shading_language_420pack : enable
4
5// includes
6
7#include "common/bloom_common.h"
8
9// sets
10
11#include "render/shaders/common/render_post_process_layout_common.h"
12
13layout(set = 1, binding = 0) uniform texture2D uTex;
14layout(set = 1, binding = 1) uniform sampler uSampler;
15
16// in / out
17
18layout (location = 0) in vec2 inUv;
19
20layout (location = 0) out vec4 outColor;
21
22///////////////////////////////////////////////////////////////////////////////
23// bloom downscale
24
25void main()
26{
27    // texSizeInvTexSize needs to be the output resolution
28    const vec2 uv = inUv;
29
30    vec3 color = vec3(0.0);
31    if ((CORE_BLOOM_QUALITY_NORMAL & CORE_POST_PROCESS_FLAGS) == CORE_BLOOM_QUALITY_NORMAL) {
32        color = bloomDownscale9(uv, uPc.viewportSizeInvSize.zw, uTex, uSampler);
33    } else {
34        color = bloomDownscale(uv, uPc.viewportSizeInvSize.zw, uTex, uSampler);
35    }
36
37    outColor = vec4(min(color, CORE_BLOOM_CLAMP_MAX_VALUE), 1.0);
38}
39