Gouraud - Shading
-
Ich verwende gerade Gouraudshading. Da ergibt sich nun folgendes Problem:
Angenommen ich habe eine Straße, die 100 Meter lang ist und alle 10 Meter ist eine Lichtquelle. Wenn die Straße nur aus 2 Dreiecken besteht, sieht man die Lichtquellen gar nicht.
Mehr Dreiecke würden sich negativ auf die Framerate auswirken, Phong-Schattierung funktioniert nicht.Gibt es irgendeine andere Lösung, die die Framerate nicht allzusehr beeinflusst?
-
sorry, wenns vielleicht dumm ist, aber wie wärs mit vorberechneten lightmaps?
-
Du könntest die Farbewerte anders interpolieren. Anstatt den Farbverlauf gleichmäßig über das gesamte Polygon zu verteilen, bastelst du dir einfach einen eigenen Funktions-Algorithmus, welcher auch bei einem niedrigen Winkel eine helle Farbe berechnet (für die Vertices)
Dann musst du für die Farbberechnung der einzelnen Pixel eine andere Funktion verwenden...
Insgesamt aber nur zufriedenstellend, wenn du zwischen jeder Lichtquelle einen Vertex hast. Der Rechenaufwand für die paar Vertices zwischen den Lichtern (insgesamt nur 20 Vertices mehr) ist doch minimal, aber du sparst dir das wesentlich rechenaufwenidigere Phong-Shading. Dann erst wird die Performance leiden.Edit: Hab das Problem zuerst nicht richtig gelesen
-
alex_svejda schrieb:
Ich verwende gerade Gouraudshading. Da ergibt sich nun folgendes Problem:
Angenommen ich habe eine Straße, die 100 Meter lang ist und alle 10 Meter ist eine Lichtquelle. Wenn die Straße nur aus 2 Dreiecken besteht, sieht man die Lichtquellen gar nicht.
Mehr Dreiecke würden sich negativ auf die Framerate auswirken, Phong-Schattierung funktioniert nicht.Gibt es irgendeine andere Lösung, die die Framerate nicht allzusehr beeinflusst?
du schafst auf einer dx8 graka über 100millionen polygone/s. da kannst du locker 2000polygone für die 100Meter verbrauchen ohne dir sorgen machen zu müssen. erst wenn du pro frame bei über 200 000 polygonen bist, solltest du dir gedanken drüber machen, dass es weniger werden. aber dann hast du sicherlich schon eine andere limitierung erreicht, z.b. zuviel speicherverbrauch.
rapso->greets();
-
otze schrieb:
sorry, wenns vielleicht dumm ist, aber wie wärs mit vorberechneten lightmaps?
Ist IMHO nicht dumm.
Bye, TGGC \-/
-
Wenn ich mehr Vertices verwende, sehe ich zwar Licht aber ich sehe z.B. nicht den Kreis eines Spotlights. Dafür wären extrem, viele Vertices nötig. Außerdem wird der Übergang von Licht und Schatten immer kantig sein.
-
dann nimm le lightmap
rendere einmal den effekt des lichtes auf eine Textur(beim laden des spiels kann man das gut machen),dann geht dasaber eins frag ich mich: was ist, wenn da ne kante ist, muss man dann 2 separate lightmaps berechnen, oder wird die lightmap plan berechnet, aber im programm dann geknickt?
-
alex_svejda schrieb:
Wenn ich mehr Vertices verwende, sehe ich zwar Licht aber ich sehe z.B. nicht den Kreis eines Spotlights. Dafür wären extrem, viele Vertices nötig. Außerdem wird der Übergang von Licht und Schatten immer kantig sein.
Was meinst du jetzt mit kantig? Da ist nix kantig, es sei denn du benutzt flat shading
Wenn du unbedingt ein spotlight willst, benutze
a)Nicht empfohlen: Phong Shading
oder
b)ganz einfach ne Lightmap, wie otze sagte.Falls deine lichter sich zur runtime bewegen, kannst du natürlich keine Lightmap benutzen. In dem Fall könntest du es so machen wie ich oben beschrieben hab.
-
evtl. käme noch per pixel lighting über shader in frage, was für spotlights allerdings kompiliziert sein dürfte...
lightmaps wären imho die beste lösung...