• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "render/shaders/common/render_post_process_structs_common.h"
8
9#include "common/bloom_common.h"
10
11// sets
12
13layout(set = 0, binding = 0) uniform texture2D uTex;
14layout(set = 0, binding = 1) uniform sampler uSampler;
15
16layout(push_constant, std430) uniform uPostProcessPushConstant
17{
18    LocalPostProcessPushConstantStruct uPc;
19};
20
21layout(constant_id = 0) const uint CORE_POST_PROCESS_FLAGS = 0;
22
23// in / out
24
25layout (location = 0) in vec2 inUv;
26
27layout (location = 0) out vec4 outColor;
28
29///////////////////////////////////////////////////////////////////////////////
30// bloom downscale
31
32void main()
33{
34    // texSizeInvTexSize needs to be the output resolution
35    const vec2 uv = inUv;
36
37    vec3 color = vec3(0.0);
38    if (uPc.factor.x == CORE_BLOOM_TYPE_NORMAL) {
39        if ((CORE_BLOOM_QUALITY_NORMAL & CORE_POST_PROCESS_FLAGS) == CORE_BLOOM_QUALITY_NORMAL) {
40            color = BloomDownscale9(uv, uPc.viewportSizeInvSize.zw, uTex, uSampler);
41        } else {
42            color = BloomDownscale(uv, uPc.viewportSizeInvSize.zw, uTex, uSampler);
43        }
44    } else if (uPc.factor.x == CORE_BLOOM_TYPE_HORIZONTAL) {
45        color = BloomDownScaleHorizontal(uv, uPc.viewportSizeInvSize.zw, uTex, uSampler);
46    } else if (uPc.factor.x == CORE_BLOOM_TYPE_VERTICAL) {
47        color = BloomDownScaleVertical(uv, uPc.viewportSizeInvSize.zw, uTex, uSampler);
48    }
49
50    outColor = vec4(min(color, CORE_BLOOM_CLAMP_MAX_VALUE), 1.0);
51}
52