《Unity Shader/AR》反畸变,解决shader中无法传入大量数组的问题

  1. 事情起因是这样的。 在制作AR的底层SDK时,需要跟硬件适配反畸变。

   由于曲面光学模型,不好用简单的公式描述畸变。

   所以决定把uv畸变来实现。

2. 为了效率最高,决定直接写入屏幕缓冲。

3.在摄像机后效里,无法传入大量数组,所以将数据转为texture,然后shader中对它采样,再分解为可以用数据。

4. 要注意,屏幕的顶点只有5个,上下左右中。 所以不要在顶点shader计算。

5. 我们传入的是uv数据,所以在像素阶段的uv改变为真正的UV。 所以要传入足够的uv数量,因为有畸变,不能自己计算插值。

  所以,如果目标是1920X1080,则要传入这么大的texture,然后采样的uv可以跟屏幕像素对应。

 

  

posted on 2018-07-06 15:22  百无禁忌  阅读(725)  评论(0编辑  收藏  举报

导航