Shader. Computer Graphics: Shader

Ähnliche Dokumente
Computer Graphics Shader

Softwareprojekt Spieleentwicklung

OpenGL und die Fixed-Function-Pipeline

Die Welt der Shader. Fortgeschrittene Techniken III

Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch

Spieleprogrammierung mit DirectX und C++

Christina Nell. 3D-Computergrafik

Universität Trier FB IV Mathematik PS Mathematics for 3D Game Programming & Computer Graphics - WS 07/08 Seminarleiter: Prof. Dr.

Seminar Game Development Game Computer Graphics. Einleitung

Grundlagen der 3D-Grafik

Jens Konerow. Managed DirectX und C#

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

Übungsstunde 8 zu Computergrafik 1

3D Programmierpraktikum: OpenGL Shading Language (GLSL)

Texture Based Direct Volume Rendering

Schattenwurf mit Perspective Shadow Maps

Advanced Computer Graphics Erweiterung zur 6. Übung

Computergrafik Universität Osnabrück, Henning Wenke,

Diplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

Programmierpraktikum 3D Computer Grafik

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

OpenGL ES 2.0. OpenGL ist eine Bibliothek zur Ansteuerung von Grafikhardware

Übungsblatt 10: Klausurvorbereitung

Abtastung Aliasing Full Scene Antialiasing Mipmapping Anisotropes Filtern

Maßnahmen zur Verbesserung des wahrgenommenen Bildes

Visualisierung und Volumenrendering 2

Michael Bender Martin Brill. Computergrafik. Ein anwendungsorientiertes Lehrbuch. 2., überarbeitete Auflage HANSER

Computergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis

HLSL PostProcess Shaders

Kapitel 4: Schattenberechnung

VHDL - Grundlagen des Pointrenderings

Computergrafik Universität Osnabrück, Henning Wenke,

Aktuelle Grafikleistungen

4. Kapitel 3D Engine Geometry

Texturen. Texturen. 1. Vorbemerkungen. 2. 2D-Texturen

Grundlagen der Spieleprogrammierung

3.1 Motivation. - Mit (mehreren) Koordinatentransformationen wird das Objektsystem in das Gerätesystem transformiert.

Programmieren mit DirectX

3D-Sicht, Projektionen

Echtzeitfähige hige Verfahren in der Computergrafik. Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM

Koordinatensysteme und Clipping

Computergrafik. Ein anwendungsorientiertes Lehrbuch. Bearbeitet von Michael Bender, Manfred Brill

3D - Modellierung. Arne Theß. Proseminar Computergraphik TU Dresden

(10) Deferred Shading

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

Praktikum: Spieleengine im Eigenbau

Computer Graphik (CS231) Projektübungsblatt 3

Computer-Graphik I Transformationen & Viewing

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION

Jörn Loviscach Hochschule Bremen

D-Texturen. Reflectance Mapping 3D-Texturen. Farbtexturen

3D-Modellierungsprogramme

OpenGL auf Mac OS X und ios

Adaptives Displacement Mapping unter Verwendung von Geometrieshadern

Projektion. Ebene geometrische Projektionen

Zur Erinnerung: Parametrisierung von Dreiecken

Echtzeit Videoverarbeitung

Thema: Hardware-Shader

Eine Einführung Computergrafik SS14 Timo Bourdon

EVC Repetitorium Blender

(12) Wiederholung. Vorlesung Computergrafik T. Grosch

Beleuchtung. in Computerspielen

Computer graphics. Vektoren und Matrizen. Dr. Ernst Kruijff. Institute of Visual Computing 3DMi group Bonn-Rhein-Sieg University of Applied Sciences

Computergraphik Grundlagen

Modellierung. Oliver Hartmann

Lineare Transformationen, Teil 1 Lösungen zu den Aufgaben. 1 E1 Ma 1 Lubov Vassilevskaya

Computergrafik. Peter Rösch Hochschule Augsburg University of Applied Sciences. Sommersemester Version: 24. März 2014

