虚幻4中SceneDepth , PixelDepth ,Customdepth,CustomDepth StencilValue的区别
来源:互联网 发布:会员数据分析维度 编辑:程序博客网 时间:2024/06/07 15:48
我之前的博客:解决透明乱序和河水制作里面都有利用到深度值来做一些效果。但是是是否对虚幻4的各种depth和各种value所困扰呢。我查了下文档和各种请教大神终于把虚幻4的各种depth,各种奇奇怪怪的东西捋了一下。
首先来看一下虚幻4的渲染流程:
scenedepth 是在第三步 prepass/depth only pass里面得到的。里面储存了场景深度。
如图所示SceneDepth表示了1+2的这段距离。
pixeldepth则是当前像素点到摄像机的距离。这段距离等于“2”所示距离。
CustomDepth和Pixeldepth在无遮挡的情况下是相等的。比如一个场景里面就只有一个模型,并且这个模型开启了CustomdepthWrite模式。那么输出的CustomDepth和PixelDepth是相等的。如果这个模型前面有堵墙。那么这个PixelDepth和Customdepth就是不想等的。
CustomDepth相当于把此物体的pixeldepth单独存到一个独立的缓冲区里。不受遮挡物的影响。
结合实例看一下:
这是一张典型的乱序图。因为透明物体是在prepass之后绘制的,在总体渲染的倒数第二步进行的,所以透明物体其实没有透明剔除过程。既然没有我们就手动给他进行剔除工作
这时customdepth和pixeldepth的作用就来了。看上图的右下角所示。红色圈内的像素是乱序像素,它的customdepth值是比pixel小的。将CustomDepth和Pixeldepth的值相减就能得到他们深度差值。这个差值就有意思了。如果这个像素应该是在物体表面的内部的,那么这个差值应该是<0的。这时我们用clamp就能强行把物体内部的像素的opacity值变为0.当这个像素的opacity再和基础值0.5相乘时,它就是0了。是完全透明的。如果这个时候开启透明最小值剪裁,就能把这个乱序的像素彻底剪裁掉。
CustomDepth Stencil value 则是一个蒙版。这个蒙版的值是integer的。范围是0到255.可以用来做蒙版遮罩(我的前几篇博客模型勾边就有介绍这个东西的用法)
传送门:
(两个重叠模型模拟双pass,顺便解决透明乱序问题)http://blog.csdn.net/qq_16756235/article/details/76616408
(模型勾边)http://blog.csdn.net/qq_16756235/article/details/75196152
- 虚幻4中SceneDepth , PixelDepth ,Customdepth,CustomDepth StencilValue的区别
- colorDepth和pixelDepth的区别
- 虚幻4中实现简单的raymarch
- 虚幻4的Style
- 虚幻4中变量被优化掉的解决方案
- 在虚幻4中显示Kinect2.0摄像头的画面
- 虚幻4中,android第三方类库的接入
- 虚幻4的智能指针
- 虚幻4 材质的编译。
- 虚幻4 shader的使用
- 在虚幻4中使用kinect2.0
- 虚幻4中模型勾边
- 虚幻4command line 的注册
- 虚幻4制作自己的文件格式
- 虚幻4打包安卓的问题
- 虚幻4 自动测试代码的写法
- 虚幻4UMG的锚点
- 虚幻4 C++ 九宫格的实现
- [Oracle 11g r2(11.2.0.4.0)]集群守护进程CSS资源管理
- 3. GDI+ Bitmap和GDI HBITMAP互转
- python入门常踩的雷区
- Inception V3
- CRC校验
- 虚幻4中SceneDepth , PixelDepth ,Customdepth,CustomDepth StencilValue的区别
- 第三章 Nginx服务架构初探
- java-Comparable排序(list集合)
- MacOS tomcat开启与关闭
- PAT 乙级练习题.1005
- 遇到的知识总结1
- 例子---纯CSS实现加载球
- Fresco SimpleDraweeView 加载本地的gif
- servlet-mapping的/和/*