mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Better sampling of noisy regions
This commit is contained in:
parent
589f59b771
commit
4db88bb22c
@ -6,10 +6,12 @@ vec4 aa_apply(
|
|||||||
vec2 fragCoord,
|
vec2 fragCoord,
|
||||||
vec2 resolution
|
vec2 resolution
|
||||||
) {
|
) {
|
||||||
ivec2 dirs[] = { ivec2(-1, 0), ivec2(1, 0), ivec2(0, -1), ivec2(0, 1), /*ivec2(-1, -1), ivec2(-1, 1), ivec2(1, -1), ivec2(1, 1)*/ };
|
ivec2 dirs[] = { ivec2(-1, 0), ivec2(1, 0), ivec2(0, -1), ivec2(0, 1) };
|
||||||
|
|
||||||
vec2 sz = textureSize(sampler2D(tex, smplr), 0).xy;
|
vec2 sz = textureSize(sampler2D(tex, smplr), 0).xy;
|
||||||
|
|
||||||
|
//float center_d = texelFetch(sampler2D(depth_tex, depth_smplr), ivec2(fragCoord / screen_res.xy * sz), 0).x;
|
||||||
|
|
||||||
float min_depth = 1000;
|
float min_depth = 1000;
|
||||||
float max_depth = 0;
|
float max_depth = 0;
|
||||||
for (uint i = 0u; i < dirs.length(); i ++) {
|
for (uint i = 0u; i < dirs.length(); i ++) {
|
||||||
@ -19,18 +21,20 @@ vec4 aa_apply(
|
|||||||
}
|
}
|
||||||
|
|
||||||
vec4 aa_color = fxaa_apply(tex, smplr, fragCoord, resolution, 1.0 + 1.0 / (min_depth * 0 + 0.001 + (max_depth - min_depth) * 500) * 0.001);
|
vec4 aa_color = fxaa_apply(tex, smplr, fragCoord, resolution, 1.0 + 1.0 / (min_depth * 0 + 0.001 + (max_depth - min_depth) * 500) * 0.001);
|
||||||
|
vec4 lerped = texture(sampler2D(tex, smplr), fragCoord / screen_res.xy);
|
||||||
|
//aa_color = lerped;
|
||||||
|
|
||||||
vec4 closest = vec4(1000);
|
vec4 closest = aa_color;
|
||||||
float closest_dist = 1000.0;
|
float closest_dist = 1000.0;
|
||||||
for (uint i = 0u; i < dirs.length(); i ++) {
|
for (uint i = 0u; i < dirs.length(); i ++) {
|
||||||
vec4 col_at = texelFetch(sampler2D(tex, smplr), ivec2(fragCoord / screen_res.xy * sz) + dirs[i], 0);
|
vec4 col_at = texelFetch(sampler2D(tex, smplr), ivec2(fragCoord / screen_res.xy * sz) + dirs[i], 0);
|
||||||
//float depth_at = texelFetch(sampler2D(depth_tex, depth_smplr), ivec2(fragCoord / screen_res.xy * sz) + dirs[i], 0).x;
|
//float depth_at = texelFetch(sampler2D(depth_tex, depth_smplr), ivec2(fragCoord / screen_res.xy * sz) + dirs[i], 0).x;
|
||||||
float dist = dot(pow(aa_color.rgb - col_at.rgb, ivec3(2)), vec3(1));
|
float dist = dot(pow(aa_color.rgb - col_at.rgb, ivec3(2)), vec3(1));
|
||||||
if (dist < closest_dist) {
|
if (dist < closest_dist) {
|
||||||
closest = col_at;
|
closest = mix(col_at, lerped, min(length(lerped.rgb - col_at.rgb) * 0.25, 1));
|
||||||
closest_dist = dist;
|
closest_dist = dist;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//return texelFetch(sampler2D(tex, smplr), ivec2(fragCoord / screen_res.xy * sz), 0);
|
//return texelFetch(sampler2D(tex, smplr), ivec2(fragCoord / screen_res.xy * sz), 0);
|
||||||
return closest;//mix(aa_color, closest, clamp(1.0 - sqrt(closest_dist) / length(aa_color.rgb) * 0.25, 0, 1));
|
return closest;//mix(aa_color, closest, clamp(1.0 - sqrt(closest_dist) / length(aa_color.rgb) * 0.75, 0, 1));
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#define FXAA_REDUCE_MUL (1.0 / 8.0)
|
#define FXAA_REDUCE_MUL (1.0 / 8.0)
|
||||||
#endif
|
#endif
|
||||||
#ifndef FXAA_SPAN_MAX
|
#ifndef FXAA_SPAN_MAX
|
||||||
#define FXAA_SPAN_MAX 8.0
|
#define FXAA_SPAN_MAX 12.0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//optimized version for mobile, where dependent
|
//optimized version for mobile, where dependent
|
||||||
|
Loading…
Reference in New Issue
Block a user