Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

07.05.2003, 22:04

Stencil Shadows Frage?

Hi David

ich hab mir grad das Beispiel Kapitel durchgelesen allerdings habe ich eine Sache nicht verstanden:
Du schreibst auf Seite 5 dass man nur die Vorderseite des Schattevolumes in den Stencil Buffer rendert.
Ok das leuchtet ein.
Aber warum dann auch noch die Rückseite?
Mit der Vorderseite hat man doch eigentlich schon den Schatten, jedenfalls von der Lichtquelle aus gesehen.

Oder hab ich irgendwas überlesen?? ;) ??? ;)

Danke und Gruß
Bastian

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

07.05.2003, 22:38

Lies es nochmal genau durch und schau Dir die Abbildungen dazu an. Die hab ich ja nicht umsonst gemacht. Das Schattenvolumen an sich sieht man ja später eh nicht.

CodingCat

1x Contest-Sieger

Beiträge: 420

Beruf: Student (KIT)

  • Private Nachricht senden

3

08.05.2003, 16:05

Also wenn ich das richtig verstanden habe, dann wird die Vorderseite in den Stencil-Buffer gerendert und dan die Rückseite. Und überall, wo Vorder und Rückseite auf einen Pixel gerendert wurden, darf nicht verdunkelt werden...

*EDIT*
Aussage korrigiert...

Ich wollte jetzt auch noch was Fragen (zu Schatten)

Im REF-Modus sehen die Schatten super aus, aber im HAL-Modus sehen die total bescheuert aus (Format: D24S8)

Screenshot aus orginal Beispiel 1, Kapitel 9:

(Link)
alphanew.net (last updated 2011-06-26) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

08.05.2003, 17:11

Was ist denn das für ein Scheiß?... Da ist wohl irgendetwas, was Deine Grafikkarte nicht unterstützt... sonst wäre es beim Reference Rasterizer ja anders... ich werde dem auf den Grund gehen!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

08.05.2003, 17:30

Ich habe den Fehler jetzt reproduzieren können.
Es muss daran liegen, dass Deine Grafikkarte die Option D3DBLEND_ZERO nicht unterstützt... Bitte starte mal das DirectX-Utility "DirectX Caps Viewer" aus dem Startmenü.

Wähle dann links "DirectX Graphics Adapter" und klicke auf File -> Print subtree to file. Gehe dann in den Unterordner "Bin\DXUtils" des DirectX SDKs und schicke mir bitte per E-Mail die Datei "dxview.log". Dann kann ich mir die Fähigkeiten Deiner Grafikkarte einmal ansehen.

Achja, steht irgendetwas in der Logbuchdatei?

6

08.05.2003, 22:03

@Dingdong, David
das wäre Logisch und so hab ich mir das gedacht aber so kann ich das aus dem Text von David nicht heraus lesen.
Dort wird das Volumen der Vorderseite im Stencil Buffer um 1 erhöht und der Rückseite um 1 verringert.
Damit ergibt sich wo Vorder- und Rückseite überlappen Null.
Aber Null wird nicht als Schatten gerendert und das Kapier ich nicht...


Gruß
Bastian

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

08.05.2003, 22:09

Ist auch richtig so! Da, wo die Vorder- und die Rückseite sichtbar sind, kann ja kein Schatten sein. Denn an diesen Stellen guckt man ja gerade durch das Schattenvolumen durch. Es muss ja etwas im Weg sein, worauf der Schatten fallen kann. Und genau an diesen Stellen ist der Stencil-Wert nicht null.

8

08.05.2003, 22:25

Hi David

ich glaub ich habs kapiert....
Also noch mal zur Sicherheit:
Die ganze Szene wird aus der Position des Betrachters gerendert.
Dann werden die Flächen die zur Kamera zeigen als Schattenvolumen benutzt und in den S-Buffer geschrieben.
Jetzt werden alle Flächen die der Kamera abgewandt sind Als Volumen benutzt und auch wieder gerendert...

Mein Problem war dass ich dachte das ganze wird aus der Perspektive der Lichtquelle berechnet aber das ist ja Schwachsinn :rolleyes: 8)

Ich hoffe das stimmt so weil dann hab ich das kapiert :)

Gruß
Bastian

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

10.05.2003, 10:03

Zur Information: Das Problem von Dingdong wurde gelöst. Bei ihm hat der Schatteneffekt es seltsamerweise nicht geschafft, Alpha-Blending zu aktivieren, um alles unsichtbar zu machen.
Man musste per Hand den Code umändern:

Quellcode

1
2
3
4
5
tbDirect3D::SetRS(D3DRS_ALPHABLENDENABLE, TRUE);
tbDirect3D::SetRS(D3DRS_SRCBLEND, D3DBLEND_ZERO);
tbDirect3D::SetRS(D3DRS_DESTBLEND, D3DBLEND_ONE);
// Hier das Schattenvolumen rendern...
tbDirect3D::SetRS(D3DRS_ALPHABLENDENABLE, FALSE);

Werbeanzeige