137 |
|
|
138 |
Non-photorealism: easier to understand motion; photorealistic would seem bizarre. |
Non-photorealism: easier to understand motion; photorealistic would seem bizarre. |
139 |
|
|
140 |
\section{OpenGL implementation} |
- draw edge |
141 |
|
|
142 |
Image-space algorithm: ... slow on NV10 |
For the edge thickness, scaling it with the scale of the paper is not good |
143 |
|
(too photorealistic...), but neither is a constant width, which ... |
144 |
|
Square root |
145 |
|
|
|
GL\_EXT\_texture\_env\_add \& alpha ``mesh'' texture. |
|
146 |
|
|
147 |
Content drawn using stencil. |
\section{Hardware-accelerated implementation} |
148 |
|
|
149 |
|
\subsection{A shape with the correct type of motion} |
150 |
|
|
151 |
|
Drawing a shape with the correct properties is relatively |
152 |
|
simple |
153 |
|
|
154 |
|
\subsection{Drawing the edge} |
155 |
|
|
156 |
|
\subsubsection{The oldest trick} |
157 |
|
|
158 |
|
Content drawn using stencil. |
159 |
Border: multi-pass perturbed edge. |
Border: multi-pass perturbed edge. |
160 |
|
Inside only needs to be drawn twice. |
161 |
|
|
162 |
|
Quite fast, but still has overhead w.r.t.~just the shape. |
163 |
|
Artifacts: edge thickness, small features |
164 |
|
|
165 |
|
|
166 |
|
\subsubsection{Image-space algorithms} |
167 |
|
|
168 |
|
Image-space algorithm: ... slow on NV10 |
169 |
|
|
170 |
|
\subsubsection{...} |
171 |
|
|
172 |
|
GL\_EXT\_texture\_env\_add \& alpha ``mesh'' texture. |
173 |
cite rip-maps |
cite rip-maps |
174 |
|
|
175 |
\subsection{Optimizations} |
\subsubsection{Optimizations} |
176 |
|
|
177 |
Pre-computed edge width: interpolated between |
Pre-computed edge width: interpolated between |
178 |
3 or 4 stored angles. |
3 or 4 stored angles. |