Different sort of glare?
This commit is contained in:
parent
3e4de46b50
commit
53b44f27ed
|
|
@ -21,7 +21,7 @@ fn on_vertex(in: Vertex) -> Varying {
|
||||||
return Varying(uv, vec4(xy, 0., 1.));
|
return Varying(uv, vec4(xy, 0., 1.));
|
||||||
}
|
}
|
||||||
|
|
||||||
const CUTOFF: i32 = 200;
|
const CUTOFF: i32 = 50;
|
||||||
|
|
||||||
@fragment
|
@fragment
|
||||||
fn pass_h(in: Varying) -> @location(0) vec4f {
|
fn pass_h(in: Varying) -> @location(0) vec4f {
|
||||||
|
|
@ -33,8 +33,12 @@ fn pass_h(in: Varying) -> @location(0) vec4f {
|
||||||
for (var x = a; x < b; x++) {
|
for (var x = a; x < b; x++) {
|
||||||
let w = weight(x - pix.x);
|
let w = weight(x - pix.x);
|
||||||
let pixel = textureLoad(tex, vec2i(x, pix.y), 0);
|
let pixel = textureLoad(tex, vec2i(x, pix.y), 0);
|
||||||
|
if (all(pixel >= vec4(0.))) { // excludes NaNs
|
||||||
accum += w * pixel;
|
accum += w * pixel;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
// accum.x = textureLoad(tex, pix, 0).x;
|
||||||
|
// accum.y = textureLoad(tex, pix, 0).y;
|
||||||
return vec4(accum.xyz, params.sigma);
|
return vec4(accum.xyz, params.sigma);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -48,45 +52,16 @@ fn pass_v(in: Varying) -> @location(0) vec4f {
|
||||||
for (var y = a; y < b; y++) {
|
for (var y = a; y < b; y++) {
|
||||||
let w = weight(y - pix.y);
|
let w = weight(y - pix.y);
|
||||||
let pixel = textureLoad(tex, vec2i(pix.x, y), 0);
|
let pixel = textureLoad(tex, vec2i(pix.x, y), 0);
|
||||||
|
if (all(pixel >= vec4(0.))) { // excludes NaNs
|
||||||
accum += w * pixel;
|
accum += w * pixel;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
// accum.x = textureLoad(tex, pix, 0).x;
|
||||||
return vec4(accum.xyz, params.sigma);
|
return vec4(accum.xyz, params.sigma);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn weight(dist: i32) -> f32 {
|
|
||||||
// let σ = 50.;
|
|
||||||
// let d = f32(dist);
|
|
||||||
// let w = max(0., 1. - abs(d) / σ) / σ;
|
|
||||||
// return .1 * w;
|
|
||||||
// }
|
|
||||||
|
|
||||||
fn weight(dist: i32) -> f32 {
|
fn weight(dist: i32) -> f32 {
|
||||||
let σ = params.sigma / 1e5;
|
let σ = params.sigma / 1e4;
|
||||||
let d = f32(dist) / σ;
|
let d = f32(dist) / σ;
|
||||||
return 3. / (1. + d*d);
|
return 1. / (1. + d*d);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn weight(dist: i32) -> f32 {
|
|
||||||
// let σ = params.sigma / 1e8;
|
|
||||||
// let d = f32(dist) / σ;
|
|
||||||
// return 3. / (1. + abs(d));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// fn weight(dist: i32) -> f32 {
|
|
||||||
// let σ = params.sigma / 300.;
|
|
||||||
// let d = abs(f32(dist) / σ);
|
|
||||||
// return 1. / (1. + d*d*d) / σ;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// fn weight(dist: i32) -> f32 {
|
|
||||||
// let d = f32(abs(dist));
|
|
||||||
// let c = mix(.01, 1., exp(-d*d));
|
|
||||||
// // return c * pow(1.2, -d);
|
|
||||||
// return c / (1. + pow(d, 2.0));
|
|
||||||
// // return .25 * c / (1. + pow(.1 * d, 4.0));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// fn weight(dist: i32) -> f32 {
|
|
||||||
// let d = 2. * f32(dist);
|
|
||||||
// return exp(-d*d);
|
|
||||||
// }
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user