• 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 texture2D uInputColor;
15layout(set = 0, binding = 2) uniform sampler uSampler;
16
17layout(push_constant, std430) uniform uPostProcessPushConstant
18{
19    LocalPostProcessPushConstantStruct uPc;
20};
21
22layout(constant_id = 0) const uint CORE_POST_PROCESS_FLAGS = 0;
23
24// in / out
25
26layout(location = 0) in vec2 inUv;
27
28layout(location = 0) out vec4 outColor;
29
30///////////////////////////////////////////////////////////////////////////////
31// bloom upscale
32
33void main()
34{
35    const vec2 uv = inUv;
36    vec3 color = vec3(0.0f);
37    if (uPc.factor.x == CORE_BLOOM_TYPE_NORMAL) {
38        color = BloomUpscale(uv, uPc.viewportSizeInvSize.zw, uTex, uSampler);
39    } else if (uPc.factor.x == CORE_BLOOM_TYPE_HORIZONTAL) {
40        color = BloomUpscaleHorizontal(uv, uPc.viewportSizeInvSize.zw, uTex, uSampler);
41    } else if (uPc.factor.x == CORE_BLOOM_TYPE_VERTICAL) {
42        color = BloomDownScaleVertical(uv, uPc.viewportSizeInvSize.zw, uTex, uSampler);
43    }
44    const vec3 baseColor = textureLod(sampler2D(uInputColor, uSampler), uv, 0).xyz;
45    const float scatter = uPc.factor.w;
46    color = min((baseColor + color * scatter), CORE_BLOOM_CLAMP_MAX_VALUE);
47
48    outColor = vec4(color, 1.0);
49}
50