JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=2bec4e525aa6a21f0b064fd328cb422cMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Bump Mapping und Gouraud Shading
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Catscratch1
Junior JLI'ler



Anmeldedatum: 20.01.2005
Beiträge: 98

Medaillen: Keine

BeitragVerfasst am: 03.06.2005, 07:45    Titel: Bump Mapping und Gouraud Shading Antworten mit Zitat

Hi,

was würdet ihr auf folgende Frage antworten:

Warum ist Bump-Mapping nicht mit Gouraud-Shading verwendbar?
Thx
_________________
"Dispatcher und Scheduler sind wie Brüder, bloß anders"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 03.06.2005, 09:11    Titel: Antworten mit Zitat

Das eine ist ein Per-Pixel-Effekt, das andere ein Per-Vertex-Effekt. Ich sehe aber keinen (technischen) Grund, warum man nicht beide zusammen verwenden sollte.

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 03.06.2005, 10:49    Titel: Antworten mit Zitat

naja, wenn beim schattieren auf Vertex basis die Farben über das Dreieck interpoliert werden, dann müssten die doch durch das bump mapping direkt wieder überschreiben werden. Und wenn man beide Farben kombinei hat man ja doppelte beleuchtung, was dann für stärkere Kontrastre oder so sorgen würde. Ist dann wohl wie wenn man VertexFarbe mit Textur kombiniert.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Catscratch1
Junior JLI'ler



Anmeldedatum: 20.01.2005
Beiträge: 98

Medaillen: Keine

BeitragVerfasst am: 04.06.2005, 14:28    Titel: Antworten mit Zitat

Thx für die antworten.
Das war eine der komischen Fragen unserer Klausur über Grafische Datenverarbeitung.
_________________
"Dispatcher und Scheduler sind wie Brüder, bloß anders"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 04.06.2005, 19:29    Titel: Antworten mit Zitat

In Wirklichkeit kannst du es beides verwenden, musst aber fürs Bumpmapping das Lighting deaktivieren. Der Effekt ist klar.
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 28.04.2008, 08:18    Titel: Antworten mit Zitat

Und wie soll ein Shaderprogramm aussehen, das Bump Mapping und Gouraud Shading vereint?
Der Textursampler kann doch nur im Pixelshader angesprochen werden. Und den brauch ich doch, um die Normalenvektoren aus der Normal Map zu extrahieren. Daher müsste ich doch alle Beleuchtungsoperationen ebenfalls in den Pixel Shader verlagern, oder seh ich das falsch?
Gibt es überhaupt irgendeine Möglichkeit, soviel Operationen in den Vertexshader zu verlagern, dass man auch mehrere Lichtquellen einsetzen kann, aber dennoch mit dem Pixelshader 2.0 auskommt?
Bisher musste ich immer direkt PS 3.0 aktivieren, sonst könnt ich nur Bumpmapping mit einer einzigen Lichtquelle verwenden.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 28.04.2008, 11:07    Titel: Antworten mit Zitat

Im schlimmsten Fall, machst du ein Multipass Verfahren, also jeweils für eine Lichtquelle das Dreieck einmal zeichnen und die Werte jeweils überlagern. Damit sollte man unendlich viele Lichtquellen haben können, natürlich ist aber Multipass immer ein wenig blöd.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 28.04.2008, 14:24    Titel: Antworten mit Zitat

LeeDiGer hat Folgendes geschrieben:
Bisher musste ich immer direkt PS 3.0 aktivieren, sonst könnt ich nur Bumpmapping mit einer einzigen Lichtquelle verwenden.

Inwiefern ist denn 3.0 da anders?
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 28.04.2008, 18:06    Titel: Antworten mit Zitat

Bei PS 2.0 ist die Anzahl der Instruktionen auf 64 begrenzt. Bei PS 3.0 weiß ich das jetzt grad nicht genau, aber es unterstützt soviel, dass man etwas mit Bumpmapping etwa 16 Lichtquellen einbauen kann im Singe Pass. Ich hab jetzt zwar Multipass nicht probiert, zieht Multipass nicht um einiges mehr an Rechenpower weg??

Aber jetzt wo du das mit dem Multipass erwähnst...wie implementiert man Multipass für eine variable Anzahl von Lichtquellen. Ich kenn ja nur die Methode, eine Anzahl an Passes festzulegen.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 29.04.2008, 07:28    Titel: Antworten mit Zitat

Da du jeden Pass ohne Abhängigkeit zu einem anderen benutzten kannst sollte das recht einfach sein. Nach dem Laden des Shaders gehst du einfach die Passes deiner Techniken durch und schaust nach Zusatzinformationen, wenn du das D3DX Effektsystem benutzt funktioniert das indem du dir eine Annotation zu einem Objekt (in diesem Fall den Pass) holst. In dieser Annotation kannst du nun zB eintragen das dieser Pass für Pointlights zuständig ist.

