| |
|
|
Frank Abbing | Ich weiss, dass OpenGL keinen Schattenwurf bereitstellt. Aber vielleicht kennt ja jemand eine Möglichkeit, Schatten possibile simpel zu simulieren? |
|
|
| |
|
|
|
Frank Abbing | Hab was zusammen gebaut, aber richtig echt sieht das nicht aus. Mittels Stencil Buffern sollen sich prima Echtzeitschatten bilden lassen und ich habe auch was in der Richtung erzeugt. Nur richtig kapiert habe ichs eigentlich nicht und es lässt sich auch nicht meinen Vorstellungen entsprechend anpassen. Ich hoffe ja immer noch, dass sich hier jemand schonmal damit befasst hat und es erklären kann... |
|
|
| |
|
|
|
| Also ich hab zwar sicherlich selber nen Schatten aber mit OGL potuto Io l' nicht replizieren.
Man müsste um den Schatten eines Objektes zu erzeugen das Objekt aus sicht der Lichquelle ablichten und auf die Textur der zu beschattenden Elemente legen - hm... |
|
|
| |
|
|
|
Michael Wodrich | Vielleicht hilft das... [...]
Als ich gerade dort war, wurde der Artikel als in Arbeit bezeichnet...
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 30.08.2006 ▲ |
|
|
|
|
Frank Abbing | Naja, alles schon gelesen und nicht richtig verstanden. Ausserdem ist per die Codes GLSL (ab OpenGL 2.0) vonnöten. Tiefentexturen sind auch nur reliefartige Effekte und nicht per den gegenseitigen Schattenwurf unter Grafikobjekten. |
|
|
| |
|
|
|
Frank Abbing | [quote:9b7bd5703b]Man müsste um den Schatten eines Objektes zu erzeugen das Objekt aus sicht der Lichquelle ablichten und auf die Textur der zu beschattenden Elemente legen [/quote:9b7bd5703b] Ebenso arbeiten ja Stencilschatten. Nur sind die Codes dazu alle in C++ und GLSL. Vielleicht kann ja jemand mit C++-Kenntnissen mal einen Code umstellen, dass er mit Profan funktioniert. [...] |
|
|
| |
|
|
|
| [quote:cbc2bf0039=Frank Abbing][quote:cbc2bf0039]Man müsste um den Schatten eines Objektes zu erzeugen das Objekt aus sicht der Lichquelle ablichten und auf die Textur der zu beschattenden Elemente legen [/quote:cbc2bf0039] Ebenso arbeiten ja Stencilschatten. Nur sind die Codes dazu alle in C++ und GLSL. Vielleicht kann ja jemand mit C++-Kenntnissen mal einen Code umstellen, dass er mit Profan funktioniert. [...] [/quote:cbc2bf0039]Aha, lag ich also mit meiner Annahme garnicht so falsch.
Wie eine OGL-Szene jedoch als bitmap abgelichtet wird um das bitmap auf eine Textur zu legen weiß ich jedoch nicht. |
|
|
| |
|
|
|
Frank Abbing | Naja, dafür ist eben der Stencil gedacht. Der Code liegt ja auch vor, nur ist C++ nicht mein Ding. Hier mal Teile des Codes in Profan: KompilierenMarkierenSeparieren!ogl("glColorMask",~GL_FALSE, ~GL_FALSE, ~GL_FALSE, ~GL_FALSE)
Schreiben in den Depth-Buffer ausschalten code
ogl("glDepthMask",~GL_FALSE)
Stencil-Test einschalten, code
ogl("glEnable",~GL_STENCIL_TEST)
ogl("glStencilFunc",~GL_ALWAYS, 1, $FFFFFFF)
ogl("glStencilOp",~GL_KEEP, ~GL_KEEP, ~GL_INCR)
Face-Culling richtig einstellen code
ogl("glEnable",~GL_CULL_FACE)
ogl("glFrontFace",~GL_CCW)
Schatten-Volumen zeichnen
Stencil-Operation umstellen code
ogl("glStencilOp",~GL_KEEP, ~GL_KEEP, ~GL_DECR)
Face-Culling "umkehren" code
ogl("glFrontFace",~GL_CW)
Schatten Volumen noch einmal zeichnen
Face-Culling wieder "normal" einstellen code
ogl("glFrontFace",~GL_CCW)
Schreiben in den Color-Buffer wieder einschalten code
ogl("glColorMask",~GL_TRUE, ~GL_TRUE, ~GL_TRUE, ~GL_TRUE)
Nur dort zeichnen, wo der Stencil-Buffer ungleich 0 ist code
ogl("glStencilFunc",~GL_NOTEQUAL, 0, $FFFFFFFF)
Ein bildschirmfüllendes, halbtransparentes Quadrat zeichnen code
ogl("glColor4f",0.0, 0.0, 0.0, 0.3)
ogl("glEnable",~GL_BLEND)
ogl("glBlendFunc",~GL_SRC_ALPHA, ~GL_ONE_MINUS_SRC_ALPHA)
ogl("glPushMatrix")
ogl("glLoadIdentity")
ogl("glBegin",~GL_TRIANGLE_STRIP)
ogl("glVertex3f",-0.1f, 0.1f, -0.1f)
ogl("glVertex3f",-0.1f,-0.1f, -0.1f)
ogl("glVertex3f", 0.1f, 0.1f, -0.1f)
ogl("glVertex3f", 0.1f,-0.1f, -0.1f)
ogl("glEnd")
ogl("glPopMatrix")
"Normale" Einstellungen wiederherstellen code
ogl("glDepthMask",~GL_TRUE)
ogl("glDisable",~GL_ST TEST )
|
|
|
| |
|
|
|
Frank Abbing | [quote:6ebf3adeec]Wie eine OGL-Szene jedoch als bitmap abgelichtet wird...[/quote:6ebf3adeec] Ist nicht nötig. Den Code habe ich aber vorliegen: KompilierenMarkierenSeparieren |
|
|
| |
|
|
|
Martin Loga | [quote:345f09acf3]Ich weiss, dass OpenGL keinen Schattenwurf bereitstellt.[/quote:345f09acf3] Das ist nicht ganz richtig, es gibt OGL Extensions die TextureShadowing unterstützen.
[quote:345f09acf3]Mittels Stencil Buffern sollen sich prima Echtzeitschatten bilden lassen[/quote:345f09acf3] Das ist richtig, aber bevor ihr in die falsche richtung arbeitet, solltet ihr überlegen welcher Schatten per euch der geeignetere ist.
[quote:345f09acf3]In E3 2003 carmack said that he used monsters and demons in doom3 so that you fight a demon or two in each room for some time instead of intering a room and hunt 10 characters because theres no hardware that can render a big no. of characters with all their shadows and detail. Also carmak uses a model format MD5 that have a good trick.it contains 1 million normals and only 5000 vertices .this enables him to use the big no of normals to render the characters with very high detail and use the smaller no of vertices to calculate the shadow volume and collision detection and so on. this is why theres no screenshots for terrains in doom3.it is impossible to render the shadow of the terrain using the shadow volume with such a big no of vertices used in terrains in modern game engines (unreal 2 for example renders 200000 triangles per frame reduces to 10000 using geomipmapping ).[/quote:345f09acf3] Zitat aus: [...]
Ich habe selbst erfahrungen mit Stencilschatten gemacht und schon ab 5.000 bis 10.000 Triangles und einem jittering von 6 ist das alles bei weitem nicht mehr echtzeitfähig.
Wenn ihr TextureShadows nutzt ist die Komplexität der Geometrie völlig unerheblich. Un wenn das gut implementiert wird, habe ihr auch nur wenige hässliche Kanten (Stichwort Multisampling).
Es gilt also abzuwägen. Hohe Leistung dann TextureShadows oder bessere Qualität dann StencilShadows. Das ist übrigens auch der Grund warum alle neuen Giochi TextureShadows verwenden. |
|
|
| |
|
|
|
Frank Abbing | [quote:8e89c3951c][quote:8e89c3951c]Ich weiss, dass OpenGL keinen Schattenwurf bereitstellt.[/quote:8e89c3951c] Das ist nicht ganz richtig, es gibt OGL Extensions die TextureShadowing unterstützen.[/quote:8e89c3951c] Ja, ab Version 2.0. Dann zumindest nicht per ältere Grafikkarten disponibile.
[quote:8e89c3951c]Ich habe selbst erfahrungen mit Stencilschatten gemacht...[/quote:8e89c3951c] Prima, in welcher Sprache? Meinst du, du könntest ein simples Beispiel in Profan hinbekommen? Vielleicht ein Quad, das einen Schatten auf den Boden wirft?
[quote:8e89c3951c]...und schon ab 5.000 bis 10.000 Triangles und einem jittering von 6 ist das alles bei weitem nicht mehr echtzeitfähig.[/quote:8e89c3951c] Na gut. Echtzeit necessario man ja nur per Giochi. Für grafische Präsentationen mit nur wenigen Objekten sollte das aber reichen.
[quote:8e89c3951c]Wenn ihr TextureShadows nutzt ist die Komplexität der Geometrie völlig unerheblich. Un wenn das gut implementiert wird, habe ihr auch nur wenige hässliche Kanten (Stichwort Multisampling).
Es gilt also abzuwägen. Hohe Leistung dann TextureShadows oder bessere Qualität dann StencilShadows. Das ist übrigens auch der Grund warum alle neuen Giochi TextureShadows verwenden.[/quote:8e89c3951c] In meinem Fall ginge es mir eher um Qualität. Wäre wirklich prima, wenn du mal ein Beispiel bringen könntest.
M.Loga, ganz frisch registriert. Bist du neu hier oder ists ein Deckname eines Bekannten? |
|
|
| |
|
|
|
Martin Loga | [quote:14d0152280]Meinst du, du könntest ein simples Beispiel in Profan hinbekommen?[/quote:14d0152280] Tut mir leid aber ich habe keinerlei Erfahrung mit Profan nur zum Thema OpenGL an sich kann ich helfen.
[quote:14d0152280]In meinem Fall ginge es mir eher um Qualität. Wäre wirklich prima, wenn du mal ein Beispiel bringen könntest.[/quote:14d0152280] Sehe ich ein, ich war zuerst von einem Spiel ausgegangen (nur Spielen im Kopf )
[quote:14d0152280]M.Loga, ganz frisch registriert. Bist du neu hier oder ists ein Deckname eines Bekannten?[/quote:14d0152280] Bin neu hier. Kein Bekannter. Ich bin nicht an Profan aber im allgemeinen an Computer Grafik interessiert. Bin auf eure Seite gestoßen, weil aus diesem Thread ein Link auf einen Artikel meiner Webseite verwiesen hat (gamedev.de). |
|
|
| |
|
|