Смещение глубины (Direct3D 9)
Многоугольники, которые являются сопланарными в трехмерном пространстве, могут отображаться так, как если бы они не coplanar, добавив z-предвзятость к каждой из них. Это метод, который часто используется для обеспечения правильного отображения тени в сцене. Например, тень на стене, скорее всего, будет иметь то же значение глубины, что и стена. Если сначала вы отрисовываете стену, а затем тени, тень может не отображаться, или артефакты глубины могут быть видимыми. Вы можете изменить порядок, в котором вы отрисовываете сопланарные объекты в надежде на отмену эффекта, но артефакты глубины по-прежнему вероятны.
Приложение может помочь обеспечить правильное отображение совместного многоугольника путем добавления предвзятости к z-значениям, которые система использует при отрисовке наборов сопланарных многоугольников. Чтобы добавить z-предвзятость в набор многоугольников, вызовите метод IDirect3Device9::SetRenderState непосредственно перед отрисовкой, задайте параметр состояния на D3DRS_DEPTHBIAS, а параметр value для подходящего значения с плавающей запятой (например, подходящее значение может быть от -1.0 до 1.0); Чтобы передать это значение в SetRenderState, необходимо также привести значение к DWORD. Более высокое значение z-предвзятости увеличивает вероятность того, что отрисовка многоугольников будет видна при отображении с другими coplanar многоугольниками.
Offset = m * D3DRS_SLOPESCALEDEPTHBIAS + D3DRS_DEPTHBIAS
где m является максимальным наклоном глубины отрисовываемого треугольника.
m = max(abs(delta z / delta x), abs(delta z / delta y))
Единицы для D3DRS_DEPTHBIAS и D3DRS_SLOPESCALEDEPTHBIAS состояния отрисовки зависят от включения z-буферизации или w-buffering. Приложение должно предоставить подходящие значения.
Предвзятость не применяется к каким-либо примитивом линий и точек. Однако эта предвзятость должна применяться к треугольникам, нарисованным в режиме проволочной рамки.
// RenderStates
D3DRS_SLOPESCALEDEPTHBIAS, // Defaults to zero
D3DRS_DEPTHBIAS, // Defaults to zero
// Caps
D3DPRASTERCAPS_DEPTHBIAS
D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS
Связанные разделы