mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2024-12-25 01:11:49 +01:00
6c05eebe65
update this first before adding splatoon caution: gpu taxing at high res, if get framerate drop, try replacing them with ones from lower res, bloom will appear smaller and brighter (concentrated) hope cemu will get more specific texture exclude so we don't have to upscale the blurs... any advice on optimization is appreciated
37 lines
1.8 KiB
Plaintext
37 lines
1.8 KiB
Plaintext
#version 420
|
|
#extension GL_ARB_texture_gather : enable
|
|
// shader 12d8627fe9906695 // vertical bloom 4320
|
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4240800 res 96x96x1 dim 1 tm: 4 format 0005 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
|
|
layout(location = 0) in vec4 passParameterSem0;
|
|
layout(location = 1) in vec4 passParameterSem1;
|
|
layout(location = 0) out vec4 passPixelColor0;
|
|
uniform vec2 uf_fragCoordScale;
|
|
|
|
float data = passParameterSem0.z - passParameterSem0.w;
|
|
float h = data / 1.38461538 * uf_fragCoordScale.y;
|
|
|
|
uniform float o_weight[] = float[]( 0.22702703, 0.31621622, 0.07027027 );
|
|
uniform float o_offset[] = float[]( 0.00000000, 1.38461538, 3.23076923 );
|
|
|
|
uniform float weight[] = float[]( 0.08679764, 0.16377778, 0.12975631, 0.08523885, 0.04634210, 0.02079453, 0.00767262, 0.00231673, 0.00056902, 0.00011284, 0.00001790, 0.00000225, 0.00000022, 0.00000002 );
|
|
uniform float offset[] = float[]( 0.00000000, 1.48235294, 3.45882353, 5.43529412, 7.41176471, 9.38823529, 11.36470588, 13.34117647, 15.31764706, 17.29411765, 19.27058824, 21.24705882, 23.22352941, 25.20000000 );
|
|
|
|
void main()
|
|
{
|
|
vec2 R0f = vec2(passParameterSem0.x, passParameterSem0.w);
|
|
|
|
vec4 R1f = texture( textureUnitPS0, R0f ) * weight[0];
|
|
for (int i=1; i<14; i++) {
|
|
R1f += texture( textureUnitPS0, R0f + vec2(0.0, offset[i]*h) ) * weight[i];
|
|
R1f += texture( textureUnitPS0, R0f - vec2(0.0, offset[i]*h) ) * weight[i];
|
|
}
|
|
|
|
vec4 R2f = texture( textureUnitPS0, R0f ) * o_weight[0];
|
|
for (int i=1; i<3; i++) {
|
|
R2f += texture( textureUnitPS0, R0f + vec2(0.0, o_offset[i]*h) ) * o_weight[i];
|
|
R2f += texture( textureUnitPS0, R0f - vec2(0.0, o_offset[i]*h) ) * o_weight[i];
|
|
}
|
|
|
|
passPixelColor0 = ( (uf_fragCoordScale.y == 1.0) ? R2f : R1f );
|
|
}
|