[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] manuscripts/AniFont anifont.tex
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] manuscripts/AniFont anifont.tex |
Date: |
Tue, 14 Oct 2003 09:01:27 -0400 |
CVSROOT: /cvsroot/gzz
Module name: manuscripts
Branch:
Changes by: Tuomas J. Lukka <address@hidden> 03/10/14 09:01:27
Modified files:
AniFont : anifont.tex
Log message:
Arch sync
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/manuscripts/AniFont/anifont.tex.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
Patches:
Index: manuscripts/AniFont/anifont.tex
diff -u manuscripts/AniFont/anifont.tex:1.8 manuscripts/AniFont/anifont.tex:1.9
--- manuscripts/AniFont/anifont.tex:1.8 Fri Oct 10 10:05:37 2003
+++ manuscripts/AniFont/anifont.tex Tue Oct 14 09:01:26 2003
@@ -9,7 +9,23 @@
\maketitle
\begin{abstract}
- We show...
+We demonstrate a counterintuitive hardware-accelerated
+rendering trick:
+when rendering an isotropically textured 2 1/2D scene,
+stretching an image when putting it into a texture
+and squishing it with texture coordinates when rendering yields
+a slightly but significantly better
+image quality than simple trilinear filtering when hardware
+anisotropic filtering is enabled.
+We show a simple way to understand why this trick works, and discuss
+various generalizations. We show examples of text rendered both ways.
+
+As background for the trick, we discuss harware anisotropic
+texture filtering and show
+how to probe the filters to understand their function, paying
+attention to what assumptions have to be made for such probing to work.
+
+
\end{abstract}
\section{Introduction}
@@ -28,6 +44,10 @@
- basic anisotropic solution: more samples from the mipmaps than the 8 used for
trilinear - better approximation of EWA. Modern graphics cards support up to
XXX samples
+- Unextended OpenGL aniso: article on using lod bias etc to get it
+
+- supersampling: FSAA / as above; however, most cards focus on multisampling,
not supersampling -
+ no help for textures
- Graphics companies unfortunately do not provide ...
@@ -41,93 +61,6 @@
The rest of the article is organized as follows.
-\section{Probing hardware anisotropic filters}
-\label{secprobing}
-
-In this Section, we
-
-This seems to be a well-known technique that has not so far been published
-anywhere
-
-Digit-life XXX NVIDIA, ATI patterns
-
-- for careful work, you'll want to know what your driver is doing
-
-\begin{figure*}
-a) \includegraphics[width=5cm]{probe.2}
-b) \includegraphics[width=10cm]{probe.1}
-c)
-\caption{
-\label{figanisoprobe}
-a) Example probe textures for the three smallest mipmap levels.
-Each texture has a single white texel at a single mipmap level, the rest of
the texels
-and mipmap levels being gray.
-b) The pixel-sized quads using textures such as the ones in a) to give
-the contributions of each texel to a particular quad. All quads are rendered
-with the exactly same texture coordinates and vertex coordinates relative
-to the pixel.
-c) An example image produced by such quads: how the XXX card
-samples the mipmap levels in XXX aniso XXX
-}
-\end{figure*}
-
-- difficulty in probing hardware: each free variable grows number of probes to
make
- exponentially - have to make as strict assumptions as possible
-
-- ASSUMPTIONS:
- driver not detecting software and applying different rules, driver
- not changing algorithm for screenshot images / moving images,
- driver not looking at texture images and deciding filtering
- algorithms based on that (image-sensitive filters).
- (can use linear algebra to do this then).
- Filters are linear (nonlinearities in the filters - to our knowledge none
yet; gamma correction?).
-
-- SEMI-ASSUMPTIONS (trivial to adjust algorithm): all texture units produce
- the same results (in some drivers, this is not the case - 3dcenter about nv
51.XX series
- DirectX),
- Driver isn't using a different set of samples for large and small triangles,
- e.g. NV patent describing using lower mipmap level!
- pixel translation invariance, in screen space.
-
-- define separate texture $T_{(k),x,y}$ for each texel of each
- mipmap level, with exactly one light
- texel at the point $(x,y)$ of that mipmap level, all other texels and mipmap
levels middle gray
- (we define level $(n)$ to be the 1x1 texture, ${n-1}$ to be the 2x2 texture
etc.
- Non-square mipmap hierarchies are a simple generalization)
-
- - gray so we see also if there are negative weights in the filter!
-
-- select the texture coordinates for a single-pixel quad for which you want
- to see contributions.
- In reality, only a triangle gets used so these should be linearly obtained
- from three coordinates but it's still easier for a human to understand these
- as quads...
-
-- For each mipmap level texel, render a one-pixel quad,
- with the same texture coordinates and
-
-- Resulting image gives contribution from each texel on a mipmap level
- to the final image, PROVIDED ASSUMPTIONS HOLD.
-
-- the single-texture quads (or values read from screen) can then be used
- in other visualizations
-
-- utility in our free software OpenGL libvob system
-
-
-
-A similar technique appears to be used more commonly used for probing hardware
-antialiasing patterns, (XXX should we?).
-
-- assumptions about the contents of the mipmap levels
-
- - aniso filter might compute trilinear samples using only one level, etc.
-
- - for analysis, the contribution of one texel could be represented
- as the contribution of four texels on a higher mimap level as per
- the assumption of generating the mipmap levels in the usual way
-
-
\section{Surprise: stretch-squish can yield better images in orthogonal
transformations}
- case we consider: sharp edges, orthogonal (or nearly so) transformations,
e.g. text
@@ -196,11 +129,14 @@
the result significantly
+
\section{Conclusion}
- described how hardware implementations of anisotropic filtering can be probed
for better understanding
+- NV's fragment program TXD really useful
+
- showed how, when orthogonal transformations, anisotropic filtering in the
hardware
can still be useful - a trick we haven't seen used elsewhere
@@ -222,5 +158,95 @@
\section{Acknowledgments}
+
+\appendix
+\section*{Appendix}
+
+\section{Probing hardware anisotropic filters}
+\label{secprobing}
+
+In this Section, we
+
+This seems to be a well-known technique that has not so far been published
+anywhere
+
+Digit-life XXX NVIDIA, ATI patterns
+
+- for careful work, you'll want to know what your driver is doing
+
+\begin{figure*}
+a) \includegraphics[width=5cm]{probe.2}
+b) \includegraphics[width=10cm]{probe.1}
+c)
+\caption{
+\label{figanisoprobe}
+a) Example probe textures for the three smallest mipmap levels.
+Each texture has a single white texel at a single mipmap level, the rest of
the texels
+and mipmap levels being gray.
+b) The pixel-sized quads using textures such as the ones in a) to give
+the contributions of each texel to a particular quad. All quads are rendered
+with the exactly same texture coordinates and vertex coordinates relative
+to the pixel.
+c) An example image produced by such quads: how the XXX card
+samples the mipmap levels in XXX aniso XXX
+}
+\end{figure*}
+
+- difficulty in probing hardware: each free variable grows number of probes to
make
+ exponentially - have to make as strict assumptions as possible
+
+- ASSUMPTIONS:
+ driver not detecting software and applying different rules, driver
+ not changing algorithm for screenshot images / moving images,
+ driver not looking at texture images and deciding filtering
+ algorithms based on that (image-sensitive filters).
+ (can use linear algebra to do this then).
+ Filters are linear (nonlinearities in the filters - to our knowledge none
yet; gamma correction?).
+
+- SEMI-ASSUMPTIONS (trivial to adjust algorithm): all texture units produce
+ the same results (in some drivers, this is not the case - 3dcenter about nv
51.XX series
+ DirectX),
+ Driver isn't using a different set of samples for large and small triangles,
+ e.g. NV patent describing using lower mipmap level!
+ pixel translation invariance, in screen space.
+
+- define separate texture $T_{(k),x,y}$ for each texel of each
+ mipmap level, with exactly one light
+ texel at the point $(x,y)$ of that mipmap level, all other texels and mipmap
levels middle gray
+ (we define level $(n)$ to be the 1x1 texture, ${n-1}$ to be the 2x2 texture
etc.
+ Non-square mipmap hierarchies are a simple generalization)
+
+ - gray so we see also if there are negative weights in the filter!
+
+- select the texture coordinates for a single-pixel quad for which you want
+ to see contributions.
+ In reality, only a triangle gets used so these should be linearly obtained
+ from three coordinates but it's still easier for a human to understand these
+ as quads...
+
+- For each mipmap level texel, render a one-pixel quad,
+ with the same texture coordinates and
+
+- Resulting image gives contribution from each texel on a mipmap level
+ to the final image, PROVIDED ASSUMPTIONS HOLD.
+
+- the single-texture quads (or values read from screen) can then be used
+ in other visualizations
+
+- utility in our free software OpenGL libvob system
+
+
+
+A similar technique appears to be used more commonly used for probing hardware
+antialiasing patterns, (XXX should we?).
+
+- assumptions about the contents of the mipmap levels
+
+ - aniso filter might compute trilinear samples using only one level, etc.
+
+ - for analysis, the contribution of one texel could be represented
+ as the contribution of four texels on a higher mimap level as per
+ the assumption of generating the mipmap levels in the usual way
+
\end{document}
- [Gzz-commits] manuscripts/AniFont anifont.tex, Janne V. Kujala, 2003/10/02
- [Gzz-commits] manuscripts/AniFont anifont.tex,
Tuomas J. Lukka <=
- [Gzz-commits] manuscripts/AniFont anifont.tex, Janne V. Kujala, 2003/10/14
- [Gzz-commits] manuscripts/AniFont anifont.tex, Tuomas J. Lukka, 2003/10/23
- [Gzz-commits] manuscripts/AniFont anifont.tex, Tuomas J. Lukka, 2003/10/23
- [Gzz-commits] manuscripts/AniFont anifont.tex, Janne V. Kujala, 2003/10/31
- [Gzz-commits] manuscripts/AniFont anifont.tex, Janne V. Kujala, 2003/10/31