This commit is contained in:
Michael 2017-10-01 20:49:03 -07:00
commit bcb9454a89
10 changed files with 90 additions and 100 deletions

View File

@ -23,16 +23,15 @@ ivec2 ires = textureSize(textureUnitPS0,0);
vec2 res = vec2( float(ires.x), float(ires.y) ); vec2 res = vec2( float(ires.x), float(ires.y) );
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5)); int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
vec4 R1f = vec4(0.0); vec4 R1f = vec4(0.0);
for (int i=0; i<r; i++) { float count = 0.0;
float m = (1-r)/2 + float(i); for( int x=-r; x<=r; x++ ) {
for (int k=0; k<r; k++){ for( int y=-r; y<=r; y++ ) {
float n = (1-r)/2 + float(k); if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
R1f += texture( textureUnitPS0, R0f+ vec2(m,n) * 2.0 /res )/(pow(r,2)-4); //assume 2px offset as well R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
count += 1.0;
} }
} }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4); }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); passPixelColor0 = R1f/count;
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4);
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); //workaround, less like a square, needs proper bokeh
passPixelColor0 = R1f;
} }

View File

@ -23,16 +23,15 @@ ivec2 ires = textureSize(textureUnitPS0,0);
vec2 res = vec2( float(ires.x), float(ires.y) ); vec2 res = vec2( float(ires.x), float(ires.y) );
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5)); int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
vec4 R1f = vec4(0.0); vec4 R1f = vec4(0.0);
for (int i=0; i<r; i++) { float count = 0.0;
float m = (1-r)/2 + float(i); for( int x=-r; x<=r; x++ ) {
for (int k=0; k<r; k++){ for( int y=-r; y<=r; y++ ) {
float n = (1-r)/2 + float(k); if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
R1f += texture( textureUnitPS0, R0f+ vec2(m,n) * 2.0 /res )/(pow(r,2)-4); //assume 2px offset as well R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
count += 1.0;
} }
} }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4); }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); passPixelColor0 = R1f/count;
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4);
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); //workaround, less like a square, needs proper bokeh
passPixelColor0 = R1f;
} }

View File

@ -23,16 +23,15 @@ ivec2 ires = textureSize(textureUnitPS0,0);
vec2 res = vec2( float(ires.x), float(ires.y) ); vec2 res = vec2( float(ires.x), float(ires.y) );
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5)); int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
vec4 R1f = vec4(0.0); vec4 R1f = vec4(0.0);
for (int i=0; i<r; i++) { float count = 0.0;
float m = (1-r)/2 + float(i); for( int x=-r; x<=r; x++ ) {
for (int k=0; k<r; k++){ for( int y=-r; y<=r; y++ ) {
float n = (1-r)/2 + float(k); if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
R1f += texture( textureUnitPS0, R0f+ vec2(m,n) * 2.0 /res )/(pow(r,2)-4); //assume 2px offset as well R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
count += 1.0;
} }
} }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4); }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); passPixelColor0 = R1f/count;
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4);
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); //workaround, less like a square, needs proper bokeh
passPixelColor0 = R1f;
} }

View File

@ -23,16 +23,15 @@ ivec2 ires = textureSize(textureUnitPS0,0);
vec2 res = vec2( float(ires.x), float(ires.y) ); vec2 res = vec2( float(ires.x), float(ires.y) );
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5)); int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
vec4 R1f = vec4(0.0); vec4 R1f = vec4(0.0);
for (int i=0; i<r; i++) { float count = 0.0;
float m = (1-r)/2 + float(i); for( int x=-r; x<=r; x++ ) {
for (int k=0; k<r; k++){ for( int y=-r; y<=r; y++ ) {
float n = (1-r)/2 + float(k); if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
R1f += texture( textureUnitPS0, R0f+ vec2(m,n) * 2.0 /res )/(pow(r,2)-4); //assume 2px offset as well R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
count += 1.0;
} }
} }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4); }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); passPixelColor0 = R1f/count;
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4);
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); //workaround, less like a square, needs proper bokeh
passPixelColor0 = R1f;
} }

View File

@ -23,16 +23,15 @@ ivec2 ires = textureSize(textureUnitPS0,0);
vec2 res = vec2( float(ires.x), float(ires.y) ); vec2 res = vec2( float(ires.x), float(ires.y) );
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5)); int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
vec4 R1f = vec4(0.0); vec4 R1f = vec4(0.0);
for (int i=0; i<r; i++) { float count = 0.0;
float m = (1-r)/2 + float(i); for( int x=-r; x<=r; x++ ) {
for (int k=0; k<r; k++){ for( int y=-r; y<=r; y++ ) {
float n = (1-r)/2 + float(k); if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
R1f += texture( textureUnitPS0, R0f+ vec2(m,n) * 2.0 /res )/(pow(r,2)-4); //assume 2px offset as well R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
count += 1.0;
} }
} }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4); }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); passPixelColor0 = R1f/count;
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4);
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); //workaround, less like a square, needs proper bokeh
passPixelColor0 = R1f;
} }

View File

