Diepte-bias (Direct3D 9)
Veelhoeken die coplanar zijn in uw 3D-ruimte, kunnen worden gemaakt alsof ze niet coplanar zijn door een z-bias aan elke ruimte toe te voegen. Dit is een techniek die vaak wordt gebruikt om ervoor te zorgen dat schaduwen in een scène correct worden weergegeven. Een schaduw op een muur heeft bijvoorbeeld waarschijnlijk dezelfde dieptewaarde als de wand. Als u eerst de muur weergeeft en vervolgens de schaduw, is de schaduw mogelijk niet zichtbaar of zijn diepteartefacten mogelijk zichtbaar. U kunt de volgorde omkeren waarin u de coplanaire objecten weergeeft in de hoop dat het effect wordt omgedraaid, maar diepteartefacten zijn nog steeds waarschijnlijk.
Een toepassing kan ervoor zorgen dat coplanaire veelhoeken correct worden weergegeven door een vooroordelen toe te voegen aan de z-waarden die het systeem gebruikt bij het weergeven van de sets met coplanaire polygonen. Als u een z-bias wilt toevoegen aan een set veelhoeken, roept u de methode IDirect3DDevice9::SetRenderState aan vlak voordat u ze weergeeft, stelt u de parameter State in op D3DRS_DEPTHBIAS en de parameter Value op een geschikte float-waarde (een geschikte waarde kan bijvoorbeeld van -1.0 tot 1,0 zijn); als u deze waarde wilt doorgeven aan SetRenderState, moet u de waarde ook casten naar een DWORD-. Een hogere z-bias-waarde verhoogt de kans dat de veelhoeken die u weergeeft, zichtbaar zijn wanneer ze worden weergegeven met andere coplanaire veelhoeken.
Offset = m * D3DRS_SLOPESCALEDEPTHBIAS + D3DRS_DEPTHBIAS
waarbij m de maximale dieptecoëfficiënt is van de driehoek die wordt weergegeven.
m = max(abs(delta z / delta x), abs(delta z / delta y))
De eenheden voor de D3DRS_DEPTHBIAS- en D3DRS_SLOPESCALEDEPTHBIAS renderstatussen zijn afhankelijk van of z-buffering of w-buffering is ingeschakeld. De toepassing moet geschikte waarden opgeven.
De vooroordelen worden niet toegepast op een lijn en puntprimitief. Deze vooroordelen moeten echter worden toegepast op driehoeken die zijn getekend in de draadmodelmodus.
// RenderStates
D3DRS_SLOPESCALEDEPTHBIAS, // Defaults to zero
D3DRS_DEPTHBIAS, // Defaults to zero
// Caps
D3DPRASTERCAPS_DEPTHBIAS
D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS
Verwante onderwerpen