Copied some paper notes I've referred to often
This commit is contained in:
parent
808e4df573
commit
bd7be47ff9
78
content/posts/2019-08-10-geometry-navel-gazing.org
Normal file
78
content/posts/2019-08-10-geometry-navel-gazing.org
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
---
|
||||||
|
title: "(hand-waving musing on geometry)"
|
||||||
|
author: Chris Hodapp
|
||||||
|
date: "2019-08-10"
|
||||||
|
tags:
|
||||||
|
- procedural graphics
|
||||||
|
draft: true
|
||||||
|
---
|
||||||
|
|
||||||
|
(This is copied verbatim from some notes taken on 2019-08-10, aside
|
||||||
|
from corrections I thought were needed.)
|
||||||
|
|
||||||
|
SDFs in some sense are _duals_ of other ways of expressing geometry.
|
||||||
|
A lossless transform isn't always possible or sensible. Think of the
|
||||||
|
term "distance transform" though. Interestingly, the /domain/ does
|
||||||
|
not change with this transform - only the range (and then sometimes
|
||||||
|
only its interpretation). The representation of the SDF doesn't
|
||||||
|
change this - e.g. analytical/procedural SDF vs. a 3D texture which
|
||||||
|
samples and interpolates. Think of how an approximate FFT degrades
|
||||||
|
frequency information but still leaves most of the sound intact - and
|
||||||
|
how a sampled SDF still preserves edges.
|
||||||
|
|
||||||
|
(Consider inductive bias vs. deductive bias of a representation. What
|
||||||
|
is easy? What is possible?)
|
||||||
|
|
||||||
|
Interestingly, the same procedural vs. explicit dichotomy shows up
|
||||||
|
here. (Dichotomy or spectrum?) Perhaps 'explicit' is the wrong word
|
||||||
|
or at least an unhelpful one, because it confuses it with the explicit
|
||||||
|
vs. implicit in geometry. A voxel grid may just be floating-point
|
||||||
|
data, but it can contain an _implicit_ surface via its level set
|
||||||
|
(i.e. isosurface).
|
||||||
|
|
||||||
|
So, perhaps the spectrum is just procedural vs. data. A sampled SDF
|
||||||
|
is mostly data, expressing a surface implicitly. The fact that
|
||||||
|
interpolation is a sensible way to handle these samples (since SDFs
|
||||||
|
tend to be smooth, even over edges of the surface) is the "procedural"
|
||||||
|
part of this that is needed.
|
||||||
|
|
||||||
|
(margin note: Calling it 'procedural' without a formal procedure being
|
||||||
|
present/reified is perhaps a misnomer)
|
||||||
|
|
||||||
|
"Explicit" geometry (e.g. a triangle mesh) is along similar lines.
|
||||||
|
The mesh itself is mostly data. Some renderers and modeling tools add
|
||||||
|
some "procedural" element, such as tesselation. If I generate this
|
||||||
|
geometry myself via a program, however, I retain most of the strengths
|
||||||
|
of a procedural form of geometry, even though most systems can't
|
||||||
|
handle this procedure directly (only its output) - unlike with shaders
|
||||||
|
or sphere tracers.
|
||||||
|
|
||||||
|
The interesting part (to me at least) comes from the ability of
|
||||||
|
procedures to be _parametric_, which acts as a tremendous level to
|
||||||
|
reuse and efficiency, and to express infinite resolutions, sizes, and
|
||||||
|
even levels of detail or variation, ranging from continuity, to noise
|
||||||
|
functions that extend infinitely, to fractals that produce detail
|
||||||
|
infinitely small.
|
||||||
|
|
||||||
|
There is still a bit of a split between continuous implicit functions
|
||||||
|
(my terminology might be awful), e.g. things like SDFs but also other
|
||||||
|
implicit surfaces I might use other ways, and things a bit closer to
|
||||||
|
automata, even just explicit representations. More "continuous"
|
||||||
|
descriptions are directly amenable to the whole range of things in
|
||||||
|
vector calculus - gradients and gradient-desncent and optimization and
|
||||||
|
so forth - but this might come at the cost of putting some kinds of
|
||||||
|
recursion/iteration completely out of reach. The more 'explicit' (?)
|
||||||
|
description may be able to express these effortlessly (e.g. thing of
|
||||||
|
cellular automata and context-free grammars) but they lose some of the
|
||||||
|
nice analytical properties, even if they generate things into some
|
||||||
|
continuous space, like being able to render directly with raymarching.
|
||||||
|
|
||||||
|
These limitations might be less present than I think. Syntopia's blog
|
||||||
|
has the whole 'folding space' section and expressing a Sierpinski in
|
||||||
|
an SDF while still (I think) preserving differentiation, and all sorts
|
||||||
|
of transforms may still preserve it (including summation) by
|
||||||
|
linearity.
|
||||||
|
|
||||||
|
Mandelbrot's an interesting case here in that it has a distance
|
||||||
|
estimate, yet all of the complexity (maybe more) of automata and a
|
||||||
|
recursive system.
|
||||||
Loading…
x
Reference in New Issue
Block a user