@ -23,16 +23,15 @@ ivec2 ires = textureSize(textureUnitPS0,0);
vec2 res = vec2( float(ires.x), float(ires.y) ); vec2 res = vec2( float(ires.x), float(ires.y) );
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5)); int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
vec4 R1f = vec4(0.0); vec4 R1f = vec4(0.0);
for (int i=0; i<r; i++) { float count = 0.0;
float m = (1-r)/2 + float(i); for( int x=-r; x<=r; x++ ) {
for (int k=0; k<r; k++){ for( int y=-r; y<=r; y++ ) {
float n = (1-r)/2 + float(k); if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
R1f += texture( textureUnitPS0, R0f+ vec2(m,n) * 2.0 /res )/(pow(r,2)-4); //assume 2px offset as well R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
count += 1.0;
} }
} }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4); }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); passPixelColor0 = R1f/count;
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4);
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); //workaround, less like a square, needs proper bokeh
passPixelColor0 = R1f;
} }

View File

@ -23,16 +23,15 @@ ivec2 ires = textureSize(textureUnitPS0,0);
vec2 res = vec2( float(ires.x), float(ires.y) ); vec2 res = vec2( float(ires.x), float(ires.y) );
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5)); int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
vec4 R1f = vec4(0.0); vec4 R1f = vec4(0.0);
for (int i=0; i<r; i++) { float count = 0.0;
float m = (1-r)/2 + float(i); for( int x=-r; x<=r; x++ ) {
for (int k=0; k<r; k++){ for( int y=-r; y<=r; y++ ) {
float n = (1-r)/2 + float(k); if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
R1f += texture( textureUnitPS0, R0f+ vec2(m,n) * 2.0 /res )/(pow(r,2)-4); //assume 2px offset as well R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
count += 1.0;
} }
} }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4); }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); passPixelColor0 = R1f/count;
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4);
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); //workaround, less like a square, needs proper bokeh
passPixelColor0 = R1f;
} }

View File

@ -23,16 +23,15 @@ ivec2 ires = textureSize(textureUnitPS0,0);
vec2 res = vec2( float(ires.x), float(ires.y) ); vec2 res = vec2( float(ires.x), float(ires.y) );
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5)); int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
vec4 R1f = vec4(0.0); vec4 R1f = vec4(0.0);
for (int i=0; i<r; i++) { float count = 0.0;
float m = (1-r)/2 + float(i); for( int x=-r; x<=r; x++ ) {
for (int k=0; k<r; k++){ for( int y=-r; y<=r; y++ ) {
float n = (1-r)/2 + float(k); if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
R1f += texture( textureUnitPS0, R0f+ vec2(m,n) * 2.0 /res )/(pow(r,2)-4); //assume 2px offset as well R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
count += 1.0;
} }
} }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4); }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); passPixelColor0 = R1f/count;
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4);
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); //workaround, less like a square, needs proper bokeh
passPixelColor0 = R1f;
} }

View File

@ -23,16 +23,15 @@ ivec2 ires = textureSize(textureUnitPS0,0);
vec2 res = vec2( float(ires.x), float(ires.y) ); vec2 res = vec2( float(ires.x), float(ires.y) );
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5)); int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
vec4 R1f = vec4(0.0); vec4 R1f = vec4(0.0);
for (int i=0; i<r; i++) { float count = 0.0;
float m = (1-r)/2 + float(i); for( int x=-r; x<=r; x++ ) {
for (int k=0; k<r; k++){ for( int y=-r; y<=r; y++ ) {
float n = (1-r)/2 + float(k); if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
R1f += texture( textureUnitPS0, R0f+ vec2(m,n) * 2.0 /res )/(pow(r,2)-4); //assume 2px offset as well R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
count += 1.0;
} }
} }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4); }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); passPixelColor0 = R1f/count;
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4);
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); //workaround, less like a square, needs proper bokeh
passPixelColor0 = R1f;
} }

View File

@ -23,16 +23,15 @@ ivec2 ires = textureSize(textureUnitPS0,0);
vec2 res = vec2( float(ires.x), float(ires.y) ); vec2 res = vec2( float(ires.x), float(ires.y) );
int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5)); int r = int(floor(2.0 / uf_fragCoordScale.y + 0.5));
vec4 R1f = vec4(0.0); vec4 R1f = vec4(0.0);
for (int i=0; i<r; i++) { float count = 0.0;
float m = (1-r)/2 + float(i); for( int x=-r; x<=r; x++ ) {
for (int k=0; k<r; k++){ for( int y=-r; y<=r; y++ ) {
float n = (1-r)/2 + float(k); if( pow(x,2) + pow(y,2) <= pow(r,2) ) {
R1f += texture( textureUnitPS0, R0f+ vec2(m,n) * 2.0 /res )/(pow(r,2)-4); //assume 2px offset as well R1f += texture( textureUnitPS0, R0f + vec2(x,y)/res );
count += 1.0;
} }
} }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4); }
R1f -= texture( textureUnitPS0, R0f+ vec2((1-r)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); passPixelColor0 = R1f/count;
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(1-r)/2) * 2.0 /res )/(pow(r,2)-4);
R1f -= texture( textureUnitPS0, R0f+ vec2((r-1)/2,(r-1)/2) * 2.0 /res )/(pow(r,2)-4); //workaround, less like a square, needs proper bokeh
passPixelColor0 = R1f;
} }