Метод 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) на альбедо.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел