Hi,
Was ist Depth Clip? Aktivierbar ist es durch D3D10/11_RASTERIZER_DESC::DepthClipEnable. Liege ich damit richtig, dass es schlicht die Pixel verwirft, deren Tiefenwerte nicht zwischen 0 und 1 liegen?
Irgendwie kriege ich das nämlich gerade nicht mit vortransformierten Vertices kombiniert …
Gruß, Ky
[D3D] Was ist Depth Clip?
Re: [D3D] Was ist Depth Clip?
Welche Z-Werte haben denn deine Vertices?
- Krishty
- Establishment
- Beiträge: 8366
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [D3D] Was ist Depth Clip?
Null (W ist 1), und sie werden nicht gerendert.
Sobald Z größer wird als 1 oder kleiner als 0, wird wieder gerendert, aber nur der Nullpunkt (=> alles schwarz).
Edit: Oh, da schien ein nicht geclearter Backbuffer durch … die vortransformierten Vertices funktionieren. Die andere Geometrie aber nicht … mal gucken, was sich da machen lässt.
Ähm, die Frage, was Depth Clipping ist, bleibt bestehen :)
Sobald Z größer wird als 1 oder kleiner als 0, wird wieder gerendert, aber nur der Nullpunkt (=> alles schwarz).
Edit: Oh, da schien ein nicht geclearter Backbuffer durch … die vortransformierten Vertices funktionieren. Die andere Geometrie aber nicht … mal gucken, was sich da machen lässt.
Ähm, die Frage, was Depth Clipping ist, bleibt bestehen :)
Re: [D3D] Was ist Depth Clip?
Mit Depth-Clipping werden vor der perspektivischen Transformation alle Vertices, welche nicht zwischen der Near- und Far-Plane liegen, verworfen. Gäbe ansonsten hässliche wrap-arounds ...
- Krishty
- Establishment
- Beiträge: 8366
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [D3D] Was ist Depth Clip?
Was wären das für Wrap-Arounds? (Habe früher vereinzelt Geometrie ohne Depth-Clipping gerendert … Zeug, das verdeckungsfrei und weit entfernt war). Habe mir schon gedacht, dass es irgendwie in die Richtung geht, aber nie genau nachgefragt/forscht.eXile hat geschrieben:Mit Depth-Clipping werden vor der perspektivischen Transformation alle Vertices, welche nicht zwischen der Near- und Far-Plane liegen, verworfen. Gäbe ansonsten hässliche wrap-arounds ...
Mein Geometrieproblem hat sich erledigt – ich hatte eine 4×4-Projektionsmatrix auf 3×4 beschnitten. Da ich früher ohne Depth-Clipping gerendert habe, fiel mir nie auf, dass damit die Z-Koordinaten total abgef***t waren -.-
Re: [D3D] Was ist Depth Clip?
Ich hab mich mal mit dem Thema etwas weiter beschäftigt ... zunächst sollte man zwischen Depth-Clamping und Depth-Clipping unterscheiden:
Depth-Clamping bedeutet, dass z-Werte außerhalb von [0,1] auf eben dieses Intervall zurückgesetzt werden. D.h. egal was der Rasterizer für einen z-Wert ausspuckt, der Rasterizer "clampt" den z-Wert auf [0,1]. Depth-Clamping ist immer aktiv.
Das Depth-Clipping ist optional, und wird während des Rasterisierens ausgeführt. Wenn beim Rasterisieren mal ein Wert außerhalb von [0,1] auftaucht, wird dieser Pixel verworfen. Alle gezeichneten Pixel sind also im Interval [0,1], und das Depth-Clamping muss nichts mehr machen. Aber das Depth-Clipping hat noch eine Besonderheit: Sollte der Rasterizer eine homogene Division mit einem w < 0 durchführen, so werden die entstehenden Pixel alle verworfen (bzw. erst gar nicht erzeugt). Sollte man also (warum auch immer) mal nen Vertex mit w < 0 haben, und läge der hinter der Kamera, würde der plötzlich nach vorne projeziert werden. Mit Depth-Clipping würden dann alle Pixel auf diesem Dreieck verworfen. (Ich habe das allerdings noch nicht praktisch nachprüfen können.)
Depth-Clamping bedeutet, dass z-Werte außerhalb von [0,1] auf eben dieses Intervall zurückgesetzt werden. D.h. egal was der Rasterizer für einen z-Wert ausspuckt, der Rasterizer "clampt" den z-Wert auf [0,1]. Depth-Clamping ist immer aktiv.
Das Depth-Clipping ist optional, und wird während des Rasterisierens ausgeführt. Wenn beim Rasterisieren mal ein Wert außerhalb von [0,1] auftaucht, wird dieser Pixel verworfen. Alle gezeichneten Pixel sind also im Interval [0,1], und das Depth-Clamping muss nichts mehr machen. Aber das Depth-Clipping hat noch eine Besonderheit: Sollte der Rasterizer eine homogene Division mit einem w < 0 durchführen, so werden die entstehenden Pixel alle verworfen (bzw. erst gar nicht erzeugt). Sollte man also (warum auch immer) mal nen Vertex mit w < 0 haben, und läge der hinter der Kamera, würde der plötzlich nach vorne projeziert werden. Mit Depth-Clipping würden dann alle Pixel auf diesem Dreieck verworfen. (Ich habe das allerdings noch nicht praktisch nachprüfen können.)