ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4528622
Jetzt (Chat):
14 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
Algorithmen und Datenstrukturen
Stencil Shadows mit Vertex-Shader
NormalSeite: < 1 2
AutorThema
Return FALSE Offline
ZFX'ler


Registriert seit:
08.03.2002

Schweiz
Re: Stencil Shadows mit Vertex-ShaderNach oben.
cool

ich wie wär's mit open source
ich finde immer weniger zeit,... ich hab zwar die ganze theorie von shadow volumes durchgelesen, (mit cpu/gpu variante)... cpu variante habe ich implementiert, aber zuerst nach der Pass variante. dort kann man eben ned durch das shadow volume mit der kamera. Beim Carmack's reverse müsste man cappen. Ich werd also ganz sicher die GPU benutzen. Viel belastung hin oder her. Dafür werden für die Modelle die schatten werfen immer abgemagerte welded meshes bentzt.. kein problem. Machen sie bei indiana jones and the emperors tomb auch so. Siehst du jeden finger projeziert einfach bei genauerem hinsehen ies er total spitz... indys nase wird nicht projeziert und der hut, die waffen, auch nicht.
ich schätze mal so 300 vertices für das schattenmodell.

Ich finde shadow volume ist schlecht dafür geeignet den schatten für viel geometrie zu erstellen. was ist bei carmack üblich? 4 lichter, 2 monster? und laufen tut's mit 13 fps auf einer radeon 9700

solche arbeit gehört einfach auf die grafikkarte, und wenn die grafikkarten soweit sind, das sie vertices on-the-fly erstellen können, bin ich froh das ich schon EU-kompatibel bin LOL

ich wär also mega interessiert am shader, und sonstigem code. aber pressiert noch nicht so. hab leider momentan wenig bis keine zeit.
18.06.2003, 08:56:39 Uhr
eLTi Offline
ZFX'ler


Registriert seit:
06.03.2002

Deutschland
Re: Stencil Shadows mit Vertex-ShaderNach oben.
hi!
bei mir war das Problem folgendes: man hat ja bei jeder Kante zwei Vertices und deren Normalenvektoren, außerdem hat man nochmal zwei Vertices mit derselben Position und halt anderen Normalenvektoren. Also v0 und v1 haben unterschiedliche Position aber denselben Normalenvektor, v2 hat die gleiche Position wie v0 und v3 die gleiche wie v1, außerdem haben v2 und v3 den gleichen Normalenvektor. T1 hat demnach die Indices 0,1,2 und T2 hat 0,2,3
Wenn du den IB füllst, vertausche v1 und v2, sowie v2 und v3. Also für T1 1,0,3 und für T3 1,3,2.
Somit hat es bei mir funktioniert... ich hab mich aber nicht an das Sample von ATI gehalten...
18.06.2003, 15:50:01 Uhr
Jack the Ripper Sorry - lasse mich grade von ner geilen Domina auspeitschen .... jaaaahh
ZFX'ler


Registriert seit:
06.02.2003

Baden-Württemberg
192808767
Re: Stencil Shadows mit Vertex-ShaderNach oben.
@Return FALSE:
Wenn ich das richtig verstanden habe, dann forderst du, dass jmd. seinen Code seiner Shatten-Funktionen freigibt.......bei mir bist du da leiter an der falschen adressen:
Ich helfe dir zwar gerne und bin auch bereit dir ein paar Codeschnipsel für dinge die bei dir einfach nicht gehen und man den Fehler nicht finden kann zu geben, damit man die beiden vergleichen kann........aber im großen und ganzen bin ich der meinung, dass man alles selber schreiben sollte....ich habe in meiner engine alles selbst geschrieben und benutzte solche dinge wie das ATI-Sample nur zum lernen.

@Return FALSE:
Du hast einen Fehler: Es muss T1 0,1,2 und T2 hat 2,1,3 heisen.
Was das vertauschen der Vertices bewirken soll, frag ich mich auch...du drehst ja die Vertices um, so dass die Frontside zur backside wird - dann stimmen die normalvectoren nicht mehr und das ganze müsste falsch sein.....dort ist sogar noch ein fehler drin: Dieses mal muß es T1 1,0,3 und für T3 3,0,2.

