vault backup: 2025-03-04 20:39:24
This commit is contained in:
parent
bd4bfe2ae3
commit
ded5a24e04
@ -374,5 +374,23 @@ float3 ToneMappedColorAP1 = FilmToneMap( ColorAP1 );
|
|||||||
- UE渲染学习(2)- 自定义PostProcess - Kuwahara滤镜:https://zhuanlan.zhihu.com/p/25790491262
|
- UE渲染学习(2)- 自定义PostProcess - Kuwahara滤镜:https://zhuanlan.zhihu.com/p/25790491262
|
||||||
|
|
||||||
PS:
|
PS:
|
||||||
1. ToneMapping之后的Pass因为超采样的关系使得ViewportResoution与BufferResoution不同,所以需要使用`SHADER_PARAMETER(FScreenTransform, SvPositionToInputTextureUV)`以及`FScreenTransform::ChangeTextureBasisFromTo`计算变换比例。具体可以参考FFXAAPS。
|
1. `Tonemap`之后的Pass因为超采样的关系使得ViewportResoution与BufferResoution不同,所以需要使用`SHADER_PARAMETER(FScreenTransform, SvPositionToInputTextureUV)`以及`FScreenTransform::ChangeTextureBasisFromTo`计算变换比例。具体可以参考FFXAAPS。
|
||||||
2.
|
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));
|
||||||
|
```
|
Loading…
x
Reference in New Issue
Block a user