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