Benutzer:Coolcat/Shadersammlung: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(GLSL-Shader: Zufallsgenerator)
(GLSL-Shader: GLSL_Partikel_2 verlinkt.)
Zeile 68: Zeile 68:
 
[[GL_EXT_texture_buffer_object]]<br>
 
[[GL_EXT_texture_buffer_object]]<br>
 
[[GL_ARB_texture_float]]
 
[[GL_ARB_texture_float]]
 +
|-
 +
| {{TableHead}}  | [[GLSL_Partikel_2|GPU Partikelsystem]] von [[Benutzer:Coolcat|Coolcat]]
 +
| {{Table150R2}} | [[Bild:Partikel-Gravitation.jpg|150px|150px]]
 +
|-
 +
| {{TableCell}}  | Ein GPU-Partikelsystem welches insbesondere auf SM4 Features wie Geometryshader und Transform-Feedback setzt. So ist auch eine Partikel-Partikel-Interaktion mit über 200.000 Partikeln ist kein Problem.
 +
 +
'''Extensions:'''<br>
 +
[[GL_EXT_geometry_shader4]]<br>
 +
[[GL_NV_transform_feedback]]<br>
 +
[[GL_EXT_gpu_shader4]]<br>
 +
[[GL_EXT_texture_buffer_object]]<br>
 +
[[GL_ARB_texture_float]]<br>
 +
[[GL_EXT_texture_integer]]
 
|-
 
|-
 
| {{TableHead}}  | [[shader_Zufallsgenerator|Pseudozufallsgenerator]] von [[Benutzer:Coolcat|Coolcat]]
 
| {{TableHead}}  | [[shader_Zufallsgenerator|Pseudozufallsgenerator]] von [[Benutzer:Coolcat|Coolcat]]

Version vom 5. Januar 2010, 14:28 Uhr

Info DGL.png Dies ist ein Entwurf für eine übersichtlichere Shadersammlung.

Was sind Shader?

Die traditionelle Funktionspipeline der OpenGL ist sehr beschränkt, neuere Algorithmen erfordern eine viel höhere Flexibilität. Shader sind kleine Programme die es erlauben Teile der Funktionspipeline völlig frei zu programmieren. Dies bietet völlig neue Möglichkeiten. Auf der einen Seite sind Shader für Einsteiger eine gewisse Hürde, auf der anderen Seite können sie viele Dinge aber auch enorm vereinfachen. Aus diesem Grund wurde in OpenGL 3.1 sowie OpenGL ES 2.0 wurde die feste Funktionspipeline entfernt, so dass Shader dort verpflichtend sind.

Der Artikel Shader gibt einen ausführlichen Überblick zum Thema sowie eine Linksammlung für den Einstieg.

Vorlage

Die Shadersammlung braucht deine Hilfe um zu wachsen. Wenn du einen Shader bereitstellen könntest wäre dies ein toller Dienst für die Community.

Falls du einen Shader bereitstellen möchtest lese bitte das Folgende kurze HowTo:

  1. Erstelle mit Hilfe der Shaderartikelvorlage einen neuen Artikel. Der Artikelname sollte mit dem Präfix shader_ beginnen, z.B. shader_Wasser2d für einen 2D Wassershader.
  2. Da Shader zu 90% optische Effekte bewirken, sollte (mindestens) ein aussagekräftiges Beispielbild im Shaderartikel hinterlegt werden. Eines der Bilder sollte dann auch hier in der Liste verlinkt werden.
  3. Füge deinen Shader in die Shadersammlung ein. Verwende dazu dieses Template:
    |-
    | {{TableHead}} | [[shader_Wasser2d|2D Wassershader]] von [[Benutzer:DeinName|DeinName]]
    | {{Table150R2}} | [[Bild:Wassershader2D.jpg|150px|150px]]
    |-
    | {{TableCell}} | Einige Sätze zur Beschreibung des Shaders.

      '''Extensions:'''<br>
      Liste von notwendigen Extensions.
    |-
  4. Keine Angst, es muss nicht alles auf Anhieb perfekt sein.

Falls du Fragen oder Probleme mit der Vorlage hast, im DGL-Chat oder Forum hilft man immer gerne.

