学习在UE中为截屏工具(SceneCapture)添加一种新的源(Source)

SceneCapture

创建一个SceneCapture2D类型的Actor,再新建一个RenderTarget资源交给它。随后,就能看到截屏的数据出现在RenderTarget中。通过修改 Capture Source ,可以改变截取的数据源,比如法线、基础色等等。
在这里插入图片描述

目标

本篇的目标是添加一种新的 Capture Source
需要对引擎的代码和shader文件做些修改。

1. 添加 Capture Source 枚举

在 Source\Runtime\Engine\Classes\Engine\EngineTypes.h 中添加一个ESceneCaptureSource枚举:
在这里插入图片描述
此枚举是细节面板中直接选择的枚举类。(还可以在这里修改它的显示名。)

2. 添加传入shader的宏

打开Source\Runtime\Renderer\Private\SceneCaptureRendering.cpp 。

添加一个ESourceMode枚举。
在这里插入图片描述
这个枚举用于帮助指定传入shader中的宏。
在随后的函数中指定ESourceMode和刚才的ESceneCaptureSource的对应关系:
在这里插入图片描述
最后,添加一个ShaderSourceModeDefineName字符串,保证此字符串序列和ESourceMode完全一一对应:
在这里插入图片描述
可以看到,后续的逻辑将会把Source对应的宏传入shader。

3. 在shader中指定对应的逻辑

打开 Shaders\Private\SceneCapturePixelShader.usf。
添加新Source对应的宏所对应的逻辑:
在这里插入图片描述
(作为简单的测试,这里让g通道是GBuffer中的Roughness,其余通道是1)

效果

可以看到多了“YakSue Test Capture Data”这种Source,并且其数据符合预期。
在这里插入图片描述

总结

总结来步骤如下:

  1. 增加ESceneCaptureSource枚举类型,这是在细节面板中直接操控的枚举。
  2. ESceneCaptureSourceESourceMode对应起来。
  3. ESourceMode将和传入shader中的宏一一对应。
  4. shader中根据传入的宏指定对应的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值