Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.07.2014, 09:16

Transparente Objekte - Reihenfolge des Renderings

Hey Leute,

nach viel Zeit des Googlens um eine möglichst gute aber auch nicht allzu komplizierte Lösung für das Problem der Render-Reihenfolge von Transparenten Objekten, bin ich mir ziemlich unsicher, was ich wie implementieren kann.
Deepth Peeling - Scheint performancelastig zu sein
Depth-Texture im Allgemeinen(Von Kameraperspektive rendern und alles transparente skippen --> ist mit unklar wie ich dies einigermaßen effizient umsetzen kann)
Objekte nach Abstand von Kamera sortieren - Erscheint mir, vor allem bei Bäumen, welche mehrere Transparente Flächen besitzen aber ein Objekt darstellen, ziemlich kompliziert -vor allem wenn sich die Flächen schneiden.

Deswegen meine Frage an euch:
Was ist das von euch bevorzugte Verfahren und wie habt ihr dies umgesetzt(die groben Züge, kein Quellcode)

Danke schonma :)
Kinetize

2

12.07.2014, 10:17

Naja ich glaub die meisten Spiele rendern zuerst die undurchlässigen objekte und dann die tranzluzenten.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

12.07.2014, 10:22

Transparente Objekte korrekt darzustellen ist leider immer noch ein unzureichend gelöstes Problem. Es gibt viele Ansätze die alle ihre Vor- und Nachteile haben. Das einfachste ist es tatsächlich auf Drawcall-Ebene nach Abstand zum Betrachter zu sortieren. Damit sind die ganzen Randfälle, wie du ja schon angemerkt hast, leider nicht gelöst. Ansonsten gibts eine Menge, mehr oder weniger, spezieller Ansätze z.B.:

  • (Dual) Depth-Peeling
  • Perpixel linked lists
  • Weighted Blended OIT
  • Intels OIT approach (macht Pixelsync notwendig)
  • Computeshader basierte
  • ...

Tatsächlich werden für verschiedene Anwendungsfälle häufig verschiedene Ansätze gewählt. Eine (unvollständige) Liste diverser Links:

Links:
Weighted Blended OIT
OIT approximation with pixel synchronization
OIT and GI using DX11 linked list
Foliage Rendering in Pure
Practical Realtime Hair Rendering and Shading
@D13_Dreinig

4

12.07.2014, 10:43

@Roflo Das mache ich bereits, mein Problem sind mehrere Transperente Objekte hintereinander :)
@David Vielen Dank, das schaue ich mir mal an :thumbsup: War mir halt unsicher, ob ichs einfach nur falsch google un es evt. eine "Master-Lösung" gibt :D

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

5

12.07.2014, 10:47

Schöne Sammlung, David! Danke!

[edit] Damit ich überhaupt was beitrage: bei den Splitterwelten bin ich mit schlichtem "Ignorieren" des Problems ziemlich weit gekommen. Für teiltransparente Objekte habe ich einen extra Pass nach aller soliden Geometrie aufgemacht und die wenigen DrawCalls dann per Tiefe sortiert. Gras und Konsorten habe ich aber nochmal in einem extra Pass vorher gemacht und da zweiteilig gerendert: zuerst nur die vollständig sichtbaren Fragmente mit ZWrite und AlphaTesting, dann in einem zweiten Renderpass mit vollem Alphablending und ohne ZWrite. Vermeidet einige der Tiefensort-Probleme, aber beleibe nicht alle. Da ich aber an die 50k Dreiecke für Bewuchs hatte, wollte ich das nicht zu komplex werden lassen.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

6

13.07.2014, 11:52

@Schrompf So ähnlich habe ich es auch vor :)

Werbeanzeige

Ähnliche Themen