Unreal Engine 4 —— Pixel Depth Offset的使用心得
来源:互联网 发布:js上传图片转base64 编辑:程序博客网 时间:2024/04/27 23:11
http://blog.csdn.net/noahzuo/article/details/51361789
这篇博客解释了Unreal Engine 4中的Pixel Depth Offset通道的使用心得,并且结合街头霸王Ⅴ对该通道的使用来归纳出一些注意事项。
街霸Ⅴ所使用的游戏引擎是UE4,相对于街霸Ⅳ来说,街霸Ⅴ在画面上有一个细节上的改进 —— 格斗的双方模型不会出现直接的穿插,取而代之的是优先确保一方模型的完整性。在这个效果中,就是用了Pixel Depth Offset的材质通道。
Pixel Depth Offset说明
Pixel Depth Offset是UE4中材质编辑器中的一个通道:
这个通道表示的是针对于这个像素在Depth Buffer上的值进行一个Offset,说的通俗一些:那就是将这个像素的深度沿着摄像机到该像素的方向往后推一个值。
下图中红色的球使用的是我们自定义的材质,Pixel Depth Offset值目前为0。
将该值调整为50.0后:
可以看出,红球右上角的一些像素被推至灰球表面之后了,因此导致灰球的一部分可以显示出来。
街霸Ⅴ中的效果
可以看到,在两个模型相互穿插的时候,Ryu的模型被完全显示出来了,因此可以断定是Ken的材质中Depth Offset被设定为了一个大于0的值,整个模型的像素深度被往后推,从而显示出Ryu的整个模型。
使用Pixel Depth Offset的注意事项
深度换算
由于Pixel Depth Offset的值代表的是将这个像素的深度沿着摄像机到该像素的方向往后推一个值。如果将其设定为一个固定的值,则往往会出现V向量与N向量的夹角越大,平面向后推的像素深度越小的情况。
上图中描述了如何将一个Surface深度向后推一个距离。因此该值不能设定为一个值,而应当设定为想要后推距离除以N向量与V向量的点乘:
通过这样的方法能够将一个面一起推后一个距离,而不会出现一个面上的不同像素推后距离不同的情况。
诡异的阴影
这应该是Pixel Depth Offset所产生的最严重的副作用了 —— 由于针对于深度的操作都是基于Depth Buffer,这样就意味着虽然深度改变了,阴影还是按照原来的情况计算。这个情况目前(包括4.11及之前)无解,在街霸Ⅴ中也有这种问题,分析如下。
这种情况可以通过减弱阴影颜色来缓解,但是目前无法避免。Epic的官方回复是已经在解决中,但是还需要做一些工作才行。
<全文完>
- Unreal Engine 4 —— Pixel Depth Offset的使用心得
- Unreal Engine 4 —— Pixel Depth Offset的使用心得
- Custom Depth in Unreal Engine 4
- Unreal Engine 4 —— 使用反汇编来确定该进行优化的地方
- Unreal Engine 4 —— 使用IPlatformFile进行Shader文件在开发团队间的共享
- Unreal Engine 4 —— 使用反汇编来确定该进行优化的地方
- Unreal Engine 4 —— 可交互绳索的构建
- Unreal Engine 4 —— 冷却UI的制作
- Unreal Engine 4 —— 反射机制的实现
- Unreal Engine 4 —— 反射机制的实现
- Unreal Engine 4 —— UE4的内存模型杂七杂八
- Unreal Engine 4 —— 常见Tips
- Unreal Engine 4 —— 常见Tips
- Unreal Engine 4 —— 使用ProceduralMeshComponent实现模型实时切割
- Unreal Engine 4 —— 使用ProceduralMeshComponent实现模型实时切割
- Unreal Engine 4 AddOnScreenDebugMessage使用注意
- Unreal Engine 4 C++使用注意事项
- Unreal Engine 4 —— Physically Based Materials
- easyui新增tab新窗口,附带刷新新窗口功能
- Qt中断言的使用
- LintCode 116-跳跃游戏
- 数位DP入门题
- 排序公式 与 组合公式
- Unreal Engine 4 —— Pixel Depth Offset的使用心得
- IA CD
- 知识点整理
- 2016年iOS开发面试题及答案整理
- OpenFEA技巧篇 | 文本分割
- 互联网健康面临诸多难题,春雨医生挂号网能否坚持为未知数
- 15 - Docker network第一讲-概念及常用命令(Docker系列)
- public private protected friendly的区别
- 实践HTTP206状态:部分内容和范围请求