Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Exotische Texturformen

Ähnliche Präsentationen


Präsentation zum Thema: "Exotische Texturformen"—  Präsentation transkript:

1 Exotische Texturformen
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/11 Softwaretechnologie II (Teil 1) Simulation und 3D Programmierung Referat von Sara Hommelsen

2 Volumentexturen dreidimensional Angabe der Größe in Pixeln/Texeln
ausgehend von 2D-Textur > bei 3D: flache Textur wird zum Quader > bekommt zusätzlich Tiefe zu Höhe/Breite

3 Volumentexturen 3D-Vektor für Texturkoordinaten: Makros: tbVector3
D3DFVF_TEXCOORDSIZE

4 sonstige Eigenschaften
Filterung Erzeugung von Mip-Maps viel Speicherplatz

5 Schnittstelle bisher: IDirect3DTexture9, nun: IDirect3DVolumeTexture9
> erwarten Methode: IDirect3DDevice9::SetTexture

6 Schnittstelle: Format/Größe
GetVolumeLevel der IDirect3DVolumeTexture9 1. Parameter: Mip-Map-Ebene zum abfragen 2. Parameter: Zeiger auf IDirect3DVolume9 Schnittstelle, die Direct3D erfüllen soll. Aufruf GetDesc > ausgefüllte Textur vom Typ D3Volume_DESC

7 Wozu Volumentexturen? Landschaften Animation Licht/Schatten

8 Herstellung/Ladevorgang
Verwendung von DirectXTextureTool (gehört zum DirectX SDK) DDS-Format

9 Volumentexturen laden
Standard: D3DXCreateTextureFromFile (Ex) Volumen: D3DXCreateVolumeTextureFromFile (Ex) erwartet Tiefe als weiteren Parameter wenn Originalgröße übernommen werden soll, dann: D3DX_DEFAULT letzter Parameter: Adresse des Zeigers auf IDIRECT3DVolumeTexture9-Schnittstelle

10 Umgebungstexturen kubische Umgebungstexturen (in Würfelform angeordnet) Generierung von 6 Texturen Texturen werden auf Objekt gelegt > tatsächliche Struktur , reflektierte Bilder der Umgebung sind sichtbar

11 Texturkoordianten - 1 Flags sind dreidimensional
Texturschicht-State D3DTSS_TEXTURETRANSFORMFLAGS auf D3DTTFF_COUNT3 Schnittstelle IDirect3DCubeTexture9 laden D3DXCreateCubeTextureFromFile (Ex)

12 Texturkoordianten - 2 generieren: DirectXTextureTool
neue Textur erstellen cubeMapTexture wählen um zwischen Würfelflächen hin und her zu schalten: view -> CubeMapView => Bilddateien auf entsprechende Flächen der Würfeltextur laden (s. Standardtextur)

13 Skybox Sky Box = Würfel indem man sich befindet
vorteilhaft, wenn Textur hoch aufgelöst Sky Box und Reflexion: gleiche Textur > Vertizes brauchen 3 Koordinaten

14 Bump Mapping (mit 3D) Simulation der Oberfläche auf Pixelebene
Unterstützung abfragen: im Eintrag sind TextureOpCaps der D3DCAPS-9 Struktur die Flags D3DTEXOPCAPS_BUMPENVMAP gesetzt

15 Bump Mapping Transformation:
U/V-Steigungswerte werden mit 2x2-Matrix multipliziert Matrixangabe m. H. der Texturschicht-States D3DTSS_BUMPENVMAT00 (M11) D3DTSS_BUMPENVMAT10 (M21) D3DTSS_BUMPENVMAT01 (M12) D3DTSS_BUMPENVMAT11 (M22)

16 Luminanz Veränderung: L´= L*S+0
S= Skalierungsfaktor D3DTSS_BUMPENVSCALE O= Offset-Wert D3DTSS_BUMPENVOFFSET

17 Einsetzen der Bump Map Verwendung von 3 Texturen:
Schicht = normale Oberflächenstruktur Schicht = Bump-Map Schicht = Environment Map

18 Aktivierung der Bump Map
Farboperator stellen auf: D3DTOP_BUMPENVMAP D3DTOP_BUMPENVMAPLUMINANCE gleiche Texturkoordinaten: D3DTSS_TCI_CAMERASPACEPERFECTIONVE CTOR und D3DTTFF_COUNT3

