# Difference between revisions of "GPU/Procedural Texture Generation"

Line 3: | Line 3: | ||

== 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 (also notated as G(u,v)) | + | * Base Shape (also notated as G(u′′,v′′), output g) |

* F(g) and Lookup Table | * F(g) and Lookup Table | ||

## Revision as of 00:49, 21 August 2015

The 3DS GPU supports procedural generation of texture data using 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 presentation given by DMP.

## Overview

Procedural texture generation has four stages:

- Noise Module (outputs u′,v′)
- Repeat Module (outputs u′′,v′′)
- Base Shape (also notated as G(u′′,v′′), output g)
- F(g) and Lookup Table

## Noise Module

This stage applies noise on the input coordinates. Little is known about this other than that there are three noise parameters:

- Amplitude
- Frequency
- Phase

## Repeat Module

This stage performs basic texture coordinate wrapping on the noised coordinates. It supports symmetric and mirrored wrapping. They don't seem to be configurable beyond that.

## 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:

- 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".

## F(g) and Lookup Table

F is a selectable function which transforms g to another scalar value. There are two known options for F:

- the identity 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).