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]

类型: LPDIRECT3DDEVICE9

指向用于在 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) 矢量相乘。

要求

要求
标头
D3DX9Mesh.h

D3dx9.lib

另请参阅

ID3DXPRTEngine