Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 16.12.2006, 19:27 Titel: |
|
|
Es wurde doch von Materialien geredet, damit sollte es ebenso möglich sein. Shader wären aber die bessere Möglichkeit. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 35 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 04.01.2007, 13:15 Titel: |
|
|
Sorry, dass ich euch schon wieder damit stöhr, aber ich hab da immer noch ein Problem:
Und zwar wenn ich eine teilweiß tansparente Textur rendere, dann belegen auch die Pixel die sich aufgrund der Tansparenz nicht verändert haben einen Eintrag im Z-Buffer. Das ist deswegen so nervig, da dann sachen, die z.B hinter einer Glasfläche sind (also gesehen werden sollen) nicht mehr dar gestellt werden.
Meine Frage : Gibt es eine Möglichkeit der Graka mitzuteilen nur da einen Z-Buffer-Eintrag zu machen wo auch wirklich der Back-Buffer verändert wurde?
Falls es soetwas nicht geben sollte kennt dann einer vielleicht eine leistungsstarke Quicksort-Methode mit der man die tansparenten Objekte nach ihrer Entfernung zur "Kamera" sortieren kann ? |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 04.01.2007, 13:26 Titel: |
|
|
Es gibt RenderStates mit denen du das schreiben auf den ZBuffer unterbinden kannst, auch gibt es RenderStates zum festlegen wie der ZBufferTest erfolgen soll. Einfach mal die DX Docu ansehen.
Zitat: | Gibt es eine Möglichkeit der Graka mitzuteilen nur da einen Z-Buffer-Eintrag zu machen wo auch wirklich der Back-Buffer verändert wurde? |
Meinst du das so dass meine Lösung von oben nichts bringt? Wenn ja dann versuche es so:
Du renderst deine Objekte welche Transparent sein können 2x
1x ohne ZBuffer zu beschreiben
und
1x mit ZBuffer beschreiben allerdings nur dann wenn die Stelle welche gerendert werden soll nicht Transparent ist (Alpa 100%), das kannst du mit Alphatesting (auch als RenderState verfügbar) erreichen, indem du den AlphaReferenzwert so setzt das nur auf Opaque Pixel reagiert werden soll und die AlphaTestMethode so setzt das nur die Pixel gerendert werden welche einen AlphaWert >= den AlphaReferenzwert besitzen.
Das ist nur eine spontane Idee könnte aber unter umständen eine gute Lösung sein. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 35 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 04.01.2007, 19:03 Titel: |
|
|
[quote = Fallen]1x ohne ZBuffer zu beschreiben [/quote]
Dann Rendert er die Textur doch immer, auch wenn sie eigentlich von einer anderen Textur verdeckt ist.
Das Problem bei mir ist, dass Grassbüschel rendere, die jeweils nur aus einer Textur bestehen. Die hinteren Grassbüschel werden dann aber nicht mehr gerendert, wegen dem Z-Buffer-Eintrag. Das sieht sehr komisch aus.(Um nicht zu sagen Sche***).
Kannst du das nochmal genauer erklären mit dem "Alphatesting". Vielleicht hübsch verziehrt mit Code-Beispielen ?? |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 04.01.2007, 20:21 Titel: |
|
|
Dann sollte doch das hier die Lösung für dich sein:
Zitat: | Es gibt RenderStates mit denen du das schreiben auf den ZBuffer unterbinden kannst, auch gibt es RenderStates zum festlegen wie der ZBufferTest erfolgen soll. Einfach mal die DX Docu ansehen. |
Wenn du wenn du dein gras renderst nicht in den ZBuffer schreibst solltest du damit auch keine Probleme haben bis auf einige hässliche Grafikfehler wenn du dein Gras nicht von hinten nach vorne renderst.
Zu der anderen Sache müsstest du einfach mal die Suchfunktion benutzten, es sollten da einige Beispiele zu finden sein. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 36 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 04.01.2007, 22:59 Titel: |
|
|
Ja, du musst auf jeden Fall alles was transparent ist manuell sortieren. Ohne das kann es immer Grafikfehler geben. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
51m0n JLI'ler
Alter: 32 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 05.01.2007, 03:37 Titel: |
|
|
In diesem Fall würde es doch reichen, immer nur die Pixel in den ZBuffer zu schreiben die auch 100% sichtbar sind. (wie Fallen schon sagte)
Das machst du mit den folgenden Renderstates:
Code: | D3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, true);
D3DDevice->SetRenderState(D3DRS_ALPHAREF, 0xFF);
D3DDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL); |
Das Renderstate ALPHAREF gibt an, wie hoch der Alphawert mindestens sein muss, damit er in den ZBuffer eingetragen wird. Musst damit mal ein bischen herumprobieren. Wenn du das ganze nur für die Grabüschel setzt müsste das eigentlich noch ganz OK aussehen.
Wenn nicht, dann wirst du wohl um ein selber sortieren nicht drumherumkommen.
MfG 51m0n _________________ Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 35 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 07.01.2007, 17:56 Titel: |
|
|
Danke 51m0n.
Genau das hab ich gesucht. |
|
Nach oben |
|
|
|