Unity Shaderlab-从屏幕空间到世界空间的转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity Shaderlab-从屏幕空间到世界空间的转换相关的知识,希望对你有一定的参考价值。

我正在制作一个需要世界空间坐标的后处理着色器(统一)。我可以访问某个像素的深度信息,以及该像素的屏幕位置。如何找到该像素对应的世界位置,就像ViewportToWorldPos()函数一样?

答案

看看这个教程:http://flafla2.github.io/2016/10/01/raymarching.html

实质上:

  • 在屏幕的每个角落存储一个向量,作为常量传递,从摄像机位置到角落。
  • 根据屏幕空间位置或屏幕空间四元组的uvs插入向量
  • 将最终位置计算为cameraPosition + interpolatedVector * depth

以上是关于Unity Shaderlab-从屏幕空间到世界空间的转换的主要内容,如果未能解决你的问题,请参考以下文章

unity urp 获取屏幕深度法向颜色纹理以及从深度纹理重构世界空间坐标

unity urp 获取屏幕深度法向颜色纹理以及从深度纹理重构世界空间坐标

Unity3D ShaderLab 修改渲染队列进行深度排序

Unity - 如何在屏幕覆盖画布上方显示世界空间画布?

unity 坐标变化

Unity shader 获取深度的详细数学原理