mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2024-12-23 16:31:50 +01:00
a3f25148b0
approximate circle point spread add one line to decide if it's in the radius no more squarish no more workaround
38 lines
1.2 KiB
Plaintext
38 lines
1.2 KiB
Plaintext
#version 420
|
|
#extension GL_ARB_texture_gather : enable
|
|
// shader cb0e6e8cbec4502a
|
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf5c7b800 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
|
|
layout(location = 0) in vec4 passParameterSem3;
|
|
layout(location = 0) out vec4 passPixelColor0;
|
|
uniform vec2 uf_fragCoordScale;
|
|
int clampFI32(int v)
|
|
{
|
|
if( v == 0x7FFFFFFF )
|
|
return floatBitsToInt(1.0);
|
|
else if( v == 0xFFFFFFFF )
|
|
return floatBitsToInt(0.0);
|
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
|
}
|
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
|
|
|
|
|
void main()
|
|
{
|
|
vec2 R0f = vec2((passParameterSem3.x + passParameterSem3.z)/2, (passParameterSem3.y+passParameterSem3.w)/2); //center point
|
|
ivec2 ires = textureSize(textureUnitPS0,0);
|
|
vec2 res = vec2( float(ires.x), float(ires.y) );
|
|
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
|
|
vec4 R1f = vec4(0.0);
|
|
float count = 0.0;
|
|
for( int x=-r; x<=r; x++ ) {
|
|
for( int y=-r; y<=r; y++ ) {
|
|
if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
|
|
R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
|
|
count += 1.0;
|
|
}
|
|
}
|
|
}
|
|
passPixelColor0 = R1f/count;
|
|
}
|
|
|