GPU/Procedural Texture Generation: Difference between revisions
Hey, look what I found... (thanks @ yuriks for translating!) |
Steveice10 (talk | contribs) mNo edit summary |
||
(10 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
The 3DS GPU supports procedural generation of texture data using [[ | [[Category:GPU]] | ||
The 3DS GPU supports procedural generation of texture data using [[GPU/Internal_Registers#GPUREG_TEXUNIT3_PROCTEX0|texture unit 3]]. Little is known about this feature, albeit a few public hints have been dropped. The contents of this page are solely based on reports on a [http://www.4gamer.net/games/017/G001762/20120822007/ presentation] given by DMP. | |||
The related GPU registers can be found starting [[GPU/Internal_Registers#GPUREG_TEXUNIT3_PROCTEX0|here]]. | |||
== Overview == | == Overview == | ||
Procedural texture generation has four stages: | Procedural texture generation has four stages: | ||
* Noise Module | * Noise Module (outputs u′,v′) | ||
* Repeat Module | * Repeat Module (outputs u′′,v′′) | ||
* Base Shape | * Base Shape (also notated as G(u′′,v′′), output g) | ||
* F(g) and Lookup Table | * F(g) and Lookup Table | ||
== Noise Module == | == Noise Module == | ||
This stage applies noise on the input coordinates. Little is known about this other than that there are three noise parameters: | This stage applies noise on the input coordinates. Little is known about this other than that there are three noise parameters: | ||
* | * Amplitude | ||
* Frequency | * Frequency | ||
* Phase | * Phase | ||
These parameters are configured starting [[GPU/Internal_Registers#GPUREG_TEXUNIT3_PROCTEX1|here]]. | |||
== Repeat Module == | == Repeat Module == | ||
Line 19: | Line 24: | ||
== Base Shape == | == Base Shape == | ||
The U’’ and V’’ coordinates are used to generate a scalar value in the range [0;1] from the wrapped coordinates using one of six functions | The U’’ and V’’ coordinates are used to generate a scalar value in the range [0;1] from the wrapped coordinates using one of six functions documented [[GPU/Internal_Registers#GPUREG_TEXUNIT3_PROCTEX0|here]]. | ||
The output of this function is named "g". | The output of this function is named "g". | ||
Line 35: | Line 34: | ||
* a triangle function | * a triangle function | ||
The final texel color is determined by using the value of F(g) as an index into a configurable lookup table. | The final texel color is determined by using the value of F(g) as an index into a configurable [[GPU/Internal_Registers#GPUREG_PROCTEX_LUT|lookup table]]. |