vault backup: 2025-03-04 20:39:24

This commit is contained in:
BlueRose 2025-03-04 20:39:24 +08:00
parent bd4bfe2ae3
commit ded5a24e04

View File

@ -374,5 +374,23 @@ float3 ToneMappedColorAP1 = FilmToneMap( ColorAP1 );
- UE渲染学习2- 自定义PostProcess - Kuwahara滤镜:https://zhuanlan.zhihu.com/p/25790491262
PS
1. ToneMapping之后的Pass因为超采样的关系使得ViewportResoution与BufferResoution不同所以需要使用`SHADER_PARAMETER(FScreenTransform, SvPositionToInputTextureUV)`以及`FScreenTransform::ChangeTextureBasisFromTo`计算变换比例。具体可以参考FFXAAPS。
2.
1. `Tonemap`之后的Pass因为超采样的关系使得ViewportResoution与BufferResoution不同所以需要使用`SHADER_PARAMETER(FScreenTransform, SvPositionToInputTextureUV)`以及`FScreenTransform::ChangeTextureBasisFromTo`计算变换比例。具体可以参考FFXAAPS。
1. ToneMapPass 传入FScreenPassTextureSlice传出FScreenPassTexture。如果关闭Tonemap则直接运行`SceneColor = FScreenPassTexture(SceneColorSlice);`
2. `MotionBlur`~`Tonemap`
3. `MotionBlur`之前后处理材质BL_BeforeTonemapping之前传入FScreenPassTexture SceneColor进行绘制。
##
```c++
FPostProcessMaterialInputs PassInputs;
PassSequence.AcceptOverrideIfLastPass(EPass::Tonemap, PassInputs.OverrideOutput);
PassInputs.SetInput(EPostProcessMaterialInput::SceneColor, FScreenPassTexture::CopyFromSlice(GraphBuilder, SceneColorSlice));
```
创建`FScreenPassTextureSlice`:
```c++
FScreenPassTextureSlice SceneColorSlice = FScreenPassTextureSlice::CreateFromScreenPassTexture(GraphBuilder, SceneColor);//FScreenPassTexture SceneColor
```
将渲染结果转换成`FScreenPassTextureSlice`:
```c++
SceneColorSlice = FScreenPassTextureSlice::CreateFromScreenPassTexture(GraphBuilder, AddToonPostProcessBeforeTonemappingPass(GraphBuilder, View, PassInputs));
```