Soft Shadow mit OpenGL

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
tdoly
Beiträge: 4
Registriert: 22.06.2009, 03:10

Soft Shadow mit OpenGL

Beitrag von tdoly »

Hallo Leute,

ich bin relativ neu im Lande und brauche dringend eure Hilfe.
Ich muss für ein Uniprojekt bis ende Juli in einer vorgegebenen Szene mit Lichtquelle und verschiedenen Objekten.. Soft Shadows erzeugen.
Leider habe ich im Internet keine konkrete Algorithmen dazu gefunden.
Es gibt nur fake Soft Shadows, was ich benötige wären echte Soft Shadows :D .. wer mir ein paar links schicken könnte, oder mir Tipps geben könnte,
wie ich es anstelle, wäre ich ihm sehr verbunden.
Ah wie eingangs erwähnt soll das ganze mit OpenGL gemacht werden.
Also das Framework ist vorgegeben :D muss zum Glück nicht selber machen :D


Vielen Dank

Frischling
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 577
Registriert: 05.07.2003, 11:17

Re: Soft Shadow mit OpenGL

Beitrag von Lord Delvin »

EDIT: Musste mich nur mal wieder über die arbeitsweise vieler Menschen an deutschen Hochschulen aufregen:-/

Ich erinnere mich, dass hier einige Diskussionen zu gab, also Forensuche kann sicher was.
Ansonsten ist in Uniprojekten die Codequalität meist eher sekundär...das ist zumindest der Eindruck, den ich beim Durchsehen der meisten Projekte mit denen ich zu tun haben musste hatte.
Deswegen könnte man auch einfach irgendeine beliebige Technik die Schatten erzeugt nehmen und einfach ganz oft drüberzeichnen wobei man die Lichtquellen leicht verschiebt...das wäre echt und würde vermutlich ganz gut aussehen, ist aber ziemlich dämlich und langsam.
Ansonsten musst du warten, bis die Antworten, die von der Materie wirklich Ahnung haben...die beschränkung auf OpenGL hört sich aber fast so an, als wolltest du anderleuts Lösung abgeben...tststs.
Gruß
Zuletzt geändert von Lord Delvin am 22.06.2009, 08:41, insgesamt 1-mal geändert.
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
Benutzeravatar
Schrompf
Moderator
Beiträge: 4852
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Soft Shadow mit OpenGL

Beitrag von Schrompf »

http://developer.download.nvidia.com/wh ... ration.pdf

ist die einfachste Lösung, wenn Du eine funktionierende ShadowMapping-Implementation hast. Frisst zwar entgegen der Aussagen von NVidia Grafikkarten zum Frühstück, aber ist sehr einfach zu implementieren. Musst Du nur noch zu GlSlang konvertieren.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
tdoly
Beiträge: 4
Registriert: 22.06.2009, 03:10

Re: Soft Shadow mit OpenGL

Beitrag von tdoly »

Vielen Dank für die schnelle Antwort.. werde es mal abchecken.. super .. vielen Dank
tdoly
Beiträge: 4
Registriert: 22.06.2009, 03:10

Re: Soft Shadow mit OpenGL

Beitrag von tdoly »

