Jump to content
Unity Insider Forum

Mobile: Grundlegende Frage zu Transparent 2 Sided Shadern VS. Modelierung


Recommended Posts

Guten Abend liebe Leute und ich hoffe es gehört in diese Kategorie.

Zur Vorgeschichte: Ich erstelle derzeit eine App, in der Pflanzen den primären Akzent setzen. Die grundlegenden Programmierungen sind soweit abgeschlossen und nun soll es zum Befüllen der einzelnen Elemente kommen. Wie bereits erwähnt sind dies hauptsächlich Pflanzen, von klein bis groß, viele und unterschiedliche gleichzeitig. Wer einmal selbst Pflanzen modelliert hat, der weiß wie aufwendig das sein kann und man sehr schnell bei ganz vielen Polygonen sein kann, was natürlich, so gut es geht, vermieden werden soll, damit die Performance nicht einbricht.
Wenn ich das richtig gespeichert habe, dann rendert die Kamera den für sie sichtbaren Bereich und den nicht sichtbaren erst, wenn die Objekte ins 
Sichtfeld treten. Aber wenn Objekte im Sichtbereich liegen, deren Polygone zusammen, mehrere Millionen betragen würden, bspw., ja..., dann knickt die 
Performance.
Deshalb hab ich mich mal bissl schlau gemacht und über Shader philosophiert, ein wenig experimentiert mit den Transparent/CutOut Shadern und gemerkt, das damit 
brauchbare Ergebnisse erzielt werden könnten. Jetzt hab ich aber auch gelesen, das die Verwendung dieser Shader in Massen, was ja bei den Pflanzen
auf dieser Weise unerlässlich wäre (die einzelnen Blätter bspw.), wohl viel Ressourcen fressen soll und ein Smartphone in eine Heizung verwandeln könnte.

Zu meiner eigentlichen Frage, da dies die weitere Vorgehensweise der Modellierung stark beeinflusst. Was würdet Ihr in diesem Fall empfehlen bzw. habt Ihr 
Erfahrungen bei dieser Art der Umsetzung - Modellierung, aber reduzierter oder stark reduziert und mit Shadern? Es sind wirklich viele Pflanzen im 
sichtbaren Bereich der Kamera, vlt 500, die alle gerendert werden wollen.
Da ist man schnell bei einer sehr hohen Anzahl an Polygonen bei standardisierter Modellierung, die auch noch relativ realistisch wirken soll. 
Mit den Transparent Shadern könnte man ein ähnliches Ergebnis mit einem Bruchteil der Polygone erzielen.

Auch hab ich gelesen, dass einige des Öfteren Probleme mit Schatten, Beleuchtung und ähnlichem bei der Verwendung der Shader haben und man höchstwahrscheinlich
um das Schreiben eines eigenen Shaders nicht herumkommt, vor allem nicht, da Unity leider für Mobile nicht gerade eine riesen Auswahl an diesen Shadern 
bereit stellt. 
Falls diese Herangehensweise umsetzbar sein sollte, kennt Ihr zufällig einige Shader, die dafür geeignet wären, bzw Links die helfen könnten, einen eigenen zu 
schreiben?

Ich bedanke mich für Eure Antworten und Erfahrungen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo!

Am 5.2.2021 um 21:00 schrieb Zero2K:

Jetzt hab ich aber auch gelesen, das die Verwendung dieser Shader in Massen, was ja bei den Pflanzen
auf dieser Weise unerlässlich wäre (die einzelnen Blätter bspw.), wohl viel Ressourcen fressen soll und ein Smartphone in eine Heizung verwandeln könnte.

Alles kann in Massen Performance fressen. Man glaubt gerne mal, dass Smartphones alles können, aber deren Leistung ist einfach alles andere als endlos.

Am 5.2.2021 um 21:00 schrieb Zero2K:

Was würdet Ihr in diesem Fall empfehlen bzw. habt Ihr 
Erfahrungen bei dieser Art der Umsetzung - Modellierung, aber reduzierter oder stark reduziert und mit Shadern?

Es gilt immer: So billig wie du kannst, so teuer wie du brauchst. Wenn du zu viele Polygone für akzeptable Performance hast, brauchst weniger Polygone. Wenn dein Shader zu komplex ist, brauchst du nen einfacheren Shader. Es gibt da nicht die eine richtige Lösung - nicht mal eine generell bessere weil's am Ende immer darauf ankommt was du erreichen willst und wo du am ehesten Abstriche machen kannst. Wenn du die Geometrie reduzieren kannst, ohne dass das Ergebnis schlecht aussieht, dann mach das. Wenn du mit einem Shader was rausholen kannst, mach das auch.

Ich habe vor langer Zeit mal mit jemandem gequatscht, dessen Team mit allen erdenklichen Mitteln das letzte bisschen Performance auf mobilen Geräten herausgequetscht hat. Da waren dann so Sachen bei wie "Wir haben ein Top-Down-Spiel -> die Baumkronen sind immer über allem anderen zu sehen -> wir sparen uns den Z-Test". So etwas geht natürlich nur in dem Kontext.

Du solltest übrigens unterschieden zwischen Transparent und Transparent/Cutout. Das sind zwei komplett unterschiedliche Paar Schuhe. Ein Cutout-Shader ist ein ganz normaler opaker Shader, der aber pro Pixel entscheidet, ob das Pixel gerendert werden soll oder eben nicht. Das ist äußerst günstig und einfach einzubauen. Macht jeder opake Shader auch schon mit dem Z-Buffer.

Ein Transparent-Shader dagegen rendert alle Pixel der Oberfläche; die Frage ist nur immer, wie. Eigentlich müssten die Dinger Translucent-Shader heißen. Transparent-Shader kommen, wenn du nicht gerade Raytracing machst, immer mit inhärenten Problemen, hauptsächlich Sorting betreffend. Transparente Flächen wollen niemals hinter anderen transparenten Flächen gerendert werden, weil die Dinger nicht gut mit dem Z-Buffer klarkommen. Wenn dein Transparent-Shader aber nichts weiter macht als halt Blending, dann ist der auch nicht großartig viel teurer als ein opaker Shader.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...