获取深度和法线纹理 背后的原理【Unity Shader入门精要13.1.1】

 

13.1.1背后的原理

什么是深度纹理:

实际上就是一张渲染纹理,只不过它里面储存的像素值不是颜色值,而是一个高精度的深度值,由于被储存在一张纹理中,深度纹理里的深度范围是[0,1],而且通常是 非线性分布的。

深度值来自顶点变换后得到的归一化的设备坐标(Normalized Device Coordinates,NDC)

一个模型想要最终被绘制在屏幕上,需要把它的顶点从模型空间变换到齐次裁剪坐标系下,这是通过在顶点着色器中乘以MVP变换矩阵得到的,在变换的最后一步,需要使用一个投影矩阵来变换顶点。当用的是透视投影类型的摄像机时,这个投影矩阵就是非线性的了。正交投影使用的变换矩阵是线性的。

线性关系:两个变量之间存在 一次方函数 关系

线性回归:(Linear Regression)利用线性回归方程的最小平方幻术对一个或多个自变量之间的关系进行建模的一种回归分析。

深度值对应了NDC中顶点坐标的Z分量的值,由于NDC中Z分量的范围是[0,1],为了让这些值能储存在一张图像中,需要进行映射:

映射公式:  d=0.5\cdot z_{ndc}+0.5


如何得到深度纹理:

在Unity中,深度纹理来自于:

【1】直接来自于真正的深度缓存:当使用 延迟渲染路径(包括遗留的延迟渲染路径)时,可以访问到,信息储存在G-buff

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值