18.06.2003, 16:45:55 Uhr
Ripper-Software
eLTi Offline
ZFX'ler


Registriert seit:
06.03.2002

Deutschland
Re: Stencil Shadows mit Vertex-ShaderNach oben.
@jack
wenn du aber die "normalen" Indices, also T1(0,1,2) sowie T2(0,2,3) verwendest, dann zeigen auch einige Quads nach innen unter bestimmten Umständen, da man ja nie weiß, welche der beiden Verticespaare weggezogen wird.... mit dem Umtauschen der Indices wie oben beschrieben, funktioniert es bei mir....
18.06.2003, 17:18:17 Uhr
Return FALSE Offline
ZFX'ler


Registriert seit:
08.03.2002

Schweiz
Re: Stencil Shadows mit Vertex-ShaderNach oben.
@jack the ripper:

es freut mich für dich das du alles selber geschrieben hast, ist sicher ein tolles gefühl.(ironie ende)

nur so nebenbei, bin ich auch deiner meinung, und hätt das auch nur als lerneffekt benutzt, oder evtl nicht mal das, nur mit anderen implementierungen verglichen, gegebenfalls meine vorhandene verbessert. Oder kopierst du jedes OpenSource projekt 1:1?

punkto "fordern zum *Freigeben*"... hm, behalt es ruhig, kein interesse. als ob ich was gigantisches fordern würde, ist immer gut wenn man viel von seiner arbeit hält, in der sache hab ich genug erfahrungen machen müssen.

tschüss
18.06.2003, 19:05:31 Uhr
Jack the Ripper Sorry - lasse mich grade von ner geilen Domina auspeitschen .... jaaaahh
ZFX'ler


Registriert seit:
06.02.2003

Baden-Württemberg
192808767
Re: Stencil Shadows mit Vertex-ShaderNach oben.
@Return FALSE:
Ich glaube du hast mich ein wenig falsch verstanden und ich habe dich ebenfalls ein wenig falsch verstanden...........aber das du dummer ***** gleich so ausrasten musst, muß ja auch nicht sein...

...ich finde es echt schade, dass solche leute in so einer Community sind.....

MufG
19.06.2003, 12:57:22 Uhr
Ripper-Software
Stefan Zerbst Offline
Administrator


Registriert seit:
25.02.2002

Deutschland
Re: Stencil Shadows mit Vertex-ShaderNach oben.
*räusper*

Etwas mehr Disziplin bitte!

Ciao,
Stefan
19.06.2003, 13:12:43 Uhr
ZFX - 3D Entertainment
Jack the Ripper Sorry - lasse mich grade von ner geilen Domina auspeitschen .... jaaaahh
ZFX'ler


Registriert seit:
06.02.2003

Baden-Württemberg
192808767
Re: Stencil Shadows mit Vertex-ShaderNach oben.
ja...es tut mir ja leid...ich bin zu arg aus mir rausgekommen......aber manche leute stressen mic halt...
19.06.2003, 14:12:16 Uhr
Ripper-Software
Return FALSE Offline
ZFX'ler


Registriert seit:
08.03.2002

Schweiz
Re: Stencil Shadows mit Vertex-ShaderNach oben.
Zitat:
...ich finde es echt schade, dass solche leute in so einer Community sind.....


Ich will ja nicht hoffen das jeder sofort verband werden sollte der dir seine Meinung sagt, auch wenn ich zugeben muss, das ich meinerseits ein wenig zu schnell beleidigt bin, ich entschuldige mich dafür. Ich empfand es so als ein Oben-ab Verhältniss in dem du meinem Post abgewiesen hast.

Okay, nachdem wir uns beide gegenseitig entschuldigt haben, wär's das

Tschüss
19.06.2003, 18:10:21 Uhr
Jack the Ripper Sorry - lasse mich grade von ner geilen Domina auspeitschen .... jaaaahh
ZFX'ler