Nachdem du also zu jedem Pass die Zusatzinformationen gesammelt hast kannst du anhand dessen entscheiden welcher Pass für welche Situation gebraucht werden kann. Bei 2 Point und 1 Spotlight würde also die aufgeschlüsselte Renderfolge so aussehen:

Zitat:
1. Pass:
Blending deaktivieren.
Licht für Pointlight 1 setzen
Objekt mit Pass [Pointlightpass] rendern.

2. Pass
Additives Blending aktivieren.
Licht für Pointlight 2 setzen
Objekt mit Pass [Pointlightpass] rendern.

3. Pass

Licht für Spotlight 1 setzen
Objekt mit Pass [Spotlightpass] rendern.

4. Pass

Multiplikatives Blending aktivieren.
Objekt mit einem normalen Pass rendern (nicht mit einem Lightningpass) rendern.


Nach dem 4ten Pass kannst du nun die Specularenlichtwerte rendern, Pass 1,2 und 3 sind am besten für den Diffusen Anteil geeignet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 29.04.2008, 16:11    Titel: Antworten mit Zitat

Ich habs nicht getestet, aber ich nehme an, ein Pass rendern ist jedesmal wie ein ganzes Objekt rendern: also für jede Lichtquelle würdeste jedes objekt mehrmals im Prinzip rendern, nicht wahr?
Kann mans nicht kombinieren?
Also ich hätte den Vorschlag, pro Pass mit Shader 3.0 z.B. 16 Lichtquellen maximal einzubauen. Dann übergibt man immer ne Variable, die den Wert 0 bis 16 hat für die Anzahl der Lichtquellen, die tatsächlich abgearbeitet werden. Hat man mehr als 16 Lichtquellen, dann rendert man den nächsten Pass und nimmt die Lichtquellen 17 bis maximal 32 usw.
Dann müsste man doch viel Performance einsparen.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 29.04.2008, 16:48    Titel: Antworten mit Zitat

Mehr als 8 Lichtquellen sind schon brutal und du willst gleich mit mehr als 16 posen? Tsts Wink

Aber auch das ist möglich was du da vorschlägst. Aber ist das in PS3.0 denn wirklich nötig? Die Anzahl der Instrruktionen und das fortgeschrittene FlowControl sollten es doch relativ gut ermöglichen eine Schleife zu haben die quasi tausende durchläufe schafft.

(Habe bisher nur sehr wenig mit PS3.0 gemacht aber Schleifen sollten da wunderbar funktionieren.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 29.04.2008, 17:09    Titel: Antworten mit Zitat

Also Bumpmapping und ein vollständiges Beleuchtungsmodell mit 16 Lichtquellen krisse im Pixel Shader gerade noch unter (ich hab ja keine möglichkeit, das in den Vertex Shader zu verlagern, wegen dem Textursampler für die Normalmap).
Du musst ja nicht immer alle 16 Lichtquellen nutzen. Dafür ist ja die Integerschleifenvariable da, die du dem Shader übergeben sollst. Damit kannze auch auf weniger Lampen begrenzen.

Wie ist denn die Syntax für das additive Blending im Shader??? Hab dazu irgendwie nix finden können.

Ich hab im Moment sowas drin:

CPP:
BlendOp = Add;
SrcBlend = ONE;
DestBlend = InvSrcAlpha;

_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 29.04.2008, 18:26    Titel: Antworten mit Zitat

Wenn du nur einen Pass hast brauchst du nur simples Alphablending (für den Fall das du mal Transparente Objekte renderst) oder auch gar kein Blending.

Bei Multipass wird es aber etwas schwieriger, da musst du zusehen wie du deine Pässe aufteilst, vrmutlich wird das dann aber wie in meinem Beispiel von oben aussehen.

Wenn du wirklich soviele Lichter verwenden möchtest solltest du auch in Erwägung ziehen DeferredShading anzuwenden, damit bist du nicht mehr so stark limitiert was dieses Thema angeht.

Edit:
"BlendOp" ist das nicht nur für die FFP zum vermixen von texturen&Farben?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 04.05.2008, 11:45    Titel: Antworten mit Zitat

naja, immerhin kann man blendOP offentsichtlich auch bei Shadern einsetzen. Ich arbeite noch mit DX9 und kann bei DX10 sachen wie Deffered Shading noch nicht mitreden. Wenn sich mal die Zeit bei mir ergibt, werd ich mir DX 10 anschaun.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum