ID3DXPRTEngine::ComputeDirectLightingSHGPU 方法
使用 GPU 计算对 3D 对象的直接照明贡献,其中源辐射由球面调和 (SH) 近似值表示。 计算 GPU 上的照明通常比在 CPU 上快得多。
语法
HRESULT ComputeDirectLightingSHGPU(
[in] LPDIRECT3DDEVICE9 pDevice,
[in] UINT Flags,
[in] UINT Order,
[in] FLOAT ZBias,
[in] FLOAT ZAngleBias,
[in, out] LPD3DXPRTBUFFER pDataOut
);
参数
-
pDevice [in]
-
指向用于在 GPU 上运行模拟的 IDirect3DDevice9 设备对象的指针。 设备必须支持 ps_2_0 像素着色器。
注意
回调函数不应使用 GPU 模拟器使用的 IDirect3DDevice9 设备对象。
-
Flags [in]
-
类型: UINT
定义阴影 z 缓冲区分辨率的 GPU 模拟参数。 应设置为 D3DXSHGPUSIMOPT 中的常量值之一。 若要指定更高的精度模拟,可将D3DXSHGPUSIMOPT_HIGHQUALITY值与其中一个D3DXSHGPUSIMOPT_SHADOWRESxxx值组合使用。
-
Order [in]
-
类型: UINT
SH 评估的顺序。 必须在 D3DXSH_MINORDER 范围内才能D3DXSH_MAXORDER(含)。 计算将生成 Order² 系数。 评估程度为 Order - 1。
-
ZBias [in]
-
类型: FLOAT
正常方向的偏差。
-
ZAngleBias [in]
-
类型: FLOAT
正常方向的偏差,用光线按 1 减去角度的余弦值缩放。
-
pDataOut [in, out]
-
类型: LPD3DXPRTBUFFER
指向 ID3DXPRTBuffer 对象的指针。 此缓冲区必须为模拟分配正确数量的颜色通道。
返回值
类型: HRESULT
如果方法成功,则返回值D3D_OK。 如果方法失败,则返回值可以是以下值之一:D3DERR_INVALIDCALL、E_OUTOFMEMORY。
备注
在此方法中,反照数不乘以光信号,并且仅将传入光集成到模拟器中。 通过不乘以反照率,可以比源辐射更精细地对反照率变体进行建模,从而通过压缩得出更准确的结果。
调用 MultiplyAlbedo 将每个预计算的辐射传输 (PRT) 矢量相乘。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