Registriert seit:
06.02.2003

Baden-Württemberg
192808767
Re: Stencil Shadows mit Vertex-ShaderNach oben.
OK....jetzt finde ich es nicht mehr schade, dass solche Leute in der Community sind....

Kann sein, dass es "von ober herrab" klang - so wars aber echt nicht gemeint...

..Hab nur gedacht du wärst einer von denen, die nie ihren arsch vor den PC bewegen um das ganze zu zeug lernen, trotzdem eine Engine schreiben wollen und dann alles per copy und past einbauen - also nur von opensource leben....aber wenn das nicht so ist, ist alles cool.

MfG
19.06.2003, 18:20:14 Uhr
Ripper-Software
Stefan Zerbst Offline
Administrator


Registriert seit:
25.02.2002

Deutschland
Re: Stencil Shadows mit Vertex-ShaderNach oben.
Hi,

Zitat:
Ich finde shadow volume ist schlecht dafür geeignet den schatten für viel geometrie zu erstellen. was ist bei carmack üblich? 4 lichter, 2 monster? und laufen tut's mit 13 fps auf einer radeon 9700

Das würde ich so nicht stehen lassen. Der Overhead für die Volume Calculation (auf der CPU) ist minimal. Das Rendern kostet die meiste Zeit. Zudem sollte man nicht von der Alpha Version auf das fertige Produkt schliessen. Das wird mit Sicherheit auch auf einer 9700 gut laufen.

Zitat:
solche arbeit gehört einfach auf die grafikkarte

Auch das würde ich so nicht stehen lassen. Wenn Du das Skinning nicht auf der GPU machst, und wenn man die geskinnten Daten auch noch für Kollisionstests usw. benötigt, dann macht es bei Character Animation wenig Sinn den Shadow Volume auf der GPU zu machen weil man die Vertexdaten erst über den Bus dorthin schicken müsste. Sinn macht das nur, wenn man die Vertexdaten in einem statischen Buffer auf der GPU sitzen hat, und sich den Memory Overhead leisten kann.

Man sollte die Grafikkarte lieber mit anderen Dingen zubomben (z.B. Renderpasses und Texturen) und darauf achten, dass man die CPU auch das eine oder andere erledigen lässt.

Aber meine Sicht der Dinge hatte ich ja schon mal verkündet

Ciao,
Stefan
19.06.2003, 18:22:05 Uhr
ZFX - 3D Entertainment
Return FALSE Offline
ZFX'ler


Registriert seit:
08.03.2002

Schweiz
Re: Stencil Shadows mit Vertex-ShaderNach oben.
ja.. beim skinning könnte das ein problem werden.

gut, ich hab auch lange über beide methoden nachgedacht. Ich hab mehrere Vergleichsappz, welche die zwei methoden gegenüber stellen. Wenn man jetzt nur die FPS in Betracht zieht, habe ich mit meiner GeForce3Ti200 120, anstatt 60 fps, wenn's über die GPU läuft. Aber wie von dir gesagt, diese Anwendungen waren dann aber nur dafür optimiert, den Schatten eines highpoly meshes zu demonstrieren. In einer fertigen Szene fallen ja viele andere Sachen ins Gewicht.
Jemand (name vergessen) von NVidia hat ja ein Paper ausgegeben, wann die GPU NICHT für die Shadow Volumes geeignet sind.

Okay, ich werd ganz einfach beides implementieren. Damit kann ich für statische objekte die dynamic lighting ausgeliefert sind schöne lowpoly welded meshes vorbereiten. Es gibt wohl keine Nonplusultra Lösung. Spieleprogrammieren kommt mir manchmal wie basteln vor
19.06.2003, 18:47:17 Uhr
Jack the Ripper Sorry - lasse mich grade von ner geilen Domina auspeitschen .... jaaaahh
ZFX'ler


Registriert seit:
06.02.2003

Baden-Württemberg
192808767
Re: Stencil Shadows mit Vertex-ShaderNach oben.
Ich denke auch ein gut Mischung aus CPU berechnetten und GPU berechneten Schatten ist die Beste Lösung.
19.06.2003, 18:51:12 Uhr
Ripper-Software
Jack the Ripper Sorry - lasse mich grade von ner geilen Domina auspeitschen .... jaaaahh
ZFX'ler


Registriert seit:
06.02.2003

Baden-Württemberg
192808767
Re: Stencil Shadows mit Vertex-ShaderNach oben.
Hi,
meine degQuads waren doch richtig...der Fehelr ist wo anderst....

Was ist daran Falsch?:
Code:
vs.1.1

dcl_position0 v0 
dcl_normal0   v1

def c0, 5, 0, 0, 0

sub r1 , c91, v0

dp3 r1.w, r1, r1
rsq r1.w, r1.w
mul r1, r1, r1.w

dp3 r3.x, r1, v1

slt r3.w, c0.y, r3.x
mul r3.w, r3.w, c0.x

mad r4, -r1, r3.w, v0

m4x4 oPos, r4, c16


Code:
//       - Render - 

D3DDevice->SetRenderState( D3DRS_ZWRITEENABLE,  FALSE );
D3DDevice->SetRenderState( D3DRS_STENCILENABLE, TRUE );
D3DDevice->SetRenderState( D3DRS_SHADEMODE,     D3DSHADE_FLAT );

D3DDevice->SetRenderState( D3DRS_STENCILFUNC,  D3DCMP_ALWAYS );
D3DDevice->SetRenderState( D3DRS_STENCILFAIL,  D3DSTENCILOP_KEEP );

D3DDevice->SetRenderState( D3DRS_STENCILPASS,  D3DSTENCILOP_KEEP )

D3DDevice->SetRenderState( D3DRS_STENCILREF,       0x1 );
D3DDevice->SetRenderState( D3DRS_STENCILMASK,      0xffffffff );
D3DDevice->SetRenderState( D3DRS_STENCILWRITEMASK, 0xffffffff );

D3DDevice->SetRenderState( D3DRS_CULLMODE,   D3DCULL_CCW );
D3DDevice->SetRenderState( D3DRS_STENCILZFAIL,    D3DSTENCILOP_INCRSAT   );

SetShaderConstants(mat_world);
D3DDevice->SetVertexDeclaration( m_pVertexDeclaration );
D3DDevice->SetVertexShader( m_pVertexShader );
D3DDevice->SetStreamSource( 0, m_pShadowVolume, 0, sizeof(SHADOWVERTEX) );
D3DDevice->SetIndices( m_pIndexBuffer );

D3DDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0,0, m_dwVertexBufferSize, 0, (m_dwIndexBufferSize/3));

D3DDevice->SetRenderState( D3DRS_CULLMODE,   D3DCULL_CW );
D3DDevice->SetRenderState( D3DRS_STENCILZFAIL,   D3DSTENCILOP_DECR    );

D3DDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0,0, m_dwVertexBufferSize, 0, (m_dwIndexBufferSize/3));



Code:
//       - Draw - 
D3DDevice->SetRenderState( D3DRS_ZENABLE,          FALSE );
D3DDevice->SetRenderState( D3DRS_STENCILENABLE,    TRUE );
D3DDevice->SetRenderState( D3DRS_FOGENABLE,        FALSE );
D3DDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
D3DDevice->SetRenderState( D3DRS_SHADEMODE,     D3DSHADE_FLAT );
D3DDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA );
D3DDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );

D3DDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
D3DDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
D3DDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_MODULATE );
D3DDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
D3DDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
D3DDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_MODULATE );


D3DDevice->SetRenderState( D3DRS_STENCILREF,  0x1 );
D3DDevice->SetRenderState( D3DRS_STENCILFUNC, D3DCMP_LESSEQUAL   );
D3DDevice->SetRenderState( D3DRS_STENCILPASS, D3DSTENCILOP_KEEP );

