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 "common/bloom_common.h" 8 9// sets 10 11#include "render/shaders/common/render_post_process_layout_common.h" 12 13layout(set = 1, binding = 0) uniform texture2D uTex; 14layout(set = 1, binding = 1) uniform texture2D uTexBloom; 15layout(set = 1, binding = 2) uniform sampler uSampler; 16 17// in / out 18 19layout (location = 0) in vec2 inUv; 20 21layout (location = 0) out vec4 outColor; 22 23/////////////////////////////////////////////////////////////////////////////// 24// bloom combine 25// bloom parameters: 26// .x is thresholdHard, .y is thresholdSoft, .z is amountCoefficient, .w is dirtMaskCoefficient 27 28void main() 29{ 30 const vec2 uv = inUv; 31 const vec3 baseColor = textureLod(sampler2D(uTex, uSampler), uv, 0).xyz; 32 // NOTE: more samples (lower resolution) 33 const vec3 bloomColor = textureLod(sampler2D(uTexBloom, uSampler), uv, 0).xyz; 34 35 vec3 finalColor = min(bloomCombine(baseColor, bloomColor, uPc.factor), CORE_BLOOM_CLAMP_MAX_VALUE); 36 outColor = vec4(finalColor, 1.0); 37} 38