3D-Grafik. Programmierung. 2. Auflage. Marius Apetri. Alle mathematischen Grundlagen. Von einfachen Rasteralgorithmen bis hin zu Landscape Generation

3 Modellierung eines Tempels

Games Engines. Realtime Terrain Rendering

Computer Graphik. Mitschrift von

(13) Hot Topics. Vorlesung Computergrafik T. Grosch

Seminar: Programmierung von Grafikkarten (SS 2006)

Architektur und Programmierung von Grafik- und Koprozessoren

Computergrafik 1 Beleuchtung

Zugänge. 6. 3D Programming. ! DirectX. ! Fixed-function Pipeline. ! Shader. ! OpenGL. ! Microsoft XNA. Spieleprogrammierung Winter 2011

Rendering für Augmented Reality

Rendering für Augmented Reality

Transkript:

Computer Graphics Computer Graphics Shader Computer Graphics: Shader

Inhalt Pipeline Memory Resources Input-Assembler Vertex-Shader Geometry-Shader & Stream-Output Rasterizer Pixel-Shader Output-Merger Texturen Mipmaps p Koordinaten Filtering 3D Räume Object Space World Space View Space Projection Space Screen Space Shader Beispiel 2

Pipeline Drei programmierbare Stufen Vertex-Shader Geometry-Shader Pixel-Shader Alle anderen Stufen sind nur über Zustände einstellbar 3

Memory Resources Symbolisiert den Arbeitsspeicher der Grafikkarte Ressourcen: Vertex Buffer Index Buffer Texturen Shaderkonstanten Stateblocks... Stateblocks werden unterteilt in: Rasterizer States Depth-Stencil States Sampler States Blend States 4

Input-Assembler Liest Daten aus einem Index Buffer und ein oder mehreren Vertex Buffern Setzt die gelesenen Daten zu Primitiven zusammen (assemble): Linien Dreiecken... Fügt systemgenerierte Daten hinzu, z.b. Vertex ID Gibt die Daten an die Pipeline weiter 5

Vertex-Shader Bearbeitet die vom Input Assembler übergebenen Vertices Daraus folgt, dass der Vertex-Shader für jeden Vertex einmal ausgeführt wird Zu den Aufgaben gehören: Transformation der Position Bearbeitung der Texturkoordinaten Per Vertex Lichtberechnungen Displacement Mapping... 6

Geometry-Shader & Stream-Output Bearbeitet die vom Vertex-Shader ausgegebenen Vertices, die zu Primitiven zusammengesetzt werden Der Geometry-Shader wird für jedes Primitiv (Linie, Dreieck,...) einmal ausgeführt Der Geometry-Shader kann Geometrie hinzufügen bzw. aus der Pipeline entfernen (limited geometry amplification i und de-amplification) i Über den Stream-Output können Geometrie Daten in die Memory Resources geschrieben werden Diese Vorgang unterbricht nicht die Pipeline, sondern findet parallel dazu statt 7

Rasterizer Zuständig für Clipping Abbilden auf den Viewport Rasterung in Pixel Interpolation der Vertex Daten Reicht die interpolierten Daten an den Pixel-Shader weiter 8

Pixel-Shader Bearbeitet die vom Rasterizer übergebenen Pixel Der Pixel-Shader wird für jeden Pixel einmal ausgeführt Zu den Aufgaben gehören: Color Transformationen Per Pixel Lichtberechnungen Texturen samplen Bump Mapping Evtl. Tiefenwert bearbeiten... 9

Output-Merger Kombiniert die vom Pixel-Shader ausgegebenen Farben mit den bereits vorhanden Farben des Buffers (Blending) Schreibt den neuen Wert auf den Buffer 10

Texturen Ansammlung von Texel Ein Texel bildet die kleinste Einheit einer Textur Besteht aus 1 bis 4 Komponenten (je nach Format: RGBA, R, GR,...) Texturen können im Shader beliebig oft gelesen (fetch oder sample) werden Es existieren vier verschiedene Textur-Typen: 1D-Texturen 2D-Texturen 3D-Texturen (Volumetextures) Cubemaps 11

