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


Метод ID3DXPRTEngine::ComputeDirectLightingSHGPU

Использует GPU для вычисления прямого освещения трехмерных объектов, где исходное сияние представлено приближением сферической гармонии (SH). Вычисление освещения на GPU обычно происходит гораздо быстрее, чем на ЦП.

Синтаксис

HRESULT ComputeDirectLightingSHGPU(
  [in]      LPDIRECT3DDEVICE9 pDevice,
  [in]      UINT              Flags,
  [in]      UINT              Order,
  [in]      FLOAT             ZBias,
  [in]      FLOAT             ZAngleBias,
  [in, out] LPD3DXPRTBUFFER   pDataOut
);

Параметры

pDevice [in]

Тип: LPDIRECT3DDEVICE9

Указатель на объект устройства IDirect3DDevice9 , используемый для запуска имитации на GPU. Устройство должно поддерживать ps_2_0 шейдеры пикселей.

Примечание

Функции обратного вызова не должны использовать объект устройства IDirect3Device9 , используемый симулятором GPU.

 

Флаги [in]

Тип: UINT

Параметр моделирования GPU, определяющий разрешение z-буфера тени. Должно быть задано одно из значений константы из D3DXSHGPUSIMOPT. Для моделирования более высокой точности можно объединить D3DXSHGPUSIMOPT_HIGHQUALITY значение с одним из D3DXSHGPUSIMOPT_SHADOWRESxxx значений.

Порядок [в]

Тип: UINT

Порядок оценки SH. Должен находиться в диапазоне D3DXSH_MINORDER для D3DXSH_MAXORDER включительно. При вычислении создаются коэффициенты Order². Степень оценки — Order - 1.

ZBias [in]

Тип: FLOAT

Смещение в нормальном направлении.

ZAngleBias [in]

Тип: FLOAT

Смещение в нормальном направлении, масштабируемая на единицу минус косинус угла с лучом света.

pDataOut [in, out]

Тип: LPD3DXPRTBUFFER

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

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

Тип: HRESULT

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

Комментарии

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

Вызовите MultiplyAlbedo , чтобы умножить каждый предварительно вычисляемый вектор передачи сияния (PRT) на альбедо.

Требования

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

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

ID3DXPRTEngine