目录
项目介绍
NRD
全名Nvidia Real-time Denoiser ,是英伟达正在研发的一个时空双域降噪库,旨在处理低的RPP(ray per pixel)信号。
该技术的图形 API 环境是:DirectX11、DirectX12 以及 Vulkun。其集成方法有三种,其中一种可以是利用 Nvidia 的 NRI(NVIDIA Rendering Interface)包装上述三个 API,进行集成。
项目目标
在Falcor框架下集成nrd。
分工
与小组成员共同负责NRDPass.h与NRDPass.cpp的编写
笔者负责私有部分的声明与定义。并在之后的文章中记录。
当前阶段工作
仿照Falcor其他RenderPasses编写NRDPass.h
其中包含了NRDPass类的设计。
含有Falcor所需接口、NRD对应API。
具体内容不做过多展示。
class NRDPass : public RenderPass
{
public:
// for frame
//公有成员变量//
virtual Dictionary getScriptingDictionary() override;
virtual RenderPassReflection reflect(const CompileData& compileData) override;
virtual void compile(RenderContext* pRenderContext, const CompileData& compileData) override;
virtual void execute(RenderContext* pRenderContext, const RenderData& renderData) override;
virtual void renderUI(Gui::Widgets& widget) override;
virtual void setScene(RenderContext* pRenderContext, const Scene::SharedPtr& pScene) override;
private:
//私有成员变量//
// ------------- Functions ------------
NRDPass(const Dictionary& dict);
void reinit();
void createPipelines();
void createResources();
void executeInternal(RenderContext* pRenderContext, const RenderData& renderData);
void dispatch(RenderContext* pRenderContext, const RenderData& renderData, const nrd::DispatchDesc& dispatchDesc);
};