Jump to content
Unity Insider Forum

ShaderForge und Deferred Lighting


malzbie

Recommended Posts

Hi Leute, ich habe ja gestern das Shaderforge Plugin gekauft und finde es wirklich genial, wie man sich da Shader zusammen basteln kann.

Jetzt habe ich aber ein Problem und vieleicht liegt es nur an meinem Unwissen, dewegen stell ich hier mal die Frage.

Warum habe ich kein DeferredLighting bei meinen erzeugten Shadern?

Obwohl ich BlinnPhong nutze (was laut UnityDoku nötig ist) habe ich nur Forward bei diesen Shadern und nur die Anzahl Lichter, die im Bereich PixelLight in den Qualitysettings eingestellt sind, wirken sich auf das Objekt aus. Klar ich kann das hoch drehen, aber es soll ja nicht unmengen Ressourcen fressen.

Alle anderen Objekte in der Szene mit Unityshadern zeigen die Lichteinwirkung der ganzen Lichter sauber an. So wie es sein soll. Nur der neue Shader nicht.

 

Was ist bei Deferred Lighting anders in den Shadern?

Vielleicht liest das ja jemand mit Shadererfahrung und kann mir das mal erklären. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann ein bisschen erzählen, was ich über Deferred Lighting zu wissen glaube, hab aber keine Ahnung, ob dir das hilft :)

 

Forward Lighting bedeutet, dass der Renderer Objekte Fläche für Fläche zeichnet und dabei die Lichter, die auf das Objekt einwirken, mit einbezieht. Das bedeutet bei Pixel Lights, dass für jedes Pixel jeder Fläche, das gezeichnet wird, die Lichteinwirkung auf jenes Pixel berechnet wird.

 

Deferred Rendering macht das anders: Erst wird das Bild knallhell gerendert (als ob Ambient Light auf white wäre), und zwar nicht nur in den Color Buffer. Gleichzeitig werden die Normalen aller Pixel in einen gleich großen Buffer gerendert, der dann eine Normal Map der gerenderten Szene enthält. Das, und der bekannte Depth Buffer, werden dann benutzt, um Lichtberechnung zu starten.

Dabei skaliert die Berechnung primär mit der Anzahl der Pixel mit und kaum noch mit der Anzahl der Lichter. Außerdem werden durch Overdraw verdeckte Pixel nicht mehr von der Lichtberechnung beachtet.

 

Denke mal, dass deswegen auch BlinnPhong Pflicht ist, da irgendwelche exotischen Lichtberechnungen u.U. Daten bräuchten, die der Deferred Renderer nicht mit ausspuckt.

 

Warum aber sich jetzt Shader Forge quer stellt, kann ich nicht einmal raten...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe jetzt den entscheidenden Eintrag im shaderforge Forum gefunden.

Das Deferred Lighting muss wohl recht Aufwendig sein und die Shader brauchen da irgendetwas Besonderes.

Momentan ist es Fakt, dass es mit den Shadern von Shaderforge nicht geht. Es ist aber in Planung.

Scheinbar will Unity aber mit der neuen Version einiges noch am Shadermodell ändern und solange will der Ersteller von Shaderforge noch warten um nicht alles 2Mal zu machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...