美文网首页
[Unity3D] DepthTexture相关

[Unity3D] DepthTexture相关

作者: 葱烧烙饼 | 来源:发表于2020-09-03 21:41 被阅读0次

    深度纹理(DEPTHTEXTURE),一般而言,我们做雾效(FOG),屏幕后期处理(POST-PROCESS)等等需要用到物体离摄像机的距离作为计算。那么这些离摄像机远近的信息,我们把渲染出的一张离摄像机远近的深度图信息称为深度纹理。

    Unity在URP(SRP)中主要是在RenderPipeline里面的DepthTexture复选框开启,也可以在摄像机里覆盖RenderPipeline的设置。开启后可在shader中使用_CameraDepthTexture获得。

    sampler2D _CameraDepthTexture;

    float depth = tex2D(_CameraDepthTexture, i.uv).r;
    col = float4(depth, depth, depth, 1 );

    景深模糊算法原理:
    1.计算模糊,通过偏移UV/增加混合颜色计算参数方式,获取多张模糊程度不一的贴图。
    2.根据深度纹理,来混合计算,离得远的参与最模糊计算,小于焦点距离的focalDistance的直接为最清晰的图。

    fixed4 final = (depth <= _focalDistance) ? MainTex : lerp(MainTex, BlurTex, clamp((depth - _focalDistance) * _farBlurScale, 0, 1));
    final = (depth > _focalDistance) ? final : lerp( MainTex, BlurTex, clamp((_focalDistance - depth) * _nearBlurScale, 0, 1));

    相关文章

      网友评论

          本文标题:[Unity3D] DepthTexture相关

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