19 Erzeugung der Bump Map Direct3D erwartet Steigung oder
durch Umrechnung selbst angeben oder Verwendung von DirectXTextureTool > Speicherung im DDS-Format

20 Environmental Bump Mapping
Neuberechnung der Vektoren

21 Stencil-Buffer - 1 Teil des Z-Stencil-Buffers verschiedene Formate:
D3DFMT_D32 D3DFMT_D16 D3DFMT_D24S8

22 Stencil-Buffer - 2 Der Clear-Methode der Schnittstelle IDirect3Device9
werden Flags D3DCLEAR_TARGET, D3DCLEAR_ZBUFFER, Flag D3DCLEAR_STENCK übergeben > leert Stencil-Buffer

23 Stencil-Buffer - 3 2^Anzahl der Stencil-Buffer reservierten Pixel – 1
>größter Wert, den Stencil-Buffer in einem Pixel erreichen kann

24 Stencil-Buffer - 4 Zweck: Reihe von Effekten in Echtzeitberechnung
Format: Z-Stencil-Buffer setzen von Render-State D3DRS_STENCILABLE auf TRUE => alle gezeichneten Primitive verwenden Stencil-Buffering

25 Stencil-Test wenn Render-State D3D_STENCILABLE auf TRUE, dann Test
Aufstellung gezielter Vergleichsfunktion und Referenzwert

26 Schreiben in Stencil-Buffer
Festlegung was mit Stencil-Wert geschehen soll Werte können für Render-States eingesetzt werden (vgl. Tab. S. 247) Vergleich aller Stencil-Werte mit Referenzwert, festlegen mit D3DRS_STENCILREF

27 Lese- und Schreibbitmasken
Einführung, weil manchmal nur einzelne Bits eines Stencil-Werts getestet werden sollen gesetzt in Form von Render-States Schreibbitmaske: Bitmaske wird mit bitweisem &-Operator auf alle Werte im Stencil-Buffer angewendet Lesebitmaske: Anwendung von Direct3D auf Referenzwert und auf aus Stencil-Buffer gelesene Werte

28 zweiseitiger Stencil-Buffer-Modus
Flag D3DSTENCILCAPS_TWOSIDED im Element Stencilcaps der D3DCAPS9- Struktur gesetzt Render-State (RS) D3DRS_TWOSIDEDSTENCILMODE auf TRUE danach weitere RS zur Verfügung RS legen Stencil-Buffer-Einstellungen fest, die auf Bildschirm GEGEN den Uhrzeigersinn angeordnet sind Referenzwert und Schreibbitmasken werden NICHT voneinander getrennt betrachtet.

29 Stencil-Buffer füllen ohne Bildpufferfüllung
Beschreibung des Stencil-Buffers auf 2 Weisen Clear-Methode zeichnen von Primitiven mit aktiviertem Stencil- Buffering um Abdruck im Stencil-Buffer zu hinterlassen: Vergleichsfunktion: D3DRS_STENCILFUNC auf D3DCMP_ALWAYS für D3DRS_STENCILPASS: D3DSTENCILOP_REPLACE und D3DRS_STENCILSREF auf den Wert der von Primitiven hinterlassen werden soll

30 D3DX Effekte Aufteilung des Render-Vorgangs:
Zeichnung aller Dreiecke die Material A/Textur A verwenden, dann alle die Material B/Textur B verwenden usw. VOR jedem Rendern: Material muss eingesetzt werden, eventuelle Veränderungen einiger Werte

31 Effekte D3DX definiert Effektschnittstelle ID3DXEffect Techniken
Durchgänge

32 Render States & Co. Wertezuweisung
Texturschicht-/Samplerstate: Darstellung als Array Übernahme aller Namen ohne Präfixe

33 Transformationsmatrizen
Worldtransform ViewTransform ProjectionTransform TextureTransform

34 Variablentypen Texture DWord Float String

35 Laden eines Effekts kann aus Datei/Speicher o.ä. geladen werden
Funktion: D3DXCreateEffectFromFile

36 Mit Effekten rendern - 1 Technik durch Typ D3DXHANDLE ansprechen
Anzahl verfügbarer Technik Methodenaufruf: ID3DXEffect::GetDesc füllt Struktur D3DXEFFECT_DESC aus Techniques-Element for-Schleife Methode ID3DXEffect::ValidateTechnique dafür D3DXHANDLE-Variable In for-Schleife: Index steht zur Verfügung