Ok habe es mir mal angeschaut.. ganz easy eigentlich.. leider nur für DirectX :( es fehlt ein bisle die theorie.. wie das ganze aufgebaut ist.. ich muss ja nicht nur den Code implementieren, ich muss später auch in 45 Minuten darüber referieren können :D aber vielen Dank trotzdem für die schnell Hilfe.. werde mal weiterschauen..

@Lord Delvin

ich möchte nicht den Code haben, sondern einfach mal ne Idee.. wie es funktionieren könnte... und vielleicht gibt es ja echte Experten, die sich sehr gut mit OpenGL auskennen und mir einen Ansatz geben könnten.. denn eigentlich habe ich noch keinen Algorithmus für echte Softshadows gesehen... leider.. vorgefertigte Funktionen sind zwar gut.. für das reine Programmieren.. aber nicht fürs Verständnis.. will ja noch was mitnehmen können :D
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Soft Shadow mit OpenGL

Beitrag von Zudomon »

Hallo tdoly!
Die Frage ist, wie viel Erfahrung du mit der Thematik überhaupt hast. Wenn du noch nie Schatten jeglicher Art implementiert hast, dann solltest du das erstmal nachholen.
Grundlegend gibt es im Echtzeit3D Bereich, also OpenGL zwei Grundlegende Schattentypen, die jeweils ihre Vor- und Nachteile haben:
Achso, da fällt mir noch ein: Soll denn der weiche Schatten in echtzeit geändert werden, oder reicht es, wenn dieser in Lightmaps oder Vertex-Farbe abgespeichert wird? Mein Beitrag bezieht sich nun erstmal auf die in Echtzeit änderbaren Schatten.
Stencil Volumes und Shadow Maps.
Nur kurz, denn darüber gibt es schließlich genug Material um sich genauer zu informieren:
Bei Stencil werden Volumen von jedem Objekt gebildet und durch den Stencil-Test lassen sich somit alle Pixel, die innerhalb solcher Volumen bilden markieren. Jedes Pixel, was dann nicht in einem Schattenvolumen liegt, ist beleuchtet. Nachteil ist, dass viel Overdraw entsteht und keine Alpha-Test-Texturen funktionieren, weil dies nur auf die Geometrie angewendet wird.
Beim Shadowmapping rendert man die Tiefenwerte in eine Textur und projeziert diese dann auf die Geometrie, die beleuchtet werden soll. So kann man an jedem Pixel die Entfernung zur Lichtquelle berechnen und diese mit dem Wert in der Shadowmap vergleichen und weiß so, ob diese im Schatten liegt oder nicht.
Bei weichen Schatten kommt es nun drauf an, welche Technik du zugrunde legst. Beim Stencilschatten könnte man statt für eine Lichtquelle, das ganze für mehrere Lichtquellen berechnen. Schiebt man diese Lichtqullen zu einem kleinen Volumen zusammen und bekommt jede eine Teilhelligkeit der endgültigen Lichtquelle, so kann man exakte pixelgenaue weiche Schatten bilden. Das ganze verschlinkt aber extrem viel Rechenzeit.
Bei den Shadowmaps wird einfach mehrfach in die Shadowmap gesampelt. Dabei wird die Texturkoordinate immer etwas vom Zentrum verschoben. Das Problem ist, dass man bei einem Pixel eigentlich nicht wissen muss, welche Fläche die naheste zur Lichtquelle ist, so wie es in der Standard-Shadowmap-Implementierung getan wird, sondern man muss herausfinden, welche Fläche in der Umgebung als Lichtblocker fungiert. Das wird in dem von Schrompf geposteten Artikel auch getan. Denn wenn man den Abstand zwischen Blocker und Pixel und den Abstand zur Lichtquelle kennt, kann man berechnen, wie weich der Schatten sein müsste. Dadurch ändert sich dann der Radius beim sampeln. Sorry, wenn das alles etwas schwammig und oberflächlich formuliert ist. Ich möchte dir erstmal einen Überblick geben, was da für Möglichkeiten sind. Wenn du dich für eine Variante entschieden hast, kann man darauf ja noch einmal gezielter eingehen.

Hier hab ich noch ein Beispiel beider Varianten:
Soft Stencil Shadows
Soft Stencil Shadows
Soft Shadow Maps
Soft Shadow Maps
Gruß
Zudo
tdoly
Beiträge: 4
Registriert: 22.06.2009, 03:10

Re: Soft Shadow mit OpenGL

Beitrag von tdoly »

Vielen Dank Zudo für die gute und schnelle Antwort.. ich habe bisher noch nicht allzuviel gemacht mit Schatten... werde dies aber so schnell wie möglich nachholen. Die Verfahren klingen gut.. und jetzt habe ich auch mal zwei Verfahren mit dem ich was anfangen könnte.
Ach und Du hast recht ich habe vergessen zu erwähnen, dass alles in Echtzeit gerendert werden muss :D hehe..
Ich nehme an, dass Shadowmaps verständlicher und leichter zu impelementieren sind, ich werde mich jetzt mal darüber schlau machen..
vielen Dank für die Superantwort :P
Antworten