<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://wiki.delphigl.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Markus</id>
		<title>DGL Wiki - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.delphigl.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Markus"/>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php/Spezial:Beitr%C3%A4ge/Markus"/>
		<updated>2026-04-20T14:42:06Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=24479</id>
		<title>Shadersammlung</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=24479"/>
				<updated>2010-01-06T14:49:38Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: Radial Blur Zusammenfassung verändert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die DGL Shadersammlung soll euch helfen Shader für OpenGL zu finden. &lt;br /&gt;
&lt;br /&gt;
=Organisation=&lt;br /&gt;
==Aufbau==&lt;br /&gt;
Für den Anfang wird die Shadersammlung nicht gegliedert. Mit wachsender Anzahl der verlinkten Shader wird sich dies ändern.&lt;br /&gt;
{{Hinweis|Die Shadersammlung braucht eure Hilfe um zu wachsen. Wenn ihr Shader bereitstellen könntet wäre dies ein toller Dienst für die Community.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''The shader collection is still in an early phase. If you can publish one of your shaders here, this would be a great thing for the community.''}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vorlage==&lt;br /&gt;
Falls ihr einen Shader bereitstellen wollt sind drei Dinge nötig:&lt;br /&gt;
# Kopiert die nachfolgende Vorlage ans Ende der Shaderliste und tragt die passenden Daten ein.&lt;br /&gt;
# Erstellt einen neuen Shaderartikel den ihr in der eingefügten Zeile verlinkt. Benutzt dazu die [[Shaderartikelvorlage]]. Shaderartikel müssen mit '''shader_''' benannt sein. ''z.B. shader_Wasser2d'' für einen 2D Wassershader.&lt;br /&gt;
# Da Shader zu 90% optische Effekte bewirken, sollte (mindestens) ein aussagekräftiges Beispielbild im Shaderartikel hinterlegt werden. Das Bild muss dann auch hier in der Liste verlinkt werden.&lt;br /&gt;
&lt;br /&gt;
Fügt folgenden Code ans Ende der Shaderliste an:&lt;br /&gt;
 !&amp;lt;nowiki&amp;gt;[[shader_HierNameEintragen]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 !HierNameEintragen&lt;br /&gt;
 !Autorname&lt;br /&gt;
 !Was macht der Shader.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ''What does the shader do.''*&lt;br /&gt;
 !&amp;lt;nowiki&amp;gt;[[Bild:Beispielbild.jpg|150px|150px]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''* Die englische Beschreibung ist freiwillig. Hilft aber bestimmt den Shader zu verbreiten. Die deutsche Beschreibung ist Pflicht.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für euren neuen Shaderartikel sollte diese [[Shaderartikelvorlage]] benutzt werden. (Vorlage aufrufen, bearbeiten klicken, Alles kopieren und in euren neuen Shaderartikel einfügen.)&lt;br /&gt;
&lt;br /&gt;
=Shader=&lt;br /&gt;
== ARB-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_surface_scattering(ARB)|shader_surface_scattering]]&lt;br /&gt;
!surface scattering&lt;br /&gt;
!dj3hut1 &lt;br /&gt;
!Bestimmt die Distanz, die Licht durch ein Material zurücklegt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Calculates the distance of light through a material.''&lt;br /&gt;
![[Bild:Scattering_s.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_texturing(ARB)|shader_texturing]]&lt;br /&gt;
!texturing&lt;br /&gt;
!dj3hut1 &lt;br /&gt;
!Demonstriert eine einfache Texturierung.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Demonstrates a simple texturing.''&lt;br /&gt;
![[Bild:Texarb_textured_s.png|166px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_phong_per_pixel(ARB)|shader_phong_per_pixel]]&lt;br /&gt;
!phong lighting per pixel&lt;br /&gt;
!dj3hut1 &lt;br /&gt;
!Per-Pixel-Beleuchtung.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Per-pixel-lighting.''&lt;br /&gt;
![[Bild:Phong_arb_s.png|150px|150px]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== GLSL-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_verysimple]]&lt;br /&gt;
!verysimple&lt;br /&gt;
(standard texture binding)&lt;br /&gt;
!damadmax &lt;br /&gt;
!Ein einfacher Shader, welcher eine Textur an Vertices bindet. Dieser Shader baut damit das standard Texturierungsverhalten der fixen Pipeline nach.&amp;lt;br&amp;gt;&lt;br /&gt;
''A very simple shader. It only binds a texture on some vertices, thus this shader simulates the standard behavior of a part of the fixed pipeline.''&lt;br /&gt;
!''Kein Bild vorhanden''&lt;br /&gt;
|-&lt;br /&gt;
![[shader_sepia]]&lt;br /&gt;
!Sepia&lt;br /&gt;
!Markus&lt;br /&gt;
!Post-Processing-Shader, welcher einen Sepia-Farbfilter auf die Szene anwendet.&amp;lt;br&amp;gt;&lt;br /&gt;
''Post-Processing-Shader which applies a sepia color filter to the scene.'' &lt;br /&gt;
![[Bild:shader_sepia_nachher.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_radial_blur]]&lt;br /&gt;
!Radial Blur&lt;br /&gt;
!Markus&lt;br /&gt;
!Post-Processing-Shader, welcher die Szene ausgehend von einem beliebigen Punkt verwischt.&amp;lt;br&amp;gt;&lt;br /&gt;
''Post-Processing-Shader which applies a radial blur to the scene.'' &lt;br /&gt;
![[Bild:shader_radial_blur_nachher.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_blur2]]&lt;br /&gt;
!Blur-Shader&lt;br /&gt;
!Skeptiker/Coolcat &lt;br /&gt;
!Post-Processing-Shader, welcher die Szene insgesamt verwischt.&amp;lt;br&amp;gt;&lt;br /&gt;
''Post-Processing-Shader which applies a blur-effect to the scene.'' &lt;br /&gt;
![[Bild:Shader_blur_seerose_blured_small.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_PerPixelLighting]]&lt;br /&gt;
!Per Pixel-Beleuchtung&lt;br /&gt;
!Ireyon&lt;br /&gt;
!Shader, der Per Pixel beleuchtet&amp;lt;br&amp;gt;&lt;br /&gt;
''Shader which calculates lighting per pixel''&lt;br /&gt;
![[Bild:shader_ppl.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_PerPixel_Lighting2]]&lt;br /&gt;
!Per-Pixel-Lighting Shader&lt;br /&gt;
!Olee&lt;br /&gt;
!Beleuchtet Flächen nach Pixeln anstatt wie OpenGl-Licht je Vertex. Erlaubt unendlich weit entferntes Licht und beachtet [[glFog]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Iluminates faces per pixel istead of OpenGl-Lighting per Vertex. Allows infinite distance to the light and [[glFog]].'' &lt;br /&gt;
![[Bild:PPLShader.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_Terrain_GPU4]]&lt;br /&gt;
!Heightmap-Terrain&lt;br /&gt;
!Coolcat&lt;br /&gt;
!Shader für ein Heightmap-Terrain, benutzt [[GL_EXT_gpu_shader4]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Shader for Heightmap-Terrain, uses [[GL_EXT_gpu_shader4]]''&lt;br /&gt;
![[Bild:Terrain.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_Zufallsgenerator]]&lt;br /&gt;
!Pseudozufallsgenerator,&amp;lt;br&amp;gt;Zufallswirbelfeld für Partikel&lt;br /&gt;
!Coolcat&lt;br /&gt;
!Pseudozufallszahlen im Shader mit [[GL_EXT_gpu_shader4]].&amp;lt;br&amp;gt;&lt;br /&gt;
''Pseudo random numbers in the Shader using [[GL_EXT_gpu_shader4]] and a random turbulence field for particles.''&lt;br /&gt;
![[Bild:shader_Zufallsgenerator.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_game_of_life]]&lt;br /&gt;
!game of life&lt;br /&gt;
!dj3hut1 &lt;br /&gt;
!Simuliert das altbekannte 'Game of Life'.&amp;lt;br&amp;gt;&lt;br /&gt;
''Simulates the well-known 'Game of Life'.''&lt;br /&gt;
![[Bild:Game_of_life_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_Instancing]]&lt;br /&gt;
!Instancing&lt;br /&gt;
!Coolcat&lt;br /&gt;
!Benutzung von [[GL_ARB_draw_instanced]]&amp;lt;br&amp;gt;&lt;br /&gt;
''Usage of [[GL_ARB_draw_instanced]]''&lt;br /&gt;
![[Bild:shader_Instancing.jpg|150px|150px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mit Geometry-Shader ===&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_tesselation]]&lt;br /&gt;
!tesselation&lt;br /&gt;
!dj3hut1 &lt;br /&gt;
!Tesseliert ein Dreieck.&amp;lt;br&amp;gt;&lt;br /&gt;
''Tesselates a triangle.''&lt;br /&gt;
![[Bild:Tesselation_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_normal_debug]]&lt;br /&gt;
!normal debugging&lt;br /&gt;
!dj3hut1 &lt;br /&gt;
!Nützlicher Shader um ohne viel Aufwand die Normalen eines Modells anzuzeigen.&amp;lt;br&amp;gt;&lt;br /&gt;
''Useful shader to show the normals of a model without much effort.''&lt;br /&gt;
![[Bild:Normal_debug_s.png|113px|150px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Cg-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_diffuse_bumpmapping(Cg)|diffuse_bumpmapping]]&lt;br /&gt;
!diffuse_bumpmapping&lt;br /&gt;
!igel457&lt;br /&gt;
!Wendet diffuses Bumpmapping auf eine beliebige Oberfläche an.&amp;lt;br&amp;gt;&lt;br /&gt;
''Applies diffuse bumpmapping to a surface.''&lt;br /&gt;
![[Bild:shader_diffuse_bumpmapping_cg.jpg|150px|150px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Benutzer:Coolcat/Shadersammlung&amp;diff=24478</id>
		<title>Benutzer:Coolcat/Shadersammlung</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Benutzer:Coolcat/Shadersammlung&amp;diff=24478"/>
				<updated>2010-01-06T14:48:52Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: Radial Blur Zusammenfassung verändert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Dies ist ein Entwurf für eine übersichtlichere [[Shadersammlung]].}}&lt;br /&gt;
&lt;br /&gt;
==Was sind Shader?==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Der Artikel [[Shader]] gibt einen ausführlichen Überblick zum Thema sowie eine [[Shader#Wie_geht_es_nun_weiter.3F|Linksammlung]] für den Einstieg.&lt;br /&gt;
&lt;br /&gt;
==Vorlage==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Falls du einen Shader bereitstellen möchtest lese bitte das Folgende kurze HowTo:&lt;br /&gt;
# Erstelle mit Hilfe der [[Shaderartikelvorlage]] einen neuen Artikel. Der Artikelname sollte mit dem Präfix &amp;lt;tt&amp;gt;shader_&amp;lt;/tt&amp;gt; beginnen, z.B. &amp;lt;tt&amp;gt;shader_Wasser2d&amp;lt;/tt&amp;gt; für einen 2D Wassershader.&lt;br /&gt;
# 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.&lt;br /&gt;
# Füge deinen Shader in die Shadersammlung ein. Verwende dazu dieses Template:&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; |-&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; | &amp;lt;nowiki&amp;gt;{{TableHead}}  | [[shader_Wasser2d|2D Wassershader]] von [[Benutzer:DeinName|DeinName]]&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; | &amp;lt;nowiki&amp;gt;{{Table150R2}} | [[Bild:Wassershader2D.jpg|150px|150px]]&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; |-&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; | &amp;lt;nowiki&amp;gt;{{TableCell}}&amp;lt;/nowiki&amp;gt;  | Einige Sätze zur Beschreibung des Shaders.&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;&amp;amp;nbsp; &amp;lt;nowiki&amp;gt;'''Extensions:'''&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;&amp;amp;nbsp; Liste von notwendigen Extensions.&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; |-&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Keine Angst, es muss nicht alles auf Anhieb perfekt sein.&lt;br /&gt;
&lt;br /&gt;
Falls du Fragen oder Probleme mit der Vorlage hast, im [[DGL-Chat]] oder [http://www.delphigl.com/forum/ Forum] hilft man immer gerne.&lt;br /&gt;
&lt;br /&gt;
==Schwierigkeitsgrad==&lt;br /&gt;
Es ist nicht leicht einen Schwierigkeitsgrad für Shader anzugeben, trotzdem haben wir dies einmal versucht. Der Schwierigkeitsgrad kann zumindest für Einsteiger einen groben Hinweis geben was man sich vielleicht mal anschauen könnte.&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;margin-left:50px;&amp;quot;&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|1}}&lt;br /&gt;
| Der Shader ist für Einsteiger geeignet. Um den Shader herum wird keine zusätzliche Infrastruktur benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|2}}&lt;br /&gt;
| Der Shader ist für Einsteiger geeignet, benötigt aber etwas zusätzliche Infrastruktur. Etwa benötigt ein Post-Processing-Shader ein FrameBufferObject, für Bumpmapping wird eine Normalmap benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|3}}&lt;br /&gt;
| Mittlerer Schwierigkeitsgrad. Der Shader ist etwas komplizierter und/oder benötigt viel zusätzliche Infrastruktur.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|4}}&lt;br /&gt;
| Hoher Schwierigkeitsgrad. Der Shader ist kompliziert und/oder verwendet intensiv Extensions.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|5}}&lt;br /&gt;
| Extremer Schwierigkeitsgrad...alles was es sonst noch gibt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Shader==&lt;br /&gt;
===GLSL-Shader===&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_verysimple|Verysimple]] von [[Benutzer:damadmax|damadmax]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} style=&amp;quot;text-align:center;&amp;quot; | (kein Bild vorhanden)&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Ein einfacher Shader, welcher eine Textur an Vertices bindet. Dieser Shader baut damit das Standardverhalten der festen Pipeline nach. {{ShaderLink|shader_verysimple}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_sepia|Sepia-Shader]] von [[Benutzer:Markus|Markus]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_sepia_nachher.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Post-Processing-Shader, welcher einen Sepia-Farbfilter auf die Szene anwendet. {{ShaderLink|shader_sepia}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_radial_blur|Radial Blur]] von [[Benutzer:Markus|Markus]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_radial_blur_nachher.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Post-Processing-Shader, welcher die Szene ausgehend von einem beliebigen Punkt verwischt. {{ShaderLink|shader_radial_blur}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_blur2|Blur-Shader]] von [[Benutzer:Skeptiker|Skeptiker]] und [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Shader_blur_seerose_blured_small.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Post-Processing-Shader, welcher die Szene insgesamt verwischt. Dieser Shader kann beispielsweise genutzt werden um einen Glow-Effekt zu erreichen. {{ShaderLink|shader_blur2}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_PerPixelLighting|Per Pixel-Beleuchtung]] von [[Benutzer:Ireyon|Ireyon]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_ppl.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Shader, der Per Pixel beleuchtet. {{ShaderLink|shader_PerPixelLighting}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_PerPixel_Lighting2|Per Pixel-Beleuchtung2]] von [[Benutzer:Olee|Olee]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:PPLShader.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Beleuchtet Flächen nach Pixeln anstatt wie OpenGl-Licht je Vertex. Erlaubt unendlich weit entferntes Licht und beachtet [[glFog]]. {{ShaderLink|shader_PerPixel_Lighting2}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Terrain_GPU4|Heightmap-Terrain]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Terrain.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | 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. {{ShaderLink|shader_Terrain_GPU4}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Instancing|Instancing-Shader]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_Instancing.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | 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. {{ShaderLink|shader_Instancing}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_draw_instanced]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_texture_buffer_object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_texture_float]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[GLSL_Partikel_2|GPU Partikelsystem]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|5}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Partikel-Gravitation.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{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. {{ShaderLink|GLSL_Partikel_2}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_geometry_shader4]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_NV_transform_feedback]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_texture_buffer_object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_texture_float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_texture_integer]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Zufallsgenerator|Pseudozufallsgenerator]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_Zufallsgenerator.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Generierung von Pseudozufallszahlen im Shader mit [[GL_EXT_gpu_shader4]]. Außerdem eine Beispielanwendung: Ein reproduzierbares pesudozufälliges Verwirbelfeld für ein GPU-Partikelsystem. {{ShaderLink|shader_Zufallsgenerator}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_game_of_life|Game of Life]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Game_of_life_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Simuliert das altbekannte 'Game of Life' im Shader. {{ShaderLink|shader_game_of_life}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_tesselation|Tesselation-Shader]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Tesselation_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Dieser Shader nutzt einen Geometry Shader um ein Dreieck zu tesselieren. {{ShaderLink|shader_tesselation}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_geometry_shader4]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_normal_debug|Normal Debugging-Shader]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Normal_debug_s.png|113px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Nützlicher Shader um ohne viel Aufwand die Normalen eines Modells anzuzeigen. {{ShaderLink|shader_normal_debug}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_geometry_shader4]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ARB-Shader===&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_surface_scattering(ARB)|Surface Scattering]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Scattering_s.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Der Shader bestimmt die Distanz, die Licht durch ein Material zurücklegt. Auf diese Weise wird die Lichtdurchlässigkeit bestimmt. {{ShaderLink|shader_surface_scattering(ARB)}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_texturing(ARB)|Texturing]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Texarb_textured_s.png|166px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Demonstriert eine einfache Texturierung. {{ShaderLink|shader_texturing(ARB)}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_phong_per_pixel(ARB)|Phong per Pixel]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Phong_arb_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Per-Pixel-Beleuchtung. {{ShaderLink|shader_phong_per_pixel(ARB)}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Cg-Shader===&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_diffuse_bumpmapping(Cg)|Diffuse Bumpmapping]] von [[Benutzer:igel457|igel457]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_diffuse_bumpmapping_cg.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Wendet diffuses Bumpmapping auf eine beliebige Oberfläche an. {{ShaderLink|shader_diffuse_bumpmapping(Cg)}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24477</id>
		<title>shader radial blur</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24477"/>
				<updated>2010-01-06T14:48:09Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: Beschreibung angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Radial Blur=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Post-Processing-Shader, welcher die Szene ausgehend von einem beliebigen Punkt verwischt.&lt;br /&gt;
|Markus&lt;br /&gt;
|1.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:shader_radial_blur_vorher.jpg|framed|Vorher]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Bild:shader_radial_blur_nachher.jpg|framed|Nachher]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader verwischt die Szene ausgehend vom Mittelpunkt des Bildes.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Folgende Uniform-Variablen werden verwendet:&lt;br /&gt;
{|{{Prettytable_B1}} &lt;br /&gt;
!width=20%|Variable&lt;br /&gt;
!width=80%|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_blur''&lt;br /&gt;
|ändert die Stärke des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_bright''&lt;br /&gt;
|ändert die Stärke der Helligkeitsänderung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_origin''&lt;br /&gt;
|ändert den Ausgangspunkt des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_size''&lt;br /&gt;
|muss die Größe eines Texels der Textur der Szene haben &amp;lt;br&amp;gt;bei einer Auflösung von 1280x1024 Pixeln: vec2(1.0 / 1280.0, 1 / 1024.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die ''Texture''-Variable muss nur geändert werden, wenn sich die Szenentextur nicht im ersten Texturslot befindet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man einen Explosionseffekt wie im Bild weiter oben erreichen möchte, kann man ''radial_blur'' und ''radial_bright'' mit einer Sinusfunktion über mehrere Frames verändern.&lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Da es sich um einen Post-Processing-Shader handelt, muss die Szene zuvor in eine Textur gerendert werden. Hier bieten sich FrameBufferObjects an, welche jedoch&lt;br /&gt;
nicht von alten Grafikkarten unterstützt werden. Optional kann man auch glCopyTexSubImage2D verwenden. Um nun den Blur-Filter auf die Szene anzuwenden, muss man&lt;br /&gt;
die zuvor erstellte Textur der Szene binden. Danach wird der Shader aktiviert und ein Quad mit der Größe des Viewports gezeichnet. &lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertex Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
// RadialBlur - Shader&lt;br /&gt;
&lt;br /&gt;
uniform sampler2D Texture;   // scene texture&lt;br /&gt;
uniform vec2 radial_size;    // texel size&lt;br /&gt;
&lt;br /&gt;
uniform float radial_blur;   // blur factor&lt;br /&gt;
uniform float radial_bright; // bright factor&lt;br /&gt;
&lt;br /&gt;
uniform vec2 radial_origin;  // blur origin&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
  vec2 TexCoord = vec2(gl_TexCoord[0]);&lt;br /&gt;
&lt;br /&gt;
  vec4 SumColor = vec4(0.0, 0.0, 0.0, 0.0);&lt;br /&gt;
  TexCoord += radial_size * 0.5 - radial_origin;&lt;br /&gt;
&lt;br /&gt;
  for (int i = 0; i &amp;lt; 12; i++) &lt;br /&gt;
  {&lt;br /&gt;
    float scale = 1.0 - radial_blur * (float(i) / 11.0);&lt;br /&gt;
    SumColor += texture2D(Texture, TexCoord * scale + radial_origin);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gl_FragColor = SumColor / 12.0 * radial_bright;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24476</id>
		<title>shader radial blur</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24476"/>
				<updated>2010-01-06T14:47:09Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: Beschreibung angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Radial Blur=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Post-Processing-Shader, welcher die Szene ausgehend vom einem beliebigen Punkt verwischt.&lt;br /&gt;
|Markus&lt;br /&gt;
|1.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:shader_radial_blur_vorher.jpg|framed|Vorher]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Bild:shader_radial_blur_nachher.jpg|framed|Nachher]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader verwischt die Szene ausgehend vom Mittelpunkt des Bildes.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Folgende Uniform-Variablen werden verwendet:&lt;br /&gt;
{|{{Prettytable_B1}} &lt;br /&gt;
!width=20%|Variable&lt;br /&gt;
!width=80%|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_blur''&lt;br /&gt;
|ändert die Stärke des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_bright''&lt;br /&gt;
|ändert die Stärke der Helligkeitsänderung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_origin''&lt;br /&gt;
|ändert den Ausgangspunkt des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_size''&lt;br /&gt;
|muss die Größe eines Texels der Textur der Szene haben &amp;lt;br&amp;gt;bei einer Auflösung von 1280x1024 Pixeln: vec2(1.0 / 1280.0, 1 / 1024.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die ''Texture''-Variable muss nur geändert werden, wenn sich die Szenentextur nicht im ersten Texturslot befindet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man einen Explosionseffekt wie im Bild weiter oben erreichen möchte, kann man ''radial_blur'' und ''radial_bright'' mit einer Sinusfunktion über mehrere Frames verändern.&lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Da es sich um einen Post-Processing-Shader handelt, muss die Szene zuvor in eine Textur gerendert werden. Hier bieten sich FrameBufferObjects an, welche jedoch&lt;br /&gt;
nicht von alten Grafikkarten unterstützt werden. Optional kann man auch glCopyTexSubImage2D verwenden. Um nun den Blur-Filter auf die Szene anzuwenden, muss man&lt;br /&gt;
die zuvor erstellte Textur der Szene binden. Danach wird der Shader aktiviert und ein Quad mit der Größe des Viewports gezeichnet. &lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertex Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
// RadialBlur - Shader&lt;br /&gt;
&lt;br /&gt;
uniform sampler2D Texture;   // scene texture&lt;br /&gt;
uniform vec2 radial_size;    // texel size&lt;br /&gt;
&lt;br /&gt;
uniform float radial_blur;   // blur factor&lt;br /&gt;
uniform float radial_bright; // bright factor&lt;br /&gt;
&lt;br /&gt;
uniform vec2 radial_origin;  // blur origin&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
  vec2 TexCoord = vec2(gl_TexCoord[0]);&lt;br /&gt;
&lt;br /&gt;
  vec4 SumColor = vec4(0.0, 0.0, 0.0, 0.0);&lt;br /&gt;
  TexCoord += radial_size * 0.5 - radial_origin;&lt;br /&gt;
&lt;br /&gt;
  for (int i = 0; i &amp;lt; 12; i++) &lt;br /&gt;
  {&lt;br /&gt;
    float scale = 1.0 - radial_blur * (float(i) / 11.0);&lt;br /&gt;
    SumColor += texture2D(Texture, TexCoord * scale + radial_origin);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gl_FragColor = SumColor / 12.0 * radial_bright;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24475</id>
		<title>shader radial blur</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24475"/>
				<updated>2010-01-06T14:43:50Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Radial Blur=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Post-Processing-Shader, welcher die Szene ausgehend vom Mittelpunkt verwischt.&lt;br /&gt;
|Markus&lt;br /&gt;
|1.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:shader_radial_blur_vorher.jpg|framed|Vorher]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Bild:shader_radial_blur_nachher.jpg|framed|Nachher]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader verwischt die Szene ausgehend vom Mittelpunkt des Bildes.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Folgende Uniform-Variablen werden verwendet:&lt;br /&gt;
{|{{Prettytable_B1}} &lt;br /&gt;
!width=20%|Variable&lt;br /&gt;
!width=80%|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_blur''&lt;br /&gt;
|ändert die Stärke des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_bright''&lt;br /&gt;
|ändert die Stärke der Helligkeitsänderung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_origin''&lt;br /&gt;
|ändert den Ausgangspunkt des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_size''&lt;br /&gt;
|muss die Größe eines Texels der Textur der Szene haben &amp;lt;br&amp;gt;bei einer Auflösung von 1280x1024 Pixeln: vec2(1.0 / 1280.0, 1 / 1024.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die ''Texture''-Variable muss nur geändert werden, wenn sich die Szenentextur nicht im ersten Texturslot befindet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man einen Explosionseffekt wie im Bild weiter oben erreichen möchte, kann man ''radial_blur'' und ''radial_bright'' mit einer Sinusfunktion über mehrere Frames verändern.&lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Da es sich um einen Post-Processing-Shader handelt, muss die Szene zuvor in eine Textur gerendert werden. Hier bieten sich FrameBufferObjects an, welche jedoch&lt;br /&gt;
nicht von alten Grafikkarten unterstützt werden. Optional kann man auch glCopyTexSubImage2D verwenden. Um nun den Blur-Filter auf die Szene anzuwenden, muss man&lt;br /&gt;
die zuvor erstellte Textur der Szene binden. Danach wird der Shader aktiviert und ein Quad mit der Größe des Viewports gezeichnet. &lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertex Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
// RadialBlur - Shader&lt;br /&gt;
&lt;br /&gt;
uniform sampler2D Texture;   // scene texture&lt;br /&gt;
uniform vec2 radial_size;    // texel size&lt;br /&gt;
&lt;br /&gt;
uniform float radial_blur;   // blur factor&lt;br /&gt;
uniform float radial_bright; // bright factor&lt;br /&gt;
&lt;br /&gt;
uniform vec2 radial_origin;  // blur origin&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
  vec2 TexCoord = vec2(gl_TexCoord[0]);&lt;br /&gt;
&lt;br /&gt;
  vec4 SumColor = vec4(0.0, 0.0, 0.0, 0.0);&lt;br /&gt;
  TexCoord += radial_size * 0.5 - radial_origin;&lt;br /&gt;
&lt;br /&gt;
  for (int i = 0; i &amp;lt; 12; i++) &lt;br /&gt;
  {&lt;br /&gt;
    float scale = 1.0 - radial_blur * (float(i) / 11.0);&lt;br /&gt;
    SumColor += texture2D(Texture, TexCoord * scale + radial_origin);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gl_FragColor = SumColor / 12.0 * radial_bright;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24474</id>
		<title>shader radial blur</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24474"/>
				<updated>2010-01-06T14:42:18Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: Neue Version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Radial Blur=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Post-Processing-Shader, welcher die Szene ausgehend vom Mittelpunkt verwischt.&lt;br /&gt;
|Markus&lt;br /&gt;
|1.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:shader_radial_blur_vorher.jpg|framed|Vorher]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Bild:shader_radial_blur_nachher.jpg|framed|Nachher]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader verwischt die Szene ausgehend vom Mittelpunkt des Bildes.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Folgende Uniform-Variablen werden verwendet:&lt;br /&gt;
{|{{Prettytable_B1}} &lt;br /&gt;
!width=20%|Variable&lt;br /&gt;
!width=80%|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_blur''&lt;br /&gt;
|ändert die Stärke des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_bright''&lt;br /&gt;
|ändert die Stärke der Helligkeitsänderung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_origin''&lt;br /&gt;
|ändert den Ausgangspunkt des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_size''&lt;br /&gt;
|muss die Größe eines Texels der Textur der Szene haben &amp;lt;br&amp;gt;bei einer Auflösung von 1280x1024 Pixeln: vec2(1.0 / 1280.0, 1 / 1024.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die ''Texture''-Variable muss nur geändert werden, wenn sich die Szenentextur nicht im ersten Texturslot befindet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man einen Explosionseffekt wie im Bild weiter oben erreichen möchte, kann man ''radial_blur'' und ''radial_bright'' mit einer Sinusfunktion über mehrere Frames verändern.&lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Da es sich um einen Post-Processing-Shader handelt, muss die Szene zuvor in eine Textur gerendert werden. Hier bieten sich FrameBufferObjects an, welche jedoch&lt;br /&gt;
nicht von alten Grafikkarten unterstützt werden. Optional kann man auch glCopyTexSubImage2D verwenden. Um nun den Farbfilter auf die Szene anzuwenden, muss man&lt;br /&gt;
die zuvor erstellte Textur binden (die Texturstufe muss dem Shader normalerweise nicht mitgeteilt werden, da TMU0 standard ist). Danach wird der Shader aktiviert und ein Quad&lt;br /&gt;
mit der Größe des Viewports gezeichnet. &lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertex Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
// RadialBlur - Shader&lt;br /&gt;
&lt;br /&gt;
uniform sampler2D Texture;   // scene texture&lt;br /&gt;
uniform vec2 radial_size;    // texel size&lt;br /&gt;
&lt;br /&gt;
uniform float radial_blur;   // blur factor&lt;br /&gt;
uniform float radial_bright; // bright factor&lt;br /&gt;
&lt;br /&gt;
uniform vec2 radial_origin;  // blur origin&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
  vec2 TexCoord = vec2(gl_TexCoord[0]);&lt;br /&gt;
&lt;br /&gt;
  vec4 SumColor = vec4(0.0, 0.0, 0.0, 0.0);&lt;br /&gt;
  TexCoord += radial_size * 0.5 - radial_origin;&lt;br /&gt;
&lt;br /&gt;
  for (int i = 0; i &amp;lt; 12; i++) &lt;br /&gt;
  {&lt;br /&gt;
    float scale = 1.0 - radial_blur * (float(i) / 11.0);&lt;br /&gt;
    SumColor += texture2D(Texture, TexCoord * scale + radial_origin);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gl_FragColor = SumColor / 12.0 * radial_bright;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24473</id>
		<title>shader radial blur</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24473"/>
				<updated>2010-01-06T14:38:36Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Radial Blur=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Post-Processing-Shader, welcher die Szene ausgehend vom Mittelpunkt verwischt.&lt;br /&gt;
|Markus&lt;br /&gt;
|1.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:shader_radial_blur_vorher.jpg|framed|Vorher]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Bild:shader_radial_blur_nachher.jpg|framed|Nachher]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader verwischt die Szene ausgehend vom Mittelpunkt des Bildes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Folgende Uniform-Variablen werden verwendet:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} &lt;br /&gt;
!width=20%|Variable&lt;br /&gt;
!width=80%|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_blur''&lt;br /&gt;
|ändert die Stärke des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_bright''&lt;br /&gt;
|ändert die Stärke der Helligkeitsänderung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_origin''&lt;br /&gt;
|ändert den Ausgangspunkt des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_size''&lt;br /&gt;
|muss die Größe eines Texels der Textur der Szene haben &amp;lt;br&amp;gt;bei einer Auflösung von 1280x1024 Pixeln: vec2(1.0 / 1280.0, 1 / 1024.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die ''Texture'' Variable muss nur geändert werden, wenn sich die Szenentextur nicht im ersten Texturslot befindet.&lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Da es sich um einen Post-Processing-Shader handelt, muss die Szene zuvor in eine Textur gerendert werden. Hier bieten sich FrameBufferObjects an, welche jedoch&lt;br /&gt;
nicht von alten Grafikkarten unterstützt werden. Optional kann man auch glCopyTexSubImage2D verwenden. Um nun den Farbfilter auf die Szene anzuwenden, muss man&lt;br /&gt;
die zuvor erstellte Textur binden (die Texturstufe muss dem Shader normalerweise nicht mitgeteilt werden, da TMU0 standard ist). Danach wird der Shader aktiviert und ein Quad&lt;br /&gt;
mit der Größe des Viewports gezeichnet. &lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertex Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
// RadialBlur - Shader&lt;br /&gt;
&lt;br /&gt;
uniform sampler2D Texture;   // scene texture&lt;br /&gt;
uniform vec2 radial_size;    // texel size&lt;br /&gt;
&lt;br /&gt;
uniform float radial_blur;   // blur factor&lt;br /&gt;
uniform float radial_bright; // bright factor&lt;br /&gt;
&lt;br /&gt;
uniform vec2 radial_origin;  // blur origin&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
  vec2 TexCoord = vec2(gl_TexCoord[0]);&lt;br /&gt;
&lt;br /&gt;
  vec4 SumColor = vec4(0.0, 0.0, 0.0, 0.0);&lt;br /&gt;
  TexCoord += radial_size * 0.5 - radial_origin;&lt;br /&gt;
&lt;br /&gt;
  for (int i = 0; i &amp;lt; 12; i++) &lt;br /&gt;
  {&lt;br /&gt;
    float scale = 1.0 - radial_blur * (float(i) / 11.0);&lt;br /&gt;
    SumColor += texture2D(Texture, TexCoord * scale + radial_origin);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gl_FragColor = SumColor / 12.0 * radial_bright;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24472</id>
		<title>shader radial blur</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24472"/>
				<updated>2010-01-06T14:37:52Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Radial Blur=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Post-Processing-Shader, welcher die Szene ausgehend vom Mittelpunkt verwischt.&lt;br /&gt;
|Markus&lt;br /&gt;
|1.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:shader_radial_blur_vorher.jpg|framed|Vorher]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Bild:shader_radial_blur_nachher.jpg|framed|Nachher]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader verwischt die Szene ausgehend vom Mittelpunkt des Bildes.&lt;br /&gt;
&lt;br /&gt;
Folgende Uniform-Variablen werden verwendet:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} &lt;br /&gt;
!width=20%|Variable&lt;br /&gt;
!width=80%|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_blur''&lt;br /&gt;
|ändert die Stärke des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_bright''&lt;br /&gt;
|ändert die Stärke der Helligkeitsänderung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_origin''&lt;br /&gt;
|ändert den Ausgangspunkt des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_size''&lt;br /&gt;
|muss die Größe eines Texels der Textur der Szene haben &amp;lt;br&amp;gt;bei einer Auflösung von 1280x1024 Pixeln: vec2(1.0 / 1280.0, 1 / 1024.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die ''Texture'' Variable muss nur geändert werden, wenn sich die Szenentextur nicht im ersten Texturslot befindet.&lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Da es sich um einen Post-Processing-Shader handelt, muss die Szene zuvor in eine Textur gerendert werden. Hier bieten sich FrameBufferObjects an, welche jedoch&lt;br /&gt;
nicht von alten Grafikkarten unterstützt werden. Optional kann man auch glCopyTexSubImage2D verwenden. Um nun den Farbfilter auf die Szene anzuwenden, muss man&lt;br /&gt;
die zuvor erstellte Textur binden (die Texturstufe muss dem Shader normalerweise nicht mitgeteilt werden, da TMU0 standard ist). Danach wird der Shader aktiviert und ein Quad&lt;br /&gt;
mit der Größe des Viewports gezeichnet. &lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertex Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
// RadialBlur - Shader&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
uniform sampler2D Texture;   // scene texture&lt;br /&gt;
uniform vec2 radial_size;    // texel size&lt;br /&gt;
&lt;br /&gt;
uniform float radial_blur;   // blur factor&lt;br /&gt;
uniform float radial_bright; // bright factor&lt;br /&gt;
&lt;br /&gt;
uniform vec2 radial_origin;  // blur origin&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
  vec2 TexCoord = vec2(gl_TexCoord[0]);&lt;br /&gt;
&lt;br /&gt;
  vec4 SumColor = vec4(0.0, 0.0, 0.0, 0.0);&lt;br /&gt;
  TexCoord += radial_size * 0.5 - radial_origin;&lt;br /&gt;
&lt;br /&gt;
  for (int i = 0; i &amp;lt; 12; i++) &lt;br /&gt;
  {&lt;br /&gt;
    float scale = 1.0 - radial_blur * (float(i) / 11.0);&lt;br /&gt;
    SumColor += texture2D(Texture, TexCoord * scale + radial_origin);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gl_FragColor = SumColor / 12.0 * radial_bright;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24471</id>
		<title>shader radial blur</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=24471"/>
				<updated>2010-01-06T14:35:27Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Radial Blur=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Post-Processing-Shader, welcher die Szene ausgehend vom Mittelpunkt verwischt.&lt;br /&gt;
|Markus&lt;br /&gt;
|1.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:shader_radial_blur_vorher.jpg|framed|Vorher]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Bild:shader_radial_blur_nachher.jpg|framed|Nachher]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader verwischt die Szene ausgehend vom Mittelpunkt des Bildes.&lt;br /&gt;
&lt;br /&gt;
''radial_blur'' &amp;amp;nbsp;&amp;amp;nbsp;ändert die Stärke des Blurs. &amp;lt;br&amp;gt;&lt;br /&gt;
''radial_bright'' ändert die Stärke der Helligkeitsänderung. &amp;lt;br&amp;gt;&lt;br /&gt;
''radial_origin'' ändert den Ausgangspunkt des Blurs. &amp;lt;br&amp;gt;&lt;br /&gt;
''radial_size'' &amp;amp;nbsp;&amp;amp;nbsp;muss die Größe eines Texels der Textur der Szene haben. (bei einer Auflösung von 1280x1024 Pixeln: vec2(1.0 / 1280.0, 1 / 1024.0))&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} &lt;br /&gt;
!width=20%|Variable&lt;br /&gt;
!width=80%|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_blur''&lt;br /&gt;
|ändert die Stärke des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_bright''&lt;br /&gt;
|ändert die Stärke der Helligkeitsänderung&lt;br /&gt;
|-&lt;br /&gt;
|''radial_origin''&lt;br /&gt;
|ändert den Ausgangspunkt des Blurs&lt;br /&gt;
|-&lt;br /&gt;
|''radial_size''&lt;br /&gt;
|muss die Größe eines Texels der Textur der Szene haben &amp;lt;br&amp;gt;bei einer Auflösung von 1280x1024 Pixeln: vec2(1.0 / 1280.0, 1 / 1024.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Da es sich um einen Post-Processing-Shader handelt, muss die Szene zuvor in eine Textur gerendert werden. Hier bieten sich FrameBufferObjects an, welche jedoch&lt;br /&gt;
nicht von alten Grafikkarten unterstützt werden. Optional kann man auch glCopyTexSubImage2D verwenden. Um nun den Farbfilter auf die Szene anzuwenden, muss man&lt;br /&gt;
die zuvor erstellte Textur binden (die Texturstufe muss dem Shader normalerweise nicht mitgeteilt werden, da TMU0 standard ist). Danach wird der Shader aktiviert und ein Quad&lt;br /&gt;
mit der Größe des Viewports gezeichnet. &lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertex Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
// RadialBlur - Shader&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
uniform sampler2D Texture;   // scene texture&lt;br /&gt;
uniform vec2 radial_size;    // texel size&lt;br /&gt;
&lt;br /&gt;
uniform float radial_blur;   // blur factor&lt;br /&gt;
uniform float radial_bright; // bright factor&lt;br /&gt;
&lt;br /&gt;
uniform vec2 radial_origin;  // blur origin&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
  vec2 TexCoord = vec2(gl_TexCoord[0]);&lt;br /&gt;
&lt;br /&gt;
  vec4 SumColor = vec4(0.0, 0.0, 0.0, 0.0);&lt;br /&gt;
  TexCoord += radial_size * 0.5 - radial_origin;&lt;br /&gt;
&lt;br /&gt;
  for (int i = 0; i &amp;lt; 12; i++) &lt;br /&gt;
  {&lt;br /&gt;
    float scale = 1.0 - radial_blur * (float(i) / 11.0);&lt;br /&gt;
    SumColor += texture2D(Texture, TexCoord * scale + radial_origin);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gl_FragColor = SumColor / 12.0 * radial_bright;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:shader_radial_blur_nachher.jpg&amp;diff=24470</id>
		<title>Datei:shader radial blur nachher.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:shader_radial_blur_nachher.jpg&amp;diff=24470"/>
				<updated>2010-01-06T13:55:42Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: hat eine neue Version von „Datei:shader radial blur nachher.jpg“ hochgeladen:&amp;amp;#32;Neuere Version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:shader_radial_blur_vorher.jpg&amp;diff=24468</id>
		<title>Datei:shader radial blur vorher.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:shader_radial_blur_vorher.jpg&amp;diff=24468"/>
				<updated>2010-01-06T13:54:38Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: hat eine neue Version von „Datei:shader radial blur vorher.jpg“ hochgeladen:&amp;amp;#32;Neuere Version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:shader_radial_blur_nachher.jpg&amp;diff=22205</id>
		<title>Datei:shader radial blur nachher.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:shader_radial_blur_nachher.jpg&amp;diff=22205"/>
				<updated>2008-11-13T15:43:06Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:shader_radial_blur_vorher.jpg&amp;diff=22204</id>
		<title>Datei:shader radial blur vorher.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:shader_radial_blur_vorher.jpg&amp;diff=22204"/>
				<updated>2008-11-13T15:42:48Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=22203</id>
		<title>shader radial blur</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=22203"/>
				<updated>2008-11-13T15:29:54Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Radial Blur=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Post-Processing-Shader, welcher die Szene ausgehend vom Mittelpunkt verwischt.&lt;br /&gt;
|Markus&lt;br /&gt;
|1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:shader_radial_blur_vorher.jpg|framed|Vorher]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Bild:shader_radial_blur_nachher.jpg|framed|Nachher]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader verwischt die Szene ausgehend vom Mittelpunkt des Bildes.&lt;br /&gt;
&lt;br /&gt;
''BlurFactor'' ändert die Stärke des Blurs. &amp;lt;br&amp;gt;&lt;br /&gt;
''BrightFactor'' ändert die Stärke der Helligkeitsänderung. &amp;lt;br&amp;gt;&lt;br /&gt;
''Origin'' ändert den Ausgangspunkt des Blurs. &amp;lt;br&amp;gt;&lt;br /&gt;
''Size'' muss die Größe eines Texels haben. (bei 1600x1200: vec2(1 / 1600, 1 / 1200))&lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Da es sich um einen Post-Processing-Shader handelt, muss die Szene zuvor in eine Textur gerendert werden. Hier bieten sich FrameBufferObjects an, welche jedoch&lt;br /&gt;
nicht von alten Grafikkarten unterstützt werden. Optional kann man auch glCopyTexSubImage2D verwenden. Um nun den Farbfilter auf die Szene anzuwenden, muss man&lt;br /&gt;
die zuvor erstellte Textur binden (die Texturstufe muss dem Shader normalerweise nicht mitgeteilt werden, da TMU0 standard ist). Danach wird der Shader aktiviert und ein Quad&lt;br /&gt;
mit der Größe des Viewports gezeichnet. &lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertex Shader&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
// radial blur&lt;br /&gt;
&lt;br /&gt;
uniform sampler2D Texture;&lt;br /&gt;
&lt;br /&gt;
//texel size&lt;br /&gt;
uniform vec2 Size;&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
  float BlurFactor = 0.05;&lt;br /&gt;
  float BrightFactor = 1.2;&lt;br /&gt;
  vec2 Origin = vec2(0.5, 0.5);&lt;br /&gt;
&lt;br /&gt;
  vec2 TexCoord = vec2(gl_TexCoord[0]);&lt;br /&gt;
&lt;br /&gt;
  vec4 SumColor = vec4(0.0, 0.0, 0.0, 0.0);&lt;br /&gt;
  TexCoord += Size * 0.5 - Origin;&lt;br /&gt;
&lt;br /&gt;
  for (int i = 0; i &amp;lt; 12; i++) &lt;br /&gt;
  {&lt;br /&gt;
    float scale = 1.0 - BlurFactor * (float(i) / 11.0);&lt;br /&gt;
    SumColor += texture2D(Texture, TexCoord * scale + Origin);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gl_FragColor = SumColor / 12.0 * BrightFactor;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=22202</id>
		<title>shader radial blur</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_radial_blur&amp;diff=22202"/>
				<updated>2008-11-13T15:29:05Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: Die Seite wurde neu angelegt: =Radial Blur= Zurück zur Shadersammlung {|{{Prettytable_B1}} width=100% !width=60%|Beschreibung !width=20%|Autor !width=20%|Version |- |Post-Processing-Shader, wel...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Radial Blur=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Post-Processing-Shader, welcher die Szene ausgehend vom Mittelpunkt verwischt.&lt;br /&gt;
|Markus&lt;br /&gt;
|1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:shader_radial_blur_vorher.jpg|framed|Vorher]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Bild:shader_radial_blur_nachher.jpg|framed|Nachher]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader verwischt die Szene ausgehend vom Mittelpunkt des Bildes.&lt;br /&gt;
&lt;br /&gt;
''BlurFactor'' ändert die Stärke des Blurs.&lt;br /&gt;
''BrightFactor'' ändert die Stärke der Helligkeitsänderung.&lt;br /&gt;
''Origin'' ändert den Ausgangspunkt des Blurs.&lt;br /&gt;
''Size'' muss die Größe eines Texels haben. (bei 1600x1200: vec2(1 / 1600, 1 / 1200))&lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Da es sich um einen Post-Processing-Shader handelt, muss die Szene zuvor in eine Textur gerendert werden. Hier bieten sich FrameBufferObjects an, welche jedoch&lt;br /&gt;
nicht von alten Grafikkarten unterstützt werden. Optional kann man auch glCopyTexSubImage2D verwenden. Um nun den Farbfilter auf die Szene anzuwenden, muss man&lt;br /&gt;
die zuvor erstellte Textur binden (die Texturstufe muss dem Shader normalerweise nicht mitgeteilt werden, da TMU0 standard ist). Danach wird der Shader aktiviert und ein Quad&lt;br /&gt;
mit der Größe des Viewports gezeichnet. &lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertex Shader&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
// radial blur&lt;br /&gt;
&lt;br /&gt;
uniform sampler2D Texture;&lt;br /&gt;
&lt;br /&gt;
//texel size&lt;br /&gt;
uniform vec2 Size;&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
  float BlurFactor = 0.05;&lt;br /&gt;
  float BrightFactor = 1.2;&lt;br /&gt;
  vec2 Origin = vec2(0.5, 0.5);&lt;br /&gt;
&lt;br /&gt;
  vec2 TexCoord = vec2(gl_TexCoord[0]);&lt;br /&gt;
&lt;br /&gt;
  vec4 SumColor = vec4(0.0, 0.0, 0.0, 0.0);&lt;br /&gt;
  TexCoord += Size * 0.5 - Origin;&lt;br /&gt;
&lt;br /&gt;
  for (int i = 0; i &amp;lt; 12; i++) &lt;br /&gt;
  {&lt;br /&gt;
    float scale = 1.0 - BlurFactor * (float(i) / 11.0);&lt;br /&gt;
    SumColor += texture2D(Texture, TexCoord * scale + Origin);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gl_FragColor = SumColor / 12.0 * BrightFactor;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=22201</id>
		<title>Shadersammlung</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=22201"/>
				<updated>2008-11-13T15:20:32Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die DGL Shadersammlung soll euch helfen Shader für OpenGL zu finden. &lt;br /&gt;
&lt;br /&gt;
=Organisation=&lt;br /&gt;
==Aufbau==&lt;br /&gt;
Für den Anfang wird die Shadersammlung nicht gegliedert. Mit wachsender Anzahl der verlinkten Shader wird sich dies ändern.&lt;br /&gt;
==Vorlage==&lt;br /&gt;
Falls ihr einen Shader bereitstellen wollt sind drei Dinge nötig:&lt;br /&gt;
# Kopiert die nachfolgende Vorlage ans Ende der Shaderliste und tragt die passenden Daten ein.&lt;br /&gt;
# Erstellt einen neuen Shaderartikel den ihr in der eingefügten Zeile verlinkt. Benutzt dazu die [[Shaderartikelvorlage]]. Shaderartikel müssen mit '''shader_''' benannt sein. ''z.B. shader_Wasser2d'' für einen 2D Wassershader.&lt;br /&gt;
# Da Shader zu 90% optische Effekte bewirken, sollte (mindestens) ein aussagekräftiges Beispielbild im Shaderartikel hinterlegt werden. Das Bild muss dann auch hier in der Liste verlinkt werden.&lt;br /&gt;
&lt;br /&gt;
Fügt folgenden Code ans Ende der Shaderliste an:&lt;br /&gt;
 !&amp;lt;nowiki&amp;gt;[[shader_HierNameEintragen]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 !HierNameEintragen&lt;br /&gt;
 !Autorname&lt;br /&gt;
 !Was macht der Shader.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ''What does the shader do.''*&lt;br /&gt;
 !&amp;lt;nowiki&amp;gt;[[Bild:Beispielbild.jpg|150px|150px]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''* Die englische Beschreibung ist freiwillig. Hilft aber bestimmt den Shader zu verbreiten. Die deutsche Beschreibung ist Pflicht.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für euren neuen Shaderartikel sollte diese [[Shaderartikelvorlage]] benutzt werden. (Vorlage aufrufen, bearbeiten klicken, Alles kopieren und in euren neuen Shaderartikel einfügen.)&lt;br /&gt;
&lt;br /&gt;
=Shader=&lt;br /&gt;
== ARB-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_surface_scattering(ARB)|shader_surface_scattering]]&lt;br /&gt;
!surface scattering&lt;br /&gt;
!dj3hut1 &lt;br /&gt;
!Bestimmt die Distanz, die Licht durch ein Material zurücklegt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Calculates the distance of light through a material.''&lt;br /&gt;
![[Bild:Scattering_s.jpg|144px|150px]]&lt;br /&gt;
|}&lt;br /&gt;
== GLSL-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_verysimple]]&lt;br /&gt;
!verysimple&lt;br /&gt;
(standard texture binding)&lt;br /&gt;
!damadmax &lt;br /&gt;
!Ein einfacher Shader, welcher eine Textur an Vertices bindet. Dieser Shader baut damit das standard Texturierungsverhalten der fixen Pipeline nach.&amp;lt;br&amp;gt;&lt;br /&gt;
''A very simple shader. It only binds a texture on some vertices, thus this shader simulates the standard behavior of a part of the fixed pipeline.''&lt;br /&gt;
!''Kein Bild vorhanden''&lt;br /&gt;
|-&lt;br /&gt;
![[shader_sepia]]&lt;br /&gt;
!Sepia&lt;br /&gt;
!Markus&lt;br /&gt;
!Post-Processing-Shader, welcher einen Sepia-Farbfilter auf die Szene anwendet.&amp;lt;br&amp;gt;&lt;br /&gt;
''Post-Processing-Shader which applies a sepia color filter to the scene.'' &lt;br /&gt;
![[Bild:shader_sepia_nachher.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_radial_blur]]&lt;br /&gt;
!Radial Blur&lt;br /&gt;
!Markus&lt;br /&gt;
!Post-Processing-Shader, welcher die Szene ausgehend vom Mittelpunkt verwischt.&amp;lt;br&amp;gt;&lt;br /&gt;
''Post-Processing-Shader which applies a radial blur to the scene.'' &lt;br /&gt;
![[Bild:shader_radial_blur_nachher.jpg|150px|150px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Cg-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_diffuse_bumpmapping(Cg)|diffuse_bumpmapping]]&lt;br /&gt;
!diffuse_bumpmapping&lt;br /&gt;
!igel457&lt;br /&gt;
!Wendet diffuses Bumpmapping auf eine beliebige Oberfläche an.&amp;lt;br&amp;gt;&lt;br /&gt;
''Applies diffuse bumpmapping to a surface.''&lt;br /&gt;
![[Bild:shader_diffuse_bumpmapping_cg.jpg|150px|150px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=22200</id>
		<title>Shadersammlung</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=22200"/>
				<updated>2008-11-13T15:20:06Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die DGL Shadersammlung soll euch helfen Shader für OpenGL zu finden. &lt;br /&gt;
&lt;br /&gt;
=Organisation=&lt;br /&gt;
==Aufbau==&lt;br /&gt;
Für den Anfang wird die Shadersammlung nicht gegliedert. Mit wachsender Anzahl der verlinkten Shader wird sich dies ändern.&lt;br /&gt;
==Vorlage==&lt;br /&gt;
Falls ihr einen Shader bereitstellen wollt sind drei Dinge nötig:&lt;br /&gt;
# Kopiert die nachfolgende Vorlage ans Ende der Shaderliste und tragt die passenden Daten ein.&lt;br /&gt;
# Erstellt einen neuen Shaderartikel den ihr in der eingefügten Zeile verlinkt. Benutzt dazu die [[Shaderartikelvorlage]]. Shaderartikel müssen mit '''shader_''' benannt sein. ''z.B. shader_Wasser2d'' für einen 2D Wassershader.&lt;br /&gt;
# Da Shader zu 90% optische Effekte bewirken, sollte (mindestens) ein aussagekräftiges Beispielbild im Shaderartikel hinterlegt werden. Das Bild muss dann auch hier in der Liste verlinkt werden.&lt;br /&gt;
&lt;br /&gt;
Fügt folgenden Code ans Ende der Shaderliste an:&lt;br /&gt;
 !&amp;lt;nowiki&amp;gt;[[shader_HierNameEintragen]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 !HierNameEintragen&lt;br /&gt;
 !Autorname&lt;br /&gt;
 !Was macht der Shader.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ''What does the shader do.''*&lt;br /&gt;
 !&amp;lt;nowiki&amp;gt;[[Bild:Beispielbild.jpg|150px|150px]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''* Die englische Beschreibung ist freiwillig. Hilft aber bestimmt den Shader zu verbreiten. Die deutsche Beschreibung ist Pflicht.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für euren neuen Shaderartikel sollte diese [[Shaderartikelvorlage]] benutzt werden. (Vorlage aufrufen, bearbeiten klicken, Alles kopieren und in euren neuen Shaderartikel einfügen.)&lt;br /&gt;
&lt;br /&gt;
=Shader=&lt;br /&gt;
== ARB-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_surface_scattering(ARB)|shader_surface_scattering]]&lt;br /&gt;
!surface scattering&lt;br /&gt;
!dj3hut1 &lt;br /&gt;
!Bestimmt die Distanz, die Licht durch ein Material zurücklegt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Calculates the distance of light through a material.''&lt;br /&gt;
![[Bild:Scattering_s.jpg|144px|150px]]&lt;br /&gt;
|}&lt;br /&gt;
== GLSL-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_verysimple]]&lt;br /&gt;
!verysimple&lt;br /&gt;
(standard texture binding)&lt;br /&gt;
!damadmax &lt;br /&gt;
!Ein einfacher Shader, welcher eine Textur an Vertices bindet. Dieser Shader baut damit das standard Texturierungsverhalten der fixen Pipeline nach.&amp;lt;br&amp;gt;&lt;br /&gt;
''A very simple shader. It only binds a texture on some vertices, thus this shader simulates the standard behavior of a part of the fixed pipeline.''&lt;br /&gt;
!''Kein Bild vorhanden''&lt;br /&gt;
|-&lt;br /&gt;
![[shader_sepia]]&lt;br /&gt;
!Sepia&lt;br /&gt;
!Markus&lt;br /&gt;
!Post-Processing-Shader, welcher einen Sepia-Farbfilter auf die Szene anwendet.&amp;lt;br&amp;gt;&lt;br /&gt;
''Post-Processing-Shader which applies a sepia color filter to the scene.'' &lt;br /&gt;
![[Bild:shader_sepia_nachher.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_radial_blur]]&lt;br /&gt;
!Radial Blur&lt;br /&gt;
!Markus&lt;br /&gt;
!Post-Processing-Shader, welcher die Szene ausgehend vom Mittelpunkt verwischt.&amp;lt;br&amp;gt;&lt;br /&gt;
''Post-Processing-Shader which applies a radial blur to the scene.'' &lt;br /&gt;
![[Bild:shader_radial_blur_nachher.jpg|150px|150px]]&lt;br /&gt;
&lt;br /&gt;
== Cg-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_diffuse_bumpmapping(Cg)|diffuse_bumpmapping]]&lt;br /&gt;
!diffuse_bumpmapping&lt;br /&gt;
!igel457&lt;br /&gt;
!Wendet diffuses Bumpmapping auf eine beliebige Oberfläche an.&amp;lt;br&amp;gt;&lt;br /&gt;
''Applies diffuse bumpmapping to a surface.''&lt;br /&gt;
![[Bild:shader_diffuse_bumpmapping_cg.jpg|150px|150px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:shader_sepia_nachher.jpg&amp;diff=22197</id>
		<title>Datei:shader sepia nachher.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:shader_sepia_nachher.jpg&amp;diff=22197"/>
				<updated>2008-11-07T23:30:21Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:shader_sepia_vorher.jpg&amp;diff=22196</id>
		<title>Datei:shader sepia vorher.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:shader_sepia_vorher.jpg&amp;diff=22196"/>
				<updated>2008-11-07T23:28:39Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: hat eine neue Version von „Bild:shader sepia vorher.jpg“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:shader_sepia_vorher.jpg&amp;diff=22195</id>
		<title>Datei:shader sepia vorher.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:shader_sepia_vorher.jpg&amp;diff=22195"/>
				<updated>2008-11-07T23:26:08Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_sepia&amp;diff=22194</id>
		<title>shader sepia</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_sepia&amp;diff=22194"/>
				<updated>2008-11-07T23:23:55Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: Die Seite wurde neu angelegt: =Sepia= Zurück zur Shadersammlung {|{{Prettytable_B1}} width=100% !width=60%|Beschreibung !width=20%|Autor !width=20%|Version |- |Post-Processing-Shader, welcher e...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Sepia=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Post-Processing-Shader, welcher einen Sepia-Farbfilter auf die Szene anwendet.&lt;br /&gt;
|Markus&lt;br /&gt;
|1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Bild:shader_sepia_vorher.jpg|framed|Vorher]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Bild:shader_sepia_nachher.jpg|framed|Nachher]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader wendet einen Sepia-Farbfilter auf die Szene an. Dadurch wird das Bild in einem gelblich-bräunlichen Farbton angezeigt. &lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
Da es sich um einen Post-Processing-Shader handelt, muss die Szene zuvor in eine Textur gerendert werden. Hier bieten sich FrameBufferObjects an, welche jedoch&lt;br /&gt;
nicht von alten Grafikkarten unterstützt werden. Optional kann man auch glCopyTexSubImage2D verwenden. Um nun den Farbfilter auf die Szene anzuwenden, muss man&lt;br /&gt;
die zuvor erstellte Textur binden (die Texturstufe muss dem Shader normalerweise nicht mitgeteilt werden, da TMU0 standard ist). Danach wird der Shader aktiviert und ein Quad&lt;br /&gt;
mit der Größe des Viewports gezeichnet. &lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vertex Shader&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
// scene texture&lt;br /&gt;
uniform sampler2D Texture;&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{    &lt;br /&gt;
  // Sepia colors                  &lt;br /&gt;
  vec4 Sepia1 = vec4( 0.2, 0.05, 0.0, 1.0 );    &lt;br /&gt;
  vec4 Sepia2 = vec4( 1.0, 0.9, 0.5, 1.0 );&lt;br /&gt;
&lt;br /&gt;
  vec4 Color = texture2D(Texture, vec2(gl_TexCoord[0]));&lt;br /&gt;
&lt;br /&gt;
  float SepiaMix = dot(vec3(0.3, 0.59, 0.11), vec3(Color));&lt;br /&gt;
  Color = mix(Color, vec4(SepiaMix), vec4(0.5));&lt;br /&gt;
  vec4 Sepia = mix(Sepia1, Sepia2, SepiaMix);&lt;br /&gt;
&lt;br /&gt;
  gl_FragColor = mix(Color, Sepia, 1.0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=22193</id>
		<title>Shadersammlung</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=22193"/>
				<updated>2008-11-07T23:19:17Z</updated>
		
		<summary type="html">&lt;p&gt;Markus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die DGL Shadersammlung soll euch helfen Shader für OpenGL zu finden. &lt;br /&gt;
&lt;br /&gt;
=Organisation=&lt;br /&gt;
==Aufbau==&lt;br /&gt;
Für den Anfang wird die Shadersammlung nicht gegliedert. Mit wachsender Anzahl der verlinkten Shader wird sich dies ändern.&lt;br /&gt;
==Vorlage==&lt;br /&gt;
Falls ihr einen Shader bereitstellen wollt sind drei Dinge nötig:&lt;br /&gt;
# Kopiert die nachfolgende Vorlage ans Ende der Shaderliste und tragt die passenden Daten ein.&lt;br /&gt;
# Erstellt einen neuen Shaderartikel den ihr in der eingefügten Zeile verlinkt. Benutzt dazu die [[Shaderartikelvorlage]]. Shaderartikel müssen mit '''shader_''' benannt sein. ''z.B. shader_Wasser2d'' für einen 2D Wassershader.&lt;br /&gt;
# Da Shader zu 90% optische Effekte bewirken, sollte (mindestens) ein aussagekräftiges Beispielbild im Shaderartikel hinterlegt werden. Das Bild muss dann auch hier in der Liste verlinkt werden.&lt;br /&gt;
&lt;br /&gt;
Fügt folgenden Code ans Ende der Shaderliste an:&lt;br /&gt;
 !&amp;lt;nowiki&amp;gt;[[shader_HierNameEintragen]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 !HierNameEintragen&lt;br /&gt;
 !Autorname&lt;br /&gt;
 !Was macht der Shader.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ''What does the shader do.''*&lt;br /&gt;
 !&amp;lt;nowiki&amp;gt;[[Bild:Beispielbild.jpg|150px|150px]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''* Die englische Beschreibung ist freiwillig. Hilft aber bestimmt den Shader zu verbreiten. Die deutsche Beschreibung ist Pflicht.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für euren neuen Shaderartikel sollte diese [[Shaderartikelvorlage]] benutzt werden. (Vorlage aufrufen, bearbeiten klicken, Alles kopieren und in euren neuen Shaderartikel einfügen.)&lt;br /&gt;
&lt;br /&gt;
=Shader=&lt;br /&gt;
== ARB-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_surface_scattering(ARB)|shader_surface_scattering]]&lt;br /&gt;
!surface scattering&lt;br /&gt;
!dj3hut1 &lt;br /&gt;
!Bestimmt die Distanz, die Licht durch ein Material zurücklegt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Calculates the distance of light through a material.''&lt;br /&gt;
![[Bild:Scattering_s.jpg|144px|150px]]&lt;br /&gt;
|}&lt;br /&gt;
== GLSL-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_verysimple]]&lt;br /&gt;
!verysimple&lt;br /&gt;
(standard texture binding)&lt;br /&gt;
!damadmax &lt;br /&gt;
!Ein einfacher Shader, welcher eine Textur an Vertices bindet. Dieser Shader baut damit das standard Texturierungsverhalten der fixen Pipeline nach.&amp;lt;br&amp;gt;&lt;br /&gt;
''A very simple shader. It only binds a texture on some vertices, thus this shader simulates the standard behavior of a part of the fixed pipeline.''&lt;br /&gt;
![[Bild:shader_verysimple.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
![[shader_sepia]]&lt;br /&gt;
!Sepia&lt;br /&gt;
!Markus&lt;br /&gt;
!Post-Processing-Shader, welcher einen Sepia-Farbfilter auf die Szene anwendet.&amp;lt;br&amp;gt;&lt;br /&gt;
''Post-Processing-Shader which applies a sepia color filter to the scene.'' &lt;br /&gt;
![[Bild:shader_sepia_nachher.jpg|150px|150px]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
== Cg-Shader ==&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=20%|Link&lt;br /&gt;
!width=20%|Shadername&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=40%|Kurzbeschreibung&lt;br /&gt;
!width=150px|Bild&lt;br /&gt;
|-&lt;br /&gt;
![[shader_diffuse_bumpmapping(Cg)|diffuse_bumpmapping]]&lt;br /&gt;
!diffuse_bumpmapping&lt;br /&gt;
!igel457&lt;br /&gt;
!Wendet diffuses Bumpmapping auf eine beliebige Oberfläche an.&amp;lt;br&amp;gt;&lt;br /&gt;
''Applies diffuse bumpmapping to a surface.''&lt;br /&gt;
![[Bild:shader_diffuse_bumpmapping_cg.jpg|150px|150px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Markus</name></author>	</entry>

	</feed>