Mipmaps Stammt aus dem lateinischen multum in parvo, bedeutet übersetzt soviel wie Viel in Kleinem Bilden eine Anreihung von Texturen, bei der jede Folgetextur immer das gleiche Bild repräsentiert Mit jedem neuen Mipmap-Level wird die Auflösung der Textur halbiert Die Grafikkarte kann feststellen welcher Mipmap-Level die nächste Auflösung zur gewünschten Ausgabe besitzt Verringert Aliasing und erhöht damit die Bildqualität Erhöhter Speicherverbrauch 12

Texturkoordinaten Zum Adressieren einer Textur werden je nach Typ 1 bis 3 Koordinaten benötigt Die Koordinaten werden meistens als u, v und w bezeichnet Linear adressiert von: 0 bis 1 bei 1D-Texturen (0, 0) bis (1, 1) bei 2D-Texturen (0, 0, 0) bis (1, 1, 1) bei 3D-Texturen Unterschied zwischen DX9 und DX10 in der Adressierung. Unter DX10 befindet sich der erste Texel auf der Koordinate (0, 0) Quelle: [AMD07] 13

Filtering In den meisten Fällen wird die Textur beim Lesen magnified oder minified Magnification: Mehrere Pixel werden auf einen Texel abgebildet Ergebnis ist grob Lösung durch Linear- bzw. Bilinear-Filtering Minification: Ein einzelner Pixel wird auf mehrere Texel abgebildet Ergebnis besitzt starkes Aliasing Lösung durch Mipmap-Filtering 14

3D Räume Object Space World Space View Space Projection Space Screen Space 15

Object Space & World Space Object Space Oft Model Space genannt Wird bevorzugt zur Erstellung der Objekte verwendet Objekt wird um den Nullpunkt erstellt, dadurch können Transformationen (z.b. Rotation) leichter ausgeführt werden World Space Raum den sich alle Objekte teilen Modelle Licht Kamera... 16

View Space Auch oft Camera Space genannt Bestimmt die äußeren Kameraeinstellungen Position und Ausrichtung Die Kamera bildet den Ursprung im View Space Die Ausrichtung der Kamera bildet die z-achse des View Space World Space View Space 17

Projection Space & Screen Space Bestimmt die inneren Kameraeinstellungen Field of View, Near Clip Plane und Far Clip Plane Führt eine perspektivische Transformation bzw. Projektion aus Objekte näher an der Kamera erscheinen größer als weiter entfernte Objekte Objekte werden anhand ihrer Entfernung zur Kamera (z-wert im View Space) transformiert View Frustum wird auf einen Einheitswürfel abgebildet In diesem besitzen alle sichtbaren Objekte: x- und y-werte zwischen -1 und +1 z-werte zwischen 0 und 1 Screen Space Bestimmt die Position auf dem Frame Buffer Die linke, obere Ecke bildet den Ursprung mit der Koordinate (0, 0) Der letzte t Punkt im Raum wird durch Koordinate (w-1, h-1) definiert, i wobei w die Breite des Frame Buffers und h die Höhe des Frame Buffers (in Pixel) angibt Positive x-achse verläuft nach rechts Positive y-achse verläuft nach unten 18

Shader Eingabedaten werden in zwei Kategorien unterteilt: Varying Inputs: Variieren für jeden Vertex bzw. Pixel Per Vertex Daten: Position, Normale, Texturkoordinaten,... Per Pixel Daten: Texturkoordinaten, Normale,... Werden über spezielle Eingaberegister an den Shader übergeben Uniform Inputs: Sind für alle Vektoren, Pixel und Primitive gleich und variieren beim Durchlaufen der Pipeline nicht Shaderkonstanten Lichtposition Kameraposition Transformationsmatrizen... Texturen Ausgabedaten werden über spezielle Ausgaberegister an die Pipeline weitergegeben 19

Beispiel 20

Quellen [DX07] Direct X Documentation 2007 [AMD07] Harnessing the Power of DirectX 10 21