85 |
|
|
86 |
\begin{figure*} |
\begin{figure*} |
87 |
\begin{tabular}{p{1.5cm}|p{\colwidth}p{\colwidth}p{\colwidth}p{\colwidth}p{\colwidth}} |
\begin{tabular}{p{1.5cm}|p{\colwidth}p{\colwidth}p{\colwidth}p{\colwidth}p{\colwidth}} |
88 |
Coordinate mapping&Nearest neighbour&Trilinear&Trilinear+ Anisotropic&FSAA 4xSS&Custom vertex-based 4xSS \\ |
Coordinate mapping&Nearest neighbour&Trilinear&Trilinear+ Anisotropic&FSAA 4xSS&Vertex-based 4xSS \\ |
89 |
\hline\\ |
\hline\\ |
90 |
Iso& |
Iso& |
91 |
\snapshot{snapsps/aniso-gffx-tbl-iso-nearest.ps} & |
\snapshot{snapsps/aniso-gffx-tbl-iso-nearest.ps} & |
92 |
\snapshot{snapsps/aniso-gffx-tbl-iso-trilinear.ps} & |
\snapshot{snapsps/aniso-gffx-tbl-iso-trilinear.ps} & |
93 |
\snapshot{snapsps/aniso-gffx-tbl-iso-aniso.ps} & |
\snapshot{snapsps/aniso-gffx-tbl-iso-aniso.ps} & |
94 |
\snapshot{snapsps/aniso-gf4go-tbl-iso-fsaa.ps} & |
\snapshot{snapsps/aniso-gf4go-tbl-iso-fsaa.ps} & |
95 |
\snapshot{snapsps/aniso-gffx-tbl-iso-super4.ps} \\[1ex] |
\snapshot{snapsps/aniso-gffx-tbl-iso-super4.ps} \\ |
96 |
|
\\ |
97 |
% |
% |
98 |
Aniso& |
Aniso& |
99 |
\snapshot{snapsps/aniso-gffx-tbl-aniso-nearest.ps} & |
\snapshot{snapsps/aniso-gffx-tbl-aniso-nearest.ps} & |
170 |
|
|
171 |
\section{Why does stretch and squish improve image quality?} |
\section{Why does stretch and squish improve image quality?} |
172 |
|
|
|
- quality of trilinear filtering result depends strongly on subpixel position |
|
173 |
|
|
174 |
\begin{figure} |
\begin{figure}[t!] |
175 |
\centering |
\centering |
176 |
\begin{tabular}{c|c} |
\begin{tabular}{c|c} |
177 |
Trilinear & Stretch-squish \\ |
Trilinear & Stretch-squish 2x\\ |
178 |
\hline\\ |
\hline\\ |
179 |
\snapshot{snapsps/aniso-gffx-ortho-trilinear-0.ps}& |
\snapshot{snapsps/aniso-gffx-ortho-trilinear-0.ps}& |
180 |
\snapshot{snapsps/aniso-gffx-ortho-stretchsquish-0.ps}\\ |
\snapshot{snapsps/aniso-gffx-ortho-stretchsquish-0.ps}\\ |
184 |
\snapshot{snapsps/aniso-gffx-ortho-stretchsquish-2.ps}\\ |
\snapshot{snapsps/aniso-gffx-ortho-stretchsquish-2.ps}\\ |
185 |
\end{tabular} |
\end{tabular} |
186 |
\caption{ |
\caption{ |
187 |
\label{figstretchsquishsamples} |
\label{figstretchsquishwhyworks} |
188 |
PFSS diagrams of an simple rendering situation, |
PFSS diagrams of an isotropic rendering situation, |
189 |
showing how stretch-squish works. |
showing why stretch-squish improves image quality. |
190 |
a) Normal trilinear filtering. |
The three rows show different sub-pixel translations of the texture. |
191 |
b) Stretching the texture and squishing it allows more samples to be used |
The trilinear filter kernel size varies strongly in both X and Y |
192 |
when using an anisotropic filter. The footprint in XXX direction is much closer |
directions, whereas the kernel size for |
193 |
to the actual pixel; there is less blur in the output. Here, 2x anisotropy was |
stretch-squish varies far less strongly for the direction of the stretch. |
|
used; using more anisotropy sharpens the filter further. |
|
194 |
} |
} |
195 |
\end{figure} |
\end{figure} |
196 |
|
|
197 |
|
The quality of trilinear filtering result depends strongly on subpixel position, |
198 |
|
as shown in Fig.~\ref{figstretchsquishwhyworks}. The anisotropic filter provides |
199 |
|
a better |
200 |
|
|
201 |
- analogous to supersampling |
- analogous to supersampling |
202 |
|
|
203 |
|
|
204 |
- downside: if transformed nonorthogonally, blurs easier since the "aniso power" is already used |
- downside: if transformed nonorthogonally, blurs easier since the "aniso power" is already used |
205 |
|
|
|
\section{Example: text} |
|
|
|
|
|
\begin{table} |
|
|
\caption{ |
|
|
\label{tabperformance} |
|
|
The performance of the different implementations on a XXX. |
|
|
} |
|
|
\end{table} |
|
206 |
|
|
207 |
\def\fontexamplesize{8cm} |
\def\fontexamplesize{8cm} |
208 |
\begin{figure*} |
\begin{figure*} |
242 |
|
|
243 |
\section{Conclusion} |
\section{Conclusion} |
244 |
|
|
245 |
|
\begin{table*} |
246 |
|
\begin{minipage}{\textwidth} |
247 |
|
\begin{tabular}{p{3cm}|lllll} |
248 |
|
Method & HW req & Clarity & Aliasing & Code changes & Relative time per pixel\\ |
249 |
|
\hline\\ |
250 |
|
Trilinear & Any & Blurry & --- & --- & 1 \\ |
251 |
|
Trilinear, LOD bias & Any & Less blurry & Bad & trivial & 1---2 \\ |
252 |
|
Stretch-squish 2x & NV1X+ & Better & --- & almost trivial & 1.5---2 \\ |
253 |
|
4x FSAA supersampling & NV1X\footnote{Not available on NVIDIA Linux drivers 44.96 on NV25 or NV31, only on NV1X} & Good & --- & trivial & 4\footnote{With FSAA, the entire scene slows down, not just the polygon to be improved} \\ |
254 |
|
Vertex-based supersampling & |
255 |
|
NV2X+ & Good & --- & significant & 4---6 \\ |
256 |
|
Fragment-based supersampling & |
257 |
|
NV3X+ & Good & --- & trivial & 10---20 \\ |
258 |
|
\hline |
259 |
|
\end{tabular} |
260 |
|
\end{minipage} |
261 |
|
\caption{ |
262 |
|
\label{tabperformance} |
263 |
|
A comparison of different ways of improving the filtering of \emph{isotropically} rendered |
264 |
|
textured polygons. |
265 |
|
The hardware requirements are given as NVIDIA architectures; the architectures from |
266 |
|
other manufacturers such as ATI mostly follow a similar pattern. |
267 |
|
} |
268 |
|
\end{table*} |
269 |
|
|
270 |
- In this article, we argue that isotropic situations should be explicitly avoided |
- In this article, we argue that isotropic situations should be explicitly avoided |
271 |
in 2D orthogonal rendering - better quality with aniso |
in 2D orthogonal rendering - better quality with aniso |
272 |
|
|
299 |
|
|
300 |
\section{Acknowledgments} |
\section{Acknowledgments} |
301 |
|
|
302 |
|
\bibliographystyle{abbrv} |
303 |
|
\bibliography{gzigzag} |
304 |
|
|
305 |
|
\appendix |
306 |
|
|
307 |
\appendix |
\appendix |
308 |
\section*{Appendix} |
\section*{Appendix} |
309 |
|
|
310 |
\section{Probing hardware texture filters for drawing realistic PFSS snapshots} |
\section{Probing hardware texture filters in OpenGL} |
311 |
\label{secprobing} |
\label{secprobing} |
312 |
|
|
313 |
In our investigations for this article, we found the pixel footprint |
In our investigations for this article, we found the pixel footprint |
387 |
as the contribution of four texels on a higher mimap level as per |
as the contribution of four texels on a higher mimap level as per |
388 |
the assumption of generating the mipmap levels in the usual way |
the assumption of generating the mipmap levels in the usual way |
389 |
|
|
|
\bibliographystyle{abbrv} |
|
|
\bibliography{gzigzag} |
|
|
|
|
|
\appendix |
|
|
|
|
|
\section{Probing texture filters} |
|
390 |
|
|
391 |
\begin{enumerate} |
\begin{enumerate} |
392 |
|
|