Поделиться через


Метод ID3DXPRTEngine::ComputeSSAdaptive

Вычисляет вектор передачи, который сопоставляет исходное сияние с исходящим сиянием, полученным в результате подповерхностного рассеяния, с помощью адаптивных свойств выборки и материала, заданных ID3DXPRTEngine::SetMeshMaterials. Метод создает новые вершины и грани в сетке, чтобы точнее приблизить предварительно вычисляемый сигнал передачи сияния (PRT). Этот метод можно использовать только для материалов, определенных для каждой вершины в объекте сетки.

Синтаксис

HRESULT ComputeSSAdaptive(
  [in]      LPD3DXPRTBUFFER pDataIn,
  [in]      FLOAT           AdaptiveThresh,
  [in]      FLOAT           MinEdgeLength,
  [in]      UINT            MaxSubdiv,
  [in, out] LPD3DXPRTBUFFER pDataOut,
  [in, out] LPD3DXPRTBUFFER pDataTotal
);

Параметры

pDataIn [in]

Тип: LPD3DXPRTBUFFER

Указатель на входной объект ID3DXPRTBuffer , представляющий трехмерный объект из предыдущего отказа света. В этом входном буфере должно быть правильное количество цветовых каналов, выделенных для имитации.

AdaptiveThresh [in]

Тип: FLOAT

Пороговое значение для вектора PRT, используемого для подделательных вершин и граней сетки. Если меньше 1e–6f, указано значение по умолчанию 1e–6f.

MinEdgeLength [in]

Тип: FLOAT

Минимальная длина края лица, которая будет создана при адаптивной выборке. Если метод определяет, что значение слишком мало, указывается зависимое от модели значение.

MaxSubdiv [in]

Тип: UINT

Максимальный уровень деления лица, который будет использоваться при адаптивной выборке. Если значение равно нулю, то по умолчанию указывается значение 4.

pDataOut [in, out]

Тип: LPD3DXPRTBUFFER

Указатель на выходной объект ID3DXPRTBuffer , который моделирует один отказ от рассеянных подповерхностного света. В этом выходном буфере должно быть правильное количество цветовых каналов, выделенных для имитации.

pDataTotal [вход, выход]

Тип: LPD3DXPRTBUFFER

Указатель на необязательный объект ID3DXPRTBuffer , который является суммой выполнения всех предыдущих выходных данных pDataOut. Может иметь значение NULL.

Возвращаемое значение

Тип: HRESULT

Если метод выполнен успешно, возвращаемое значение будет D3D_OK. В случае сбоя метода возвращается одно из следующих значений: D3DERR_INVALIDCALL E_OUTOFMEMORY.

Комментарии

Чтобы смоделировать подповерхностное рассеяние, вызовите этот метод для каждого отскакиваемого света после вызова метода ID3DXPRTEngine::ComputeDirectLightingSHAdaptive .

Выходные данные этого метода не включают альбедо, и в симулятор интегрирован только входящий свет. Не умножая альбедо, можно смоделировать вариант альбедо в более тонком масштабе, чем исходное сияние, тем самым обеспечивая более точные результаты от сжатия.

Вызовите ID3DXPRTEngine::MultiplyAlbedo , чтобы умножить каждый вектор PRT на альбедо.

Требования

Требование Значение
Заголовок
D3DX9Mesh.h
Библиотека
D3dx9.lib

См. также раздел

ID3DXPRTEngine

ID3DXPRTEngine::ComputeBounce

ID3DXPRTEngine::ComputeSS