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 对象的指针,该对象表示上一次光线反弹中的 3D 对象。 此输入缓冲区必须具有为模拟分配的适当数量的颜色通道。

AdaptiveThresh [in]

类型: FLOAT

用于细分网格顶点和面的 PRT 向量的阈值。 如果小于 1e-6f,则指定默认值 1e-6f。

MinEdgeLength [in]

类型: FLOAT

将在自适应采样中生成的最小面边缘长度。 如果方法确定值太小,则指定与模型相关的值。

MaxSubdiv [in]

类型: UINT

将在自适应采样中使用的人脸的最大细分级别。 如果为零,则指定默认值 4。

pDataOut [in, out]

类型: LPD3DXPRTBUFFER

指向输出 ID3DXPRTBuffer 对象的指针,该对象为地下散射光的单个反弹建模。 此输出缓冲区必须为模拟分配正确数量的颜色通道。

pDataTotal [in, out]

类型: 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