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