Shader

GLSL-Shader

Verysimple von damadmax (kein Bild vorhanden)
Ein einfacher Shader, welcher eine Textur an Vertices bindet. Dieser Shader baut damit das Standardverhalten der festen Pipeline nach.
Sepia-Shader von Markus shader sepia nachher.jpg
Post-Processing-Shader, welcher einen Sepia-Farbfilter auf die Szene anwendet.
Radial Blur von Markus shader radial blur nachher.jpg
Post-Processing-Shader, welcher die Szene ausgehend vom Mittelpunkt verwischt.
Blur-Shader von Skeptiker und Coolcat Shader blur seerose blured small.jpg
Post-Processing-Shader, welcher die Szene insgesamt verwischt. Dieser Shader kann beispielsweise genutzt werden um einen Glow-Effekt zu erreichen.
Per Pixel-Beleuchtung von Ireyon shader ppl.png
Shader, der Per Pixel beleuchtet.
Per Pixel-Beleuchtung2 von Olee PPLShader.jpg
Beleuchtet Flächen nach Pixeln anstatt wie OpenGl-Licht je Vertex. Erlaubt unendlich weit entferntes Licht und beachtet glFog.
Heightmap-Terrain von Coolcat Terrain.jpg
Shader für ein Heightmap-Terrain der ShaderModel 4.0 Features nutzt. Das Terrain wird zur Laufzeit fast vollständig aus der Heightmap generiert, was ordentlich Speicherplatz spart.

Extensions:
GL_EXT_gpu_shader4

Instancing-Shader von Coolcat shader Instancing.jpg
Dieser Shader zeigt die Benutzung von GL_ARB_draw_instanced. Ein häufiger Anwendungsfall ist das rendern vieler gleichartiger Objekte. Die Extension beschleunigt derartige Anwendungen, in dem die Anzahl der API-Aufrufe und die Menge redundanter Daten reduziert wird.

Extensions:
GL_ARB_draw_instanced
GL_EXT_gpu_shader4
GL_EXT_texture_buffer_object
GL_ARB_texture_float

GPU Partikelsystem von Coolcat Partikel-Gravitation.jpg
Ein GPU-Partikelsystem welches insbesondere auf SM4 Features wie Geometryshader und Transform-Feedback setzt. So ist auch eine Partikel-Partikel-Interaktion mit über 200.000 Partikeln ist kein Problem.

Extensions:
GL_EXT_geometry_shader4
GL_NV_transform_feedback
GL_EXT_gpu_shader4
GL_EXT_texture_buffer_object
GL_ARB_texture_float
GL_EXT_texture_integer

Pseudozufallsgenerator von Coolcat shader Zufallsgenerator.png
Generierung von Pseudozufallszahlen im Shader mit GL_EXT_gpu_shader4. Außerdem eine Beispielanwendung: Ein reproduzierbares pesudozufälliges Verwirbelfeld für ein GPU-Partikelsystem.

Extensions:
GL_EXT_gpu_shader4

Game of Life von dj3hut1 Game of life s.png
Simuliert das altbekannte 'Game of Life' im Shader.
Tesselation-Shader von dj3hut1 Tesselation s.png
Dieser Shader nutzt einen Geometry Shader um ein Dreieck zu tesselieren.

Extensions:
GL_ARB_geometry_shader4

Normal Debugging-Shader von dj3hut1 Normal debug s.png
Nützlicher Shader um ohne viel Aufwand die Normalen eines Modells anzuzeigen.

Extensions:
GL_ARB_geometry_shader4

ARB-Shader

Surface Scattering von dj3hut1 Scattering s.jpg
Der Shader bestimmt die Distanz, die Licht durch ein Material zurücklegt. Auf diese Weise wird die Lichtdurchlässigkeit bestimmt.
Texturing von dj3hut1 Texarb textured s.png
Demonstriert eine einfache Texturierung.
Phong per Pixel von dj3hut1 Phong arb s.png
Per-Pixel-Beleuchtung.

Cg-Shader

Diffuse Bumpmapping von igel457 shader diffuse bumpmapping cg.jpg
Wendet diffuses Bumpmapping auf eine beliebige Oberfläche an.