Italia
Foro

oGL Schatten

 

Frank
Abbing
Ich weiss, dass OpenGL keinen Schattenwurf bereitstellt. Aber vielleicht kennt ja jemand eine Möglichkeit, Schatten possibile simpel zu simulieren?
 
26.08.2006  
 




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...
 
30.08.2006  
 



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...
 
30.08.2006  
 




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.
 
30.08.2006  
 




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. [...] 
 
30.08.2006  
 



[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.
 
30.08.2006  
 




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)
 
30.08.2006  
 




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
!oGL("glReadPixels",0,0,breite&,hoehe&,~GL_BGR,~GL_UNSIGNED_BYTE,bytearray#)
>
 
30.08.2006  
 




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.
 
31.08.2006  
 




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?
 
31.08.2006  
 




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).
 
31.08.2006  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

4.012 Views

Untitledvor 0 min.
Sven Bader05.08.2021
RICOSCH19.11.2014
Thomas Zielinski20.04.2014
Donnie20.03.2013
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie