Dithering um Transparenz zu umgehen (Patreon)
Content
Transparente Objekte sind böse. Egal wo, egal wann, ihr wollt in Videospielen immer versuchen transparente Oberflächen so gut wie möglich zu verhindern. Zu Zeiten des N64 war das noch egal, da wars ok, wenns furchtbar aussieht, aber transparente Oberflächen können zu enormen Slowdowns führen und so gut wie immer für Sortierungs-Fehler. Bedeutet zwei Objekte, die transparent sind und die Kamera hintereinander rendert können in vielen fällen falsch herum gerendert werden, dass das hintere vorne ist. Ein Workaround, den viele Spiele aktuell nutzen, ist "dithering". Dithern ist theoretisch der Prozess von abwechselt transparenten Pixel mit einen nicht transparenten Pixel.. Stellt euch ein Schachbrett vor, wo jede schwarze Fläche transparent ist und jede weiße ist sichtbar. Wenn ihr das Schachbrett nehmt, ganz viele Felder rein macht, es riesen groß zieht und dann rückwärts bewegt könnt ihr so in etwa durchgucken, aber nicht ganz. Das ist dithern! Da es nur komplett unsichtbar oder komplett sichtbar gibt haben wir keine Sortierungs-Probleme und auch alle anderen Sachen klappen problemlos, z.B. Schattenberechnung!
Was ich damit sagen will: Bäume transparent zu schalten, wenn sie nah der Kamera sind, damit man genug sieht, ist eine doofe Idee und wird die Perfomance killen. Besser ist es Objekte zu dithern! Oder in meinem Fall eine Noise-Map zu nutzen, das ist eine Textur, die angibt wie schnell sich wo etwas auflösen soll, da das Dithermap erstellen per Amplify Shader Editor zu viel Perfomance frisst. Resultat sieht ganz ok aus und macht seinen Job!
Oh, wichtig ist dann nur, dass ihr das Objekt dupliziert und damit den Schatten rendern lässt (es gibt die Option im Mesh Renderer, dass nur der Schatten gerendert werden soll und nicht das Objekt). Denn klar: Wenn sich der Baum auflöst würde man das auch im Schatten sehen. Daher erstellen wir also ein "Dummy Objekt", das für den Baum einen Schatten wirft! Und schon ist alles so wie man es erwartet!