Ich lerne, wie man 3D-Entwicklung auf Android macht. Ich begann mit einem einfachen rotierenden Planeten mit einigen Wolken. Ich habe die letzten 2 Tage damit verbracht, atmosphärischen Schein auf den Planeten zu bringen. Ich schaute online und versuchte mit Shadern zu arbeiten, konnte aber nicht weit kommen.
Meine Frage ist, was ist der beste Weg, dies zu erreichen? Ich schiebe in die richtige Richtung kann alles sein, was ich brauche.
Ich habe einen Screenshot des Planeten, den ich bisher gesehen habe, sowie das Endziel, für das ich fotografiere, angehängt.
Danke für jede Hilfe.
Aktueller Fortschritt:
Endziel: Ссылка
Was Sie brauchen, wird in der Regel in Post-Prozess-Render-Durchlauf getan.So zum Beispiel:
Übergeben Sie -1: Rendern Sie das Planetenmodell in den FBO-Texturanhang. Pass-2: Setzen Sie das Bildschirm-Quad und setzen Sie die Textur aus dem vorherigen Durchlauf als Sampler einheitlich an.
Dann im Fragment Shader einen Glow-Effekt anwenden. Für das Glühen gibt es viele Möglichkeiten, dies zu tun.Zum Beispiel kannst du die Silhouette des Planeten im ersten Durchgang zeichnen, ihm Farbe geben und dann mit Glattschritt () blenden lege es unter die Hauptplanetenstruktur. In der Tat hier können Sie viele Code-Beispiele sehen, wie Sie kreisförmige Objekte leuchten lassen können.
Noch eine Sache. Das Hinzufügen von blurbasiertem Leuchten kann die Leistung auf mobilen Geräten erheblich beeinträchtigen. Es gibt eine Technik namens "Distance Field". Valve verwendet, um Schriften zu anti-alias.Aber es kann auch verwendet werden, um zu glühen.Sie erstellen eine Entfernung Feld Textur Textur Kopie Ihres Planeten Silhouette einmal, dann in der Post-Prozess-Pass verwenden Sie es Glatte Effekt zu tun.Glück für Sie gibt es Funktionen, um es zu generieren. Hier finden Sie die Papiere und den Code, wie Sie es bekommen fertig.
Sieht so aus, als wollt Ihr Rim Lighting. Dies erfordert keine zusätzlichen Durchgänge.
c.f. Ссылка
Hinweis: Im Beispiel gibt es eine Menge Extras, aber der entscheidende Punkt ist: Sie vergleichen die Normale an jedem Scheitelpunkt mit der Richtung des Ansichtsvektors Ihrer Kamera. Wenn sie im rechten Winkel stehen, (Punktprodukt == 0) wenden Sie "volles" Licht an. Wenn sie parallel sind (Punktprodukt == Länge), wenden Sie kein Licht an.
%Vor%