ue4-shader-后处理


title: ue4-shader-后处理
categories: UnrealEngine4-Shader
tags: [ue4, shader, 后处理, postprocess]
date: 2019-05-02 08:10:46
comments: false

ue4-shader-后处理


前篇

官方已经提供了一些效果, 如 bloom, dof 等, 也可以通过材质自定义效果.


节点说明

一般的后处理的 场景贴图 大概都是这几个输出参数

  1. color : 贴图的 rgba
  2. size : 纹理的宽高
  3. invSize : 纹理宽高的倒数, 一般用于像素点的偏移


PostProcessVolume

最简单的启用 ppv, 修改一下颜色

  1. 直接拖一个 PostProcessVolume 进场景

  2. 修改颜色. 找到 color grading -> scene color tint 修改颜色, 这里将 g 改为 0

  3. 进入到 volume 内才能触发后处理效果


PostProcessVolume 不进入包围盒也能触发

如果想不进入 包围盒 也能触发, 勾选上 post process volume settings -> infinite extent, 也就是包围盒半径是无限大, 同时 Blend Raidus 会变为不可设置


场景深度图 sceneDepth

有两个节点可以获取到场景的深度图, sceneDepthsceneTexture 设置为 sceneDepth

  1. 添加一个 ppv, 新建一个 材质球a, 把 a 丢进 post process materials

    infinite extent 也勾选上, 这样就不用进入 包围盒 也能看到效果.

  2. 打开 材质球a, 把 material domain 的类型改为 post process, 此时输出的引脚变为只有一个 emissive color

  3. 添加一个 scene depth 节点, 除以一个比较大的数, 比如: 1000, 然后直接输出给 emission color
    解释: 深度值是指 物体到摄像机的距离, 很可能是一个大于1的值, 而颜色值有是 0~1 区间的值, 所以除以一个比较大的数是为了约束其值到在 0~1 区间. 不然就是白茫茫的一片 (如果你看到的还是白茫茫一片, 可以尝试吧值调大一点)

还有个方式可以看到场景的深度. 场景预览窗口中 lit (默认) -> buff visualization -> scene depth


自定义深度图 customDepth

  1. 项目开启模板测试, 默认是关闭的. project settings -> engine -> rendering -> postprocessing -> custom depth-stencil pass, 不选取 disabled 都可以开启.

  2. 只有标记了的 不透明物体 ( opaque ) 才会 要渲染到 自定义深度buffer, 这个 buffer 与 深度buffer 不是同一个 buffer.

    标记方式:在 mesh 组件下搜索 render, 勾选 render customDepth pass

具体参考: ue4-shader-自定义深度CustomDepth


customDepth 与 sceneDepth 区别

  • sceneDepth : 场景中的 不透明物体 ( opaque ) 都会渲染到一个 深度buffer 中

  • customDepth : 只有标记了的 不透明物体 ( opaque ) 才会 要渲染到 自定义深度buffer, 这个 buffer 与 深度buffer 不是同一个 buffer.

    • 标记方式:在 mesh 组件下搜索 render, 勾选 render customDepth pass

查看buffer

打钩 代表有标记 render customDepth pass, 打叉 代表没有.

姿势一(简单)

lit -> buffer visualization -> custom depth 或者 scene depth

姿势二

添加一个后处理的方式查看.

  • sceneDepth

  • customDepth


场景贴图 PostProcessInput0

就是摄像机渲染出来的 颜色缓冲区

一个简单调色效果.

  1. 通过 mainColor 控制调色场景贴图

  2. 通过 color_overlay 来插值 原场景贴图 和 调色后的场景贴图,


InvSize 的使用

主要用于获取 临近像素.

简单示例: 通过 offset 参数来偏移 场景贴图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝶泳奈何桥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值