美文网首页虚幻4UE4(虚幻引擎)
UE4材质中的CustomDepth

UE4材质中的CustomDepth

作者: 6c9572b658a2 | 来源:发表于2018-08-22 18:10 被阅读2次

    CustomDepth是什么

    CustomDepth,可以用来显示特定物体的轮廓,比如UE4编辑器中,选中的物体,有一个黄色的轮廓。

    可以通过比较CustomDepth和SceneDepth来实现。

    所谓的Depth,就是被渲染的点距离镜头的像素个数。

    深度越大,距离镜头越远。

    CustomDepth示例

    在后处理材质中使用。

    下图为效果。

    注意到,整个场景被蒙上了一层紫色,而用红圈标识的三个物体,则显示为紫色(姑且这么叫吧)(其实是半紫色,因为颜色花样不多,看不出来)

    这三个物体,在Detail中,设置了渲染customdepth pass:

    后处理材质

    而在后处理材质中,根据SceneTexture:CustomDepth和SceneTexture:SceneDepth的相对大小,设置了不同的颜色,如下图所示:

    渲染CustomDepthPass情况下CustomPath的值

    可以清楚地看到,一般情况下,CustomDepth要大于SceneDepth,也就是平时不起作用。

    如果设置了渲染CustomDepthPass,那么这两个值则相等了。

    那么,一般情况下,CustomDepth值是多大呢?文档中并没有提及,应该是非常大的一个数,从下面的示例中就可以看出来。

    一般情况下CustomDepth的值

    我写了一个材质用来测试CustomDepth的值,材质节点如下:

    if出去的节点连接到EmissiveColor。

    通过这个材质,一般情况下,CustomDepth的值为10^8。我以为会是一个很不整的数,结果很快就找到这个数了。

    目前并不知道这个数是否和平台相关。

    根据CustomDepth显示被挡住的物体

    上面的示例,当物体被挡住时,并不能显示。

    那么,怎么才能显示被挡住的物体的轮廓呢?下图是效果。

    这是怎么做到的?其实只要在材质中,对CustomDepth减去一个数就可以了。如下所示。

    这里减去的数是100000,相当于把CustomDepth往前提升了10万个像素的距离。

    这样具有CustomDepth的物体,相当于往前放了。

    这样被挡住的物体,就可以被显示了。但是如果物体距离相机超过了10万,那么该被挡还是被挡。。

    显示物体的轮廓

    有了前面的基础,物体轮廓的显示,就呼之欲出了。


    原文地址:原文地址

    本文首发与翰者学堂

    相关文章

      网友评论

        本文标题:UE4材质中的CustomDepth

        本文链接:https://www.haomeiwen.com/subject/exgyiftx.html