Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Catscratch1 Junior JLI'ler
Anmeldedatum: 20.01.2005 Beiträge: 98
Medaillen: Keine
|
Verfasst am: 03.06.2005, 07:45 Titel: Bump Mapping und Gouraud Shading |
|
|
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 |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 03.06.2005, 09:11 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.06.2005, 10:49 Titel: |
|
|
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 |
|
|
Catscratch1 Junior JLI'ler
Anmeldedatum: 20.01.2005 Beiträge: 98
Medaillen: Keine
|
Verfasst am: 04.06.2005, 14:28 Titel: |
|
|
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 |
|
|
HomeLess_PunkDrummer JLI Master Trainee
Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 04.06.2005, 19:29 Titel: |
|
|
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 |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 28.04.2008, 08:18 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 28.04.2008, 11:07 Titel: |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 28.04.2008, 14:24 Titel: |
|
|
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 |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 28.04.2008, 18:06 Titel: |
|
|
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 29.04.2008, 07:28 Titel: |
|
|
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 |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 29.04.2008, 16:11 Titel: |
|
|
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 29.04.2008, 16:48 Titel: |
|
|
Mehr als 8 Lichtquellen sind schon brutal und du willst gleich mit mehr als 16 posen? Tsts
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 |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 29.04.2008, 17:09 Titel: |
|
|
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 29.04.2008, 18:26 Titel: |
|
|
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 |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 04.05.2008, 11:45 Titel: |
|
|
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 |
|
|
|