Jarvis, Optimise my shit
This commit is contained in:
parent
d1abde919d
commit
9424b29d0a
50 changed files with 1469 additions and 1232 deletions
|
|
@ -1,61 +1,30 @@
|
|||
#version 450
|
||||
|
||||
layout(location = 0) out vec4 FragColor;
|
||||
|
||||
layout(location = 0) in vec2 TexCoords;
|
||||
layout(set = 0, binding = 0) uniform sampler2D bloomImage;
|
||||
|
||||
layout(set = 0, binding = 0) uniform sampler2D image;
|
||||
layout(set = 0, binding = 1) uniform sampler2D bloomImage;
|
||||
layout(set = 1 , binding = 0) uniform PassConfig{
|
||||
int ApplyToFinalImage;
|
||||
layout(push_constant) uniform PassConfig {
|
||||
int horizontal;
|
||||
float GAMMA_CONST;
|
||||
float Exposure;
|
||||
float blur_radius;
|
||||
vec3 padding;
|
||||
vec2 bloomSize;
|
||||
} config;
|
||||
|
||||
const float weight[5] = float[](0.227027, 0.1945946, 0.1216216, 0.054054, 0.016216);
|
||||
|
||||
|
||||
const float weight[5] = float[] (0.227027, 0.1945946, 0.1216216, 0.054054, 0.016216);
|
||||
|
||||
vec3 safeBloomSample(vec2 uv)
|
||||
{
|
||||
vec3 value = texture(bloomImage, uv).rgb;
|
||||
return clamp(value, vec3(0.0), vec3(8.0));
|
||||
vec3 safeBloomSample(vec2 uv) {
|
||||
return max(texture(bloomImage, uv).rgb, vec3(0.0));
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
if(config.ApplyToFinalImage != 0){
|
||||
vec3 bloomColour = safeBloomSample(TexCoords);
|
||||
vec3 hdrColour = texture(image, TexCoords).rgb;
|
||||
hdrColour += bloomColour;
|
||||
vec3 result = vec3(1.0) - exp(-hdrColour * config.Exposure);
|
||||
result = pow(result, vec3(1.0 / config.GAMMA_CONST));
|
||||
FragColor = vec4(result, 1.0);
|
||||
return;
|
||||
}
|
||||
|
||||
float blurRadius = config.blur_radius;
|
||||
vec2 tex_offset = blurRadius / vec2(textureSize(bloomImage, 0));
|
||||
void main() {
|
||||
vec2 tex_offset = config.blur_radius / vec2(textureSize(bloomImage, 0));
|
||||
vec2 direction = config.horizontal != 0 ? vec2(tex_offset.x, 0.0) : vec2(0.0, tex_offset.y);
|
||||
vec3 result = safeBloomSample(TexCoords) * weight[0];
|
||||
|
||||
if(config.horizontal != 0)
|
||||
{
|
||||
for(int i = 1; i < 5; ++i)
|
||||
{
|
||||
result += safeBloomSample(TexCoords + vec2(tex_offset.x * i, 0.0)) * weight[i];
|
||||
result += safeBloomSample(TexCoords - vec2(tex_offset.x * i, 0.0)) * weight[i];
|
||||
}
|
||||
for (int i = 1; i < 5; i++) {
|
||||
result += safeBloomSample(TexCoords + direction * i) * weight[i];
|
||||
result += safeBloomSample(TexCoords - direction * i) * weight[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int i = 1; i < 5; ++i)
|
||||
{
|
||||
result += safeBloomSample(TexCoords + vec2(0.0, tex_offset.y * i)) * weight[i];
|
||||
result += safeBloomSample(TexCoords - vec2(0.0, tex_offset.y * i)) * weight[i];
|
||||
}
|
||||
}
|
||||
|
||||
FragColor = vec4(result, 1.0);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue