GLSL noise

Aus DGL Wiki
Version vom 9. August 2008, 16:44 Uhr von WhiteHunter (Diskussion | Beiträge) (neuere ATIs scheinen zu gehen)

Wechseln zu: Navigation, Suche

Die noise-Funktionen der GLSL erzeugen ein stochastisches Rauschen, das dazu benutzt werden kann, die visuelle Vielfalt zu erhöhen. Die zurückgegebenen Werte sehen zufällig aus, sind allerdings nicht wirklich zufällig. Bei Rauschen ("noise") handelt es sich zudem nicht nur um einfache Zufallszahlen.

Besonderheiten

Die einzigen Treiber, die derzeit garantiert die noise-Funktionen anbieten, stammen von 3DLabs. Ältere ATI-Treiber implementierten die noise-Funktionen gar nicht, wodurch der Shader im Softwaremodus lief, inzwischen scheint das Problem nicht mehr zu bestehen. NVidia hat sie in OpenGL 2.0 zwar implementiert, jedoch geben sie nach wie vor nur 0.0 zurück.

Daher empfiehlt sich zurzeit nicht nur aus Geschwindigkeitsgründen statt der Verwendung dieser Funktionen eher eine vorher erzeugte Noisetextur, beispielsweise per Perlin Noise.

Syntax

float noise1 (genType x)
vec2 noise2 (genType x)
vec3 noise3 (genType x)
vec4 noise4 (genType x)

Eigenschaften

Die von der GLSL-Spezifikation 1.20.8 geforderten Eigenschaften der noise-Funktionen sind:

  • Die Rückgabewerte liegen im Intervall [-1.0,1.0] und sind mindestens in [-0.6,0.6] annähernd normalverteilt.
  • Die Rückgabewerte haben insgesamt den Durchschnitt 0.0.
  • Sie sind reproduzierbar, indem ein bestimmter Eingabewert immer die gleichen Rückgabewerte erzeugt.
  • Sie sind statistisch invariant unter Rotation und Verschiebung (d. h. egal wie der Wertebereich rotiert oder verschoben wird, die Funktion hat immer das gleiche statistische Verhalten).
  • Normalerweise unterschiedliche Ergebnisse bei Verschiebung der Eingabewerte
  • Die Ortsfrequenz befindet sich in einem eingeengten, konzentrierten Bereich mit der Mitte zwischen 0.5 und 1.0.
  • Die ersten Ableitungen der Funktionen sind überall stetig.

Weblinks