3D Forum > Unity5 GI Realtime Problem

Unity5 GI Realtime Problem

09.05.2015 14:06
 
BrixSa. 09 Mai. 2015, 14:06 Uhr
Hallo Leute,

ich bin gerade dabei mich ein wenig mit Unity5 auseinander zusetzen und hoffe von Euch kann mir einer nen Tip geben. Und zwar wollte ich ein Objekt mit einem emmissive material belegen, was ja ansich kein Problem ist.

Was ich nicht verstehe ist:

- warum muss alles (inkl. des Objektes selbst) als static markiert sein, um von der GI berechnet zu werden
- warum erzeugt dieses emmisive material keinerlei Schatten

Fände es halt cool, wenn man nen Objekt mit einem emmissive material auch bewegen kann (physik) und es weiterhin die Szene bleuchtet. Und gibt es eine Möglichkeit, einem normalen Licht eine "Form" zu geben? Daran scheitere ich nämlich auch gerade noch irgendwie beim umgehen dieses emmissive material Problems

Grüße
 
SleepySa. 09 Mai. 2015, 14:31 Uhr
Ohne Garantie das dies so 100% richtig ist:

Wenn ein Objekt als Static markiert wird dann wird alles was mit dem Objekt zu tun hat über PhysX 2.8.3 abgearbeitet. Mit anderen Worten die Grafikkarte berechnet das! Diese Berechnungen sind natürlich rechen aufwendig deswegen sind nicht alle Objekte automatisch Static.

Der Unterschied zwischen Static und nicht Static ist also ob die Grafikkarte die arbeit machen darf oder nicht.

warum erzeugt dieses emmisive material keinerlei Schatten


Weil du für emissive eine Lichtquelle brauchst, emissive ist nur ein Posteffekt es findet hier kein wirkliches Raytraceing statt. Wenn du Schatten willst brauchst du emissive + eine Lichtquelle.

Vielleicht weis das ja aber jemand anderst noch besser smile

 
TilesSa. 09 Mai. 2015, 15:11 Uhr
Hallo Brix,

Static ist schlicht statische Levelgeometrie die sich im Spiel nicht bewegt. Die statische Geometrie wird anders berechnet als dynamische Levelgeometrie.

Es wird zwar daran gearbeitet auch die dynamische Geometrie mit dem Realtime GI zu beglücken, aber im Moment geht damit nur statische Geometrie. Für Dynamisches musst du mit Lightprobes arbeiten. Ich habe das aber auch noch nicht komplett durchschaut. Bin da auch noch am rumprobieren.

Und das mit dem Schatten hat ja Sleepy schon erwähnt. Schatten können nur Lichter werfen smile
 
BrixSa. 09 Mai. 2015, 16:44 Uhr
ah ok, danke für die Infos smile
Na ich hoffe mal das die das bald implementieren. wird wohl aber dann unity6 heissen oder so

und mit nem Licht, wie muss ich das Licht einstellen, damit ne längliche "lichtaussendungsstelle" zu erkennen ist? was fürn light nehm ich da? point oder spot oder doch nen area ? ich vermute mal point oder spot , was ich dann mit nem lightcookie versehe oder lieg ich da komplett falsch und ich kann den lichtern auch so ne "form" geben ?

greets
 
GuyGoodSa. 09 Mai. 2015, 17:43 Uhr
Ohne Garantie das dies so 100% richtig ist:

Wenn ein Objekt als Static markiert wird dann wird alles was mit dem Objekt zu tun hat über PhysX 2.8.3 abgearbeitet. Mit anderen Worten die Grafikkarte berechnet das! Diese Berechnungen sind natürlich rechen aufwendig deswegen sind nicht alle Objekte automatisch Static.


Das ist 100% falsch, wäre schön, wenn du das Löschen könntest, damit zukünftige Leser dadurch nicht verwirrt werden.

 
SleepySa. 09 Mai. 2015, 17:51 Uhr
Das ist 100% falsch, wäre schön, wenn du das Löschen könntest, damit zukünftige Leser dadurch nicht verwirrt werden.


Hättest du den dann die güte und würdest die richtige Antwort hinschreiben statt einfach nur zu behaupten das es Falsch ist ?
Danke
 
TilesSa. 09 Mai. 2015, 18:15 Uhr
Sleepy verwirrt halt gern die Leute ^^

Wie gesagt, wenn ein Objekt statisch markiert ist dann heisst das nur dass sich dieses Objekt im Level nicht bewegt. Sobald du das als statisch markierst lässt sich das Objekt zum Beispiel nicht mehr über Transformcode bewegen. Statisch bedeutet auch dass das Objekt eine Lightmap haben kann. Nur ein als statisch markiertes Objekt wird beim Lightmap Baken berücksichtigt. Und seit Unity 5 bedeutet es das dieses Objekt auch Realtime GI kann. Statische und dynamische Grafik wird einfach unterschiedlich berechnet.

Alle Grafik geht über die Grafikkarte. Physikalische Berechnungen gehen über PhysX. Das hat aber nichts mit statisch oder dynamisch zu tun. Sondern ob da ein Collider dranhängt und tatsächlich Physik berechnet werden muss. Und Shader gehören da auch nicht dazu. Auch wenn da das Wort Physikalisch in einem PBR Shader vorkommmt.

längliche "lichtaussendungsstelle"


Hmm, wie gesagt, das mit dem Einfärben von dynamischen Objekten ala GI soll mit einer Lightprobe gehen. Bevor du also nach den Lichtarten schaust würde ich mir erst mal das mit den Lightprobes ansehen. Das habe ich aber noch nie gemacht. Das weiss ich selber nicht wie das geht. In der Free gab es ja damals kein Deferred Rendering. Und in Unity 5 habe ich das noch nicht probiert.

Die einzige Lichtquelle die parallele Strahlen aussendet und kein Falloff hat ist das Directional Light. Das verwendet man für Sonne. Für dein selbstleuchtendes Objekt bliebe also nur eins der anderen Lichter übrig. Probiers halt aus was die gewünschte Wirkung erzielt.

Spotlights mit Cookies wäre mal ein Anfang smile
 
SleepySa. 09 Mai. 2015, 18:44 Uhr
Ja okay aber es geht doch um die Performance ob static oder nicht static.

Die frage war doch:
warum muss alles (inkl. des Objektes selbst) als static markiert sein, um von der GI berechnet zu werden


Weitere Infos hab ich auch hier gefunden:
http://docs.unity3d.com/Manual/DrawCallBatching.html
 
TilesSa. 09 Mai. 2015, 18:50 Uhr
Ja richtig, die Frage war wieso man das als Static markieren muss. Und die Antwort ist weil für dynamische Objekte keine GI gebacken werden kann. Weil die eben anders berechnet werden.

Das hat aber nichts mit Performance oder PhysX zu tun. Und mit dem Drawcall Batching auch nicht ^^
 
khaosSa. 09 Mai. 2015, 18:55 Uhr
Yarp
 
 

 


 
 
© 3D-Ring - deutsche 3D Software Community, Archiv 2001 - 2006