Changes

Jump to navigation Jump to search
m
no edit summary
Line 1: Line 1: −
The 3DS GPU supports procedural generation of texture data using [[GPU_Textures|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.
+
[[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:
* Turbulence (?)
   
* Amplitude
 
* Amplitude
 +
* 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]].
* ADDSQRT2: sqrt(U’’*U’’+V’’*V’’) (?)
  −
* U’’: U’’ (discards V’’)
  −
* V’’: V’’ (discards U’’)
  −
* MIN: min(U’’,V’’)
  −
* MAX: min(U’’,V’’)
  −
* ADD: U’’+V’’
      
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 (which is presumed to span 3 kilobytes of data).
+
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]].
1,434

edits

Navigation menu