25 |
|
|
26 |
Plain OpenGL 1.3 does not by itself provide enough flexibility in the |
Plain OpenGL 1.3 does not by itself provide enough flexibility in the |
27 |
fragment pipeline to allow for generating features nonlinearly from |
fragment pipeline to allow for generating features nonlinearly from |
28 |
the basis textures[Fig.3]. Because of this, and the availability of stable |
the basis textures[Fig.3]. Because of this, and the availability of |
29 |
Linux drivers, our main platforms are NV10, i.e., OpenGL 1.3 + |
stable Linux drivers, our main platforms are NV10, i.e., OpenGL 1.3 + |
30 |
GL_NV_register_combiners, and NV25, i.e., NV10 + |
GL_NV_register_combiners, and NV25, i.e., NV10 + GL_NV_texture_shader3. |
31 |
GL_NV_texture_shader3. We will be working on an implementation based on |
We will be working on an implementation based on GL_ARB_fragment_program |
32 |
GL_ARB_fragment_program and GL_NV_fragment_program once we obtain |
and GL_NV_fragment_program now that we have obtained our first NV3X-based |
33 |
NV3X-based cards. |
card. |
34 |
|
|
35 |
For each unique background texture, a small palette of colors is selected |
For each unique background texture, a small palette of colors is |
36 |
randomly from a heuristic distribution. The shapes of the final |
selected randomly from a heuristic distribution. The shapes of the |
37 |
background texture are generated entirely from a small set of static |
final background texture are generated entirely from a small set of |
38 |
"basis textures" bound to texture units with randomly chosen affine |
static "basis textures" bound to texture units with randomly chosen |
39 |
texture coordinate mappings using vertex programs. Even though |
affine texture coordinate mappings using vertex programs. Even though |
40 |
the basis textures are RGB |
the basis textures are RGB textures, they contain no color information: |
41 |
textures, they contain no color information: they are simply treated |
they are simply treated as 3- or 4-vectors and combined using the NVIDIA |
42 |
as 3- or 4-vectors and combined using the NVIDIA register combiners |
register combiners extension with the palette colors to produce the final |
43 |
extension with the palette colors to produce the final fragment colors. |
fragment colors. |
44 |
|
|
45 |
The use of the combiners is rather unconventional: we want to lose most |
The use of the combiners is rather unconventional: we want to lose most |
46 |
of the original shapes of the basis textures in order to create new, |
of the original shapes of the basis textures in order to create new, |
47 |
different shapes from the interaction of the basis texture values and |
different shapes from the interaction of the basis texture values and |
48 |
combiner parameters chosen randomly from the seed number. For this, |
combiner parameters chosen randomly from the seed number. For this, |
49 |
we use dot products of texture values with each other and with random |
we use dot products of texture values with each other and with random |
50 |
constant vectors, and scale up with the register combiner output mappings |
constant vectors, and scale up with the register combiner output |
51 |
to sharpen the result [Fig.4]. The resulting values |
mappings to sharpen the result [Fig.4]. The resulting values are used |
52 |
are used for interpolating between the palette colors. |
for interpolating between the palette colors. |
|
On the NV25, we use offset textures to allow the creation of new |
|
|
shapes by texture shading. |
|
53 |
|
|
54 |
We realize that this is a rather off-the-wall GPU use but thought |
On the NV25, we use offset textures to ease the creation of new shapes |
55 |
you might be interested. |
in the fragment pipeline. |
56 |
|
|
57 |
--- Figures |
--- Figures |
58 |
|
|