• 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// specialization
6
7// includes
8#include "render/shaders/common/render_compatibility_common.h"
9#include "render/shaders/common/render_blur_common.h"
10#include "render/shaders/common/render_post_process_structs_common.h"
11
12// sets
13
14layout(set = 0, binding = 0) uniform sampler uSampler;
15layout(set = 0, binding = 1) uniform texture2D uTex;
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
30void main(void)
31{
32    if (CORE_POST_PROCESS_FLAGS == CORE_BLUR_TYPE_R) {
33        outColor.r =
34            GaussianBlurR(uTex, uSampler, gl_FragCoord.xy, inUv.xy, uPc.factor.xy, uPc.viewportSizeInvSize.zw).r;
35    } else if (CORE_POST_PROCESS_FLAGS == CORE_BLUR_TYPE_RG) {
36        outColor.rg =
37            GaussianBlurRG(uTex, uSampler, gl_FragCoord.xy, inUv.xy, uPc.factor.xy, uPc.viewportSizeInvSize.zw).rg;
38    } else if (CORE_POST_PROCESS_FLAGS == CORE_BLUR_TYPE_RGB) {
39        outColor.rgb =
40            GaussianBlurRGB(uTex, uSampler, gl_FragCoord.xy, inUv.xy, uPc.factor.xy, uPc.viewportSizeInvSize.zw).rgb;
41    } else if (CORE_POST_PROCESS_FLAGS == CORE_BLUR_TYPE_A) {
42        outColor.r =
43            GaussianBlurA(uTex, uSampler, gl_FragCoord.xy, inUv.xy, uPc.factor.xy, uPc.viewportSizeInvSize.zw).r;
44    } else if (CORE_POST_PROCESS_FLAGS == CORE_BLUR_TYPE_SOFT_DOWNSCALE_RGB) {
45        // dir not used
46        outColor.rgb =
47            SoftDownscaleRGB(uTex, uSampler, gl_FragCoord.xy, inUv.xy, uPc.factor.xy, uPc.viewportSizeInvSize.zw).rgb;
48    } else if (CORE_POST_PROCESS_FLAGS == CORE_BLUR_TYPE_DOWNSCALE_RGBA) {
49        // dir not used
50        outColor.rgba =
51            DownscaleRGBA(uTex, uSampler, gl_FragCoord.xy, inUv.xy, uPc.factor.xy, uPc.viewportSizeInvSize.zw).rgba;
52    } else if (CORE_POST_PROCESS_FLAGS == CORE_BLUR_TYPE_DOWNSCALE_RGBA_DOF) {
53        // dir not used
54        outColor.rgba =
55            DownscaleRGBADof(uTex, uSampler, gl_FragCoord.xy, inUv.xy, uPc.factor.xy, uPc.viewportSizeInvSize.zw).rgba;
56    } else if (CORE_POST_PROCESS_FLAGS == CORE_BLUR_TYPE_RGBA) {
57        outColor.rgba =
58            GaussianBlurRGBA(uTex, uSampler, gl_FragCoord.xy, inUv.xy, uPc.factor.xy, uPc.viewportSizeInvSize.zw).rgba;
59    } else if (CORE_POST_PROCESS_FLAGS == CORE_BLUR_TYPE_RGBA_DOF) {
60        // dir not used
61        outColor.rgba =
62            DownscaleRGBADof(uTex, uSampler, gl_FragCoord.xy, inUv.xy, uPc.factor.xy, uPc.viewportSizeInvSize.zw).rgba;
63    }
64}
65