跳转到内容

函数描述

函数描述

CreateInstance

prSuiteError (*CreateInstance)(
PrGPUFilterInstance* ioInstanceData);

创建一个表示轨道项上的效果或过渡的 GPU 过滤器实例。

CreateInstance 返回错误将导致此节点在当前参数集下以软件方式渲染。

与效果和过渡的软件实例不同,GPU 实例在效果参数更改时会创建和释放。

这使得效果可以根据参数更灵活地选择是否使用 GPU 渲染。不同的实例可能会被并发调用。


DisposeInstance

prSuiteError (*DisposeInstance)(
PrGPUFilterInstance* ioInstanceData);

清理在 CreateInstance 期间分配的任何资源。


GetFrameDependencies

prSuiteError (*GetFrameDependencies)(
PrGPUFilterInstance* inInstanceData,
const PrGPUFilterRenderParams* inRenderParams,
csSDK_int32* ioQueryIndex,
PrGPUFilterFrameDependency* outFrameDependencies);

返回渲染的依赖信息,如果只需要当前帧,则返回空。

对于额外的依赖项,递增 ioQueryIndex


PreCompute

prSuiteError (*Precompute)(
PrGPUFilterInstance* inInstanceData,
const PrGPUFilterRenderParams* inRenderParams,
csSDK_int32 inIndex,
PPixHand inFrame);

将结果预计算到预分配的未初始化主机(固定)内存中。

只有在 GetFrameDependencies 返回 PrGPUDependency_Precompute 时才会调用。

预计算可能会在渲染时间之前调用。

结果将由主机上传到 GPU。

如果 outPrecomputePixelFormat 不是自定义的,帧将被转换为 GPU 像素格式。


Render

prSuiteError (*Render)(
PrGPUFilterInstance* inInstanceData,
const PrGPUFilterRenderParams* inRenderParams,
const PPixHand* inFrames,
csSDK_size_t inFrameCount,
PPixHand* outFrame);

渲染到使用 PrSDKGPUDeviceSuite 分配的 outFrame 中,或就地操作。

结果必须与输入的像素格式相同。如果效果扩展或缩小了输出区域(例如渲染投影),效果可以分配并返回不同大小的 outFrame

对于效果,inFrames[0] 始终是当前时间的帧,其他输入帧的顺序与 GetFrameDependencies 返回的顺序相同。对于过渡效果,inFrames[0] 是传入帧,inFrames[1] 是传出帧。过渡效果可能没有其他帧依赖项。

使用实用函数 GetParam 检索当前时间的参数值。