From b4c1a4c6c49f8105e7e6cf56b7f4063c596d3c01 Mon Sep 17 00:00:00 2001 From: TimothyLottes Date: Tue, 8 Nov 2016 20:56:13 -0500 Subject: [PATCH] Add files via upload --- 20161023.html | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 20161023.html diff --git a/20161023.html b/20161023.html new file mode 100644 index 0000000..7acc73c --- /dev/null +++ b/20161023.html @@ -0,0 +1,45 @@ +
+

20161023 - Sphere Tracing AA

+
+General idea for anti-aliasing with sphere tracing. The end result of this would be a very analog film feeling image with grain... +
+
+Ray Directions - Shoot one ray per pixel and use a good temporally changing low discrepancy sampling for ray direction. +
+
+First Hit - Trace forward until 2D projected distance to surface is within pixel diameter. +I'm using diameter here because one wants a thin feature to show up as partial coverage across at least 2 pixels (to get good AA). +Likely this distance needs a tuning knob, best might be half between pixel radius and diameter, depends on visual preference. +
+
+Coverage - Compute pixel coverage and store coverage with ray output. +This part I'm speculating on and would need to try to see what works. +Initial idea: step one more time through the surface, +then take the last 2 distance samplings and try to estimate the actual surface, +sample the distance function at the estimated surface, +take this final distance as "coverage" +(on surface = full coverage, reduce coverage as distance increases). +Exact coverage isn't as important has having coverage approach zero as ray passes a surface without getting near enough. +Error on surfaces will just show up as temporal grain, which is visually pleasing. +
+
+Reconstruction - For each pixel take nearest 11 rays. +Take a weighted sum of ray colors where weight is F(DistanceFromRayToPixelCenter) * Coverage then divide by sum of weight. +The F() function is the filter kernel, where fastest (but not highest quality) is the Gaussian, +exp2(-scale*dst*dst). +Could also do disk average (return 1.0 under a given radius, and some smooth fall-off outside that radius). +Note DistanceFromRayToPixelCenter is constantly changing temporally due to low discrepancy sampling. +Also nearest 11 rays is a fixed pattern, +
+
+
+   XXX
+  XXOXX <-- 11 sample pattern
+   XXX
+
+Grain - After reconstruction add some grain to help mask the temporally changing sampling pattern. +
+
+ + +