37 Mit Effekten rendern - 2 4. Methode GetTechnique erwartet Technikindex, liefert D3DXHANDLE zurück, der für ValidateTechnique gebraucht wird 5. wenn erfolgreich, dann Aktivierung m.H. der Methode ID3DXEffect::SetTechnique

38 Effekte aktivieren Effekt aktivieren mit ID3DXEffect::Begin
1. Parameter: Zeiger auf UINT 2. Parameter: 0 oder D3DXFX_DONOTSAVESTATE

39 Rendern Durchgang jedes einzelnen Durchgangs mit for-Schleife
VOR jedem Zeichenvorgang Methodenaufruf ID3DXEffect::BeginPass Aufruf EndPass >nachdem alles gezeichnet ist: ID3DXEffect::End

40 Transformation umgehen
Vertizes wandern durch Transformationspipeline rein: einfache objektrelative/absolute Positionsangaben raus: fertig bearbeitete 2D-Koordinaten Umgehung durch transformierte Vertizes

41 Unterschied - 1 x/y-Koordinate: echte Bildschirmkoordinaten mit 1 Pixel als Einheit z-Koordinate muss zwischen 0 und 1 liegen zusätzliche Angabe von w-Koordinate

42 Unterschied - 2 transformierte Vertizes: keine Beleuchtung
keine Garantie, dass Clipping durchgeführt wird >transformierte Vertizes hervorragend, weil Raum zur Entwicklung eigener Verfahren

43 anderes Vertexformat transformierte Vertizes:

44 Imitation von DirectDraw
Blitting > kopieren eines bestimmten Bereichs eines Quellbildes auf ein Zielbild > Verwendung hauptsächlich um Grafikobjekte zu zeichnen, die in seperaten Oberflächen gespeichert sind > immer dann verwenden, wenn Texturen im Spiel sind

45 Color Keying bestimmte Farben werden ausgelassen
in Quellbildern gespeicherte Objekten wird Hintergrundfarbe zugewiesen Pixel in dieser Farbe werden verworfen Verwendung von Alpha-Kanal um Informationen zu speichern nichtkopierte Pixel = Alphawert 0 eingebauter Alphakanalgenerator: D3DXCreateTextureFromFile (Ex)

46 Rotation Veränderung der Vertex-Position, die Rechteck formen
keine Verwendung von Transformationspipeline, sondern Funktion tbvector2TransformCoords > damit Transformation der Vertizes von Hand mit einer vorher erstellen Rotationsmatrix

47 andere Methode für 2D-Grafik
Verzicht von Sichtmatrix und Projektionsmatrix -> Identitätsmatrix Z-Koordinate muss zwischen 0 und 1 liegen Vorteile: kein anderes Vertexformat, Verwendung von Weltmatrix, Clipping funktioniert

48 In Texturen rendern - 1 erstellen einer Textur/Z-Buffers
- Identifizierung der Grafikkarte als Render- Target - Flag: D3DUSAGE_RENDERTARGET übergeben an Funktion D3DCreateTextureFromFile oder Methode IDirect3DDevice9::CreateTextur e

49 In Texturen rendern - 2 - Flag wird für usage-Parameter angegeben
- Speicherklasse muss D3DPOOL_DEFAULT sein - Erzeugung Z-Stencil-Buffer mit Flag D3DUSAGE_DEPTHSTENCIL

50 In Texturen rendern - 3 2. Schritt: neues Render-Target setzen
- rendern auf neu erzeugte Textur und Z-Stencil-Buffer m.H. von 2 Methoden: IDirect3DDevice9::SetRenderTarget SetDepthStencilSurface - erwarten Zeiger auf Direct3D-Oberfläche - zuerst: Oberfläche - SetRenderTarget erwartet Render-Target-Index

51 In Texturen rendern - 4 3. Schritt: alles rendern was in Textur erscheinen soll - Aufurf von clear am Anfang - Textur: andere Auflösung als alte Back-Buffer

52 Einfacher mit D3DX erleichtert Vorgang enorm
folgende Schnittstellen: ID3RenderToSurface ID3DRenderToEnvMap -> Schnittstellen kümmern sich um Erzeugung Z-Stencil-Buffer, Anpassung an Viewport, ermöglicht rendern auf Texturen, die mit Mip-Mapping arbeiten

53 DANKE!


Herunterladen ppt "Exotische Texturformen"

Ähnliche Präsentationen


Google-Anzeigen