D3DDevice->SetTransform( D3DTS_WORLD, mat_world );
D3DDevice->SetFVF( D3DFVF_TRIANGLEVERTEX );
D3DDevice->SetStreamSource( 0, m_pBigSquareVB, 0, sizeof(TRIANGLEVERTEX) );
D3DDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );



Bitte um Hilfe!!!!!
21.06.2003, 15:44:07 Uhr
Ripper-Software
Jack the Ripper Sorry - lasse mich grade von ner geilen Domina auspeitschen .... jaaaahh
ZFX'ler


Registriert seit:
06.02.2003

Baden-Württemberg
192808767
Re: Stencil Shadows mit Vertex-ShaderNach oben.
HEY LEUTE!!!

Was ist den mit der Community los??
Kann mir keiner Helfen - ich weis doch genau, dass es einige unter euch gint, die das schon hinbekommen haben.....ich bitte doch nur um einen kleinen hinweis wo mein fehler liegt, bzw. liegen könnte.
Ich probiere seit Tagen alles mögliche aus, aber es tut sich nichts...!!

Noch mal zum Fehler:
Es ist nun so: Ich habe mal wieder für jedes Objekt einen zusätzlichen Schatten, der sich analog zur Camera und zum Licht bewegt. Dieser Schatten ist aber im endeffekt nur die reflektion des occluders, also genau das Objekt das den Schatten werfen soll nur mit dem Lichtvector (und der Camera) verschoben. Dieser "Schatten" verschwindet wenn ich im 2.Pass
Code:
D3DDevice->SetRenderState( D3DRS_STENCILZFAIL,   D3DSTENCILOP_DECR    );

durch
Code:
D3DDevice->SetRenderState( D3DRS_STENCILZFAIL,   D3DSTENCILOP_DECRSAT    );

ersetze.

-> Dann habe ich aber das Problem, das an den Stellen an denen mein Psydoschatten (der jetzt ja nicht mehr sichtbar ist) sich mit den Richtigen Schatten überlappt, die Richtigen Schatten nicht mehr sichtbar sind.

Ich hoffe das war helbwegs verständlich

MfG

PS: Bitte helft mir!!!

22.06.2003, 11:07:40 Uhr
Ripper-Software
Jack the Ripper Sorry - lasse mich grade von ner geilen Domina auspeitschen .... jaaaahh
ZFX'ler


Registriert seit:
06.02.2003

Baden-Württemberg
192808767
Re: Stencil Shadows mit Vertex-ShaderNach oben.
HALLO
03.07.2003, 23:13:08 Uhr
Ripper-Software
Jack the Ripper Sorry - lasse mich grade von ner geilen Domina auspeitschen .... jaaaahh
ZFX'ler


Registriert seit:
06.02.2003

Baden-Württemberg
192808767
Re: Stencil Shadows mit Vertex-ShaderNach oben.
[ironie] Dank der tollen mitarbeit der Community, habe ich meinen fehler gefunden [/ironie]

egal...hab den fehler auf jeden fall:
der vertex-shader war falsch, es muß so aussehen:

Code:
vs.1.1

dcl_position0 v0 
dcl_normal0   v1

def c0, [x=was man will], 0, 0, 0

sub r1 , v0, c91

dp3 r1.w, r1, r1
rsq r1.w, r1.w
mul r1, r1, r1.w

dp3 r3.x, r1, v1

slt r3.w, r3.x, c0.y
mul r3.w, r3.w, c0.x

mad r4, r1, r3.w, v0

m4x4 oPos, r4, c16
05.07.2003, 14:13:48 Uhr
Ripper-Software
ChrisFehn3 Offline
ZFX'ler


Registriert seit:
16.03.2003

Nordrhein-Westfalen
191519327 larsmilz@hotmail.com
Re: Stencil Shadows mit Vertex-ShaderNach oben.
Bitte!

MFG Lars
05.07.2003, 14:19:07 Uhr
NormalSeite: < 1 2


ZFX Community Software, Version 0.9.1
Copyright 2002-2003 by Steffen Engel