470 |
procedural geometry. |
procedural geometry. |
471 |
% XXX |
% XXX |
472 |
|
|
473 |
|
The main components, corresponding to the extended OpenGL pipelines |
474 |
|
are shown in Fig.~\ref{figpipeline}. |
475 |
|
|
476 |
|
\begin{figure} |
477 |
|
\caption{\label{figpipeline}The components of our hardware-accelerated implementation.} |
478 |
|
\end{figure} |
479 |
|
|
480 |
%Performance: zoomability, memory, speed |
%Performance: zoomability, memory, speed |
481 |
|
|
670 |
w.r.t.~the repeating unit. These are also randomly chosen |
w.r.t.~the repeating unit. These are also randomly chosen |
671 |
from an ad hoc distribution. |
from an ad hoc distribution. |
672 |
|
|
673 |
|
\subsection{Texture shading} |
674 |
|
|
675 |
|
On the NV25 architecture, |
676 |
|
the texture accesses can be customized further by the use of texture |
677 |
|
shading: the texture coordinates in a texture access can be made |
678 |
|
to depend on the result of a previous texture access. |
679 |
|
This can create a large variety of shapes, as seen already |
680 |
|
in Perlin's work\cite{perlin-noise-intro}. |
681 |
|
So far, we have only used offset textures with random |
682 |
|
offset matrices, but even they |
683 |
|
do improve the quality of the output. |
684 |
|
The textures used for offsetting are the same as the |
685 |
|
basic textures, but loaded as higher precision two-component HILO textures. |
686 |
|
|
687 |
|
|
688 |
\subsection{Register combiners} |
\subsection{Register combiners} |
689 |
|
|
690 |
Register combiners are used for fusing together the values read |
After the texture accesses, we need to convert |
691 |
from the basis textures and computing the fragment output color |
the 3- and 4-vectors obtained from the basis textures and |
692 |
using the palette chosen for the background. |
the palette color values into the final fragment color. |
693 |
|
The basic OpenGL texture environment stage is somewhat inadequate |
694 |
|
for this, so we use the NVIDIA register combiners extension |
695 |
|
instead. |
696 |
|
|
697 |
|
% Register combiners are used for fusing together the values read |
698 |
|
% from the basis textures and computing the fragment output color |
699 |
|
% using the palette chosen for the background. |
700 |
|
|
701 |
NVIDIA register combiners replace the standard OpenGL |
NVIDIA register combiners replace the standard OpenGL |
702 |
texture environment, color sum, and fog application with a |
texture environment, color sum, and fog application with a |
710 |
|
|
711 |
Our need for the combiners is rather unconventional: |
Our need for the combiners is rather unconventional: |
712 |
we want to lose most of the original shapes of the basis textures |
we want to lose most of the original shapes of the basis textures |
713 |
|
(again the ``saving recognitive power'' argument) |
714 |
and create new, different shapes |
and create new, different shapes |
715 |
from the interaction of the basis texture inputs. |
from the interaction of the basis texture values and |
716 |
Additionlly, we want to create more variation by varying |
the floating-point combiner parameters chosen randomly |
717 |
the parameters of the combiner code based on the seed number. |
from the seed number. |
718 |
|
|
719 |
We use dot products of texture values and random constant vectors |
We use dot products of texture values with each other |
720 |
|
and with random constant vectors |
721 |
to extract features from the textures. |
to extract features from the textures. |
722 |
% XXX: either (texture \cdot texture) or (texture \cdot constant) |
% XXX: either (texture \cdot texture) or (texture \cdot constant) |
723 |
Because the numeric range of all register values is $[-1,1]$, |
Because the numeric range of all register values is $[-1,1]$, |
727 |
results before clamping to the register range to sharpen |
results before clamping to the register range to sharpen |
728 |
the gradients and to diminish the area from which the features |
the gradients and to diminish the area from which the features |
729 |
of a single basis texture are extracted. |
of a single basis texture are extracted. |
730 |
|
For an example of how new shapes are created, see Fig.~\ref{fig-regcomb}. |
731 |
|
|
732 |
New shapes can be created by computing polynomials of the real values |
% New shapes can be created by computing polynomials of the real values |
733 |
extracted from the basis textures. |
% extracted from the basis textures. |
734 |
For example, the zero value contour of a real value can be obtained |
% For example, the zero value contour of a real value can be obtained |
735 |
by squaring the value, scaling up, and then clamping to $1$. |
% by squaring the value, scaling up, and then clamping to $1$. |
736 |
This produces nice band-like shapes (see Fig.~\ref{fig-regcomb}). |
% This produces nice band-like shapes (see Fig.~\ref{fig-regcomb}). |
737 |
|
|
738 |
Finally, the computed real values are used for interpolating between |
Finally, the computed real values are used for interpolating between |
739 |
the colors chosen for the backround. Typically, because of the scaling |
the colors chosen for the backround. |
740 |
and clamping, the interpolation values have modes at $0$ and $1$ |
% Typically, because of the scaling |
741 |
and a transition band between the modes. |
% and clamping, the interpolation values have modes at $0$ and $1$ |
742 |
|
% and a transition band between the modes. |
743 |
% XXX: the amount of scaling determines the sharpness of the edges |
% XXX: the amount of scaling determines the sharpness of the edges |
744 |
|
|
745 |
%Because of the unconventional uses, the limitations of the |
%Because of the unconventional uses, the limitations of the |
793 |
|
|
794 |
Because there are only a few register combiner computation |
Because there are only a few register combiner computation |
795 |
stages on NV10, a single rendering pass cannot |
stages on NV10, a single rendering pass cannot |
796 |
produce a very full background. |
produce a satisfactory background. |
797 |
A simple way of increasing the visual features of the |
A simple way of increasing the visual features of the |
798 |
backrounds is to use multiple passes. |
backgrounds is to use multiple passes. |
799 |
|
|
800 |
The register combiners can be used to compute an alpha |
The register combiners can be used to compute an alpha |
801 |
value in the same way as the color interpolation values |
value in the same way as the color interpolation values |
807 |
the same repeating unit(s) to make them blend into a |
the same repeating unit(s) to make them blend into a |
808 |
single perceived layer. |
single perceived layer. |
809 |
|
|
810 |
We use 3 passes on NV10 and 2 passes on NV25. |
Currently, we use 3 passes on the NV10 and 2 passes on the NV25. |
|
|
|
|
\subsection{Texture shading} |
|
|
|
|
|
On higher end hardware, the diversity of the shapes can be |
|
|
increased with offset textures. |
|
|
Another set of basis textures are randomly chosen for |
|
|
offsetting the texture coordinates of the first set of textures. |
|
|
To further increase variation, the offset values are multiplied |
|
|
by a random matrix. |
|
|
The textures used for offsetting are similar to the |
|
|
basic textures, but loaded as higher precision two-component HILO textures. |
|
|
|
|
|
%Offset textures used for creating new shapes. |
|
|
|
|
|
XXX |
|
811 |
|
|
812 |
\section{Example application} |
\section{Example application} |
813 |
|
|
814 |
\begin{figure*} |
\begin{figure*} |
815 |
\centering |
\centering |
816 |
\fbox{\vbox{\vskip 5in}} |
\fbox{\vbox{\vskip 8in}} |
817 |
\caption{ |
\caption{ |
818 |
\label{fig-identity-via-textures} |
\label{fig-identity-via-textures} |
819 |
a) different documents with similar appearance and a focus+context view |
Two different views of a structure of PDF documents viewed in a focus+context view. |
820 |
showing relations, |
The view shows relationships between specific points in the documents, |
821 |
b) the same documents and the same view with identity visualized with unique backgrounds. If viewing this document on a screen, make sure the your gamma is properly set; the text {\bf is} readable if the gamma is correct but the textures are too dark if not. |
similar to Nelson's work XXX. |
822 |
|
Each document has an unique background, which makes it easy to see that the |
823 |
|
fragment of a document on the left side of the bottom view is the document fully seen |
824 |
|
in the top view; without unique backgrounds, this would be relatively difficult |
825 |
|
and would require traversing the link. |
826 |
|
If viewing this document on a screen, |
827 |
|
make sure the your gamma is properly set; the text {\bf is} readable |
828 |
|
if the gamma is correct but the textures are too dark if not. |
829 |
} |
} |
830 |
\end{figure*} |
\end{figure*} |
831 |
|
|
861 |
So far, we have concentrated mostly on low-end hardware, and |
So far, we have concentrated mostly on low-end hardware, and |
862 |
have not even tapped the full potential of the NV25 architecture. |
have not even tapped the full potential of the NV25 architecture. |
863 |
|
|
864 |
We are currently working on implementing |
We are working on implementing |
865 |
similar algorithms on ATI hardware, due to their recent release |
similar algorithms on ATI's extensions, due to their recent release |
866 |
of a Linux driver. |
of a Linux driver. |
867 |
The new graphics chips, ATI R300 and NVIDIA NV30 support |
The new graphics chips, ATI R300 and NVIDIA NV30 support |
868 |
a great deal more of procedural texturing and it will |
a great deal more of procedural texturing and it will |
870 |
The algorithms can be further developed: simulating lighting and |
The algorithms can be further developed: simulating lighting and |
871 |
a rough surface could produce good results. |
a rough surface could produce good results. |
872 |
|
|
873 |
|
ARB fragment program |
874 |
|
|
875 |
|
Usability |
876 |
|
|
877 |
% |
% |
878 |
% Each basis texture is repeating, |
% Each basis texture is repeating, |
879 |
% but by choosing the texture coordinates |
% but by choosing the texture coordinates |
890 |
to use repeating units for non-repeating backgrounds --- but use more than one, |
to use repeating units for non-repeating backgrounds --- but use more than one, |
891 |
which are not rationally related. |
which are not rationally related. |
892 |
|
|
893 |
|
Nonlinear regcomb leads to aliasing: .... modeling textures mathematically , ... |
894 |
|
|
895 |
|
2 passes on NV25 too much; should be possible with 1 |
896 |
|
|
897 |
\section{MPEG Animation} |
\section{MPEG Animation} |
898 |
[not to be included in final ms.] |
[not to be included in final ms.] |