Parallax Occlusion Mapping

Attached Image: AdvGameProg_ACloserLook_Zink_4.jpg

如上图,本来是采样original texture coordinates点的颜色,其实却采样了correcter texture coordinates点的颜色。

而且会随着视线的不同看到凹凸程度变化。

1. 除了颜色贴图和法线贴图外,还要提供高度图。 并在计算时候将高度图限制在【0-1】的取值范围。

2.纹理坐标的偏移计算需要在切线空间中进行。将用到的坐标,视线等转换到切线空间。

3计算距离:视线和height=1,和height=0交点的距离。 这便是下面用的采样的最长的长度,起点是height=1与视点的交点(也是该mesh的坐标点)。 求这段距离

4.求视线和高度图的交点,一般是采取采样固定距离的方法,当找到第一个小于高度图的的采样点就当做交点. 如上图的correcter texture coordinates

5.得到交点的纹理坐标的偏移。 采取改点的颜色。

6.交点和光源连线上采样看看是否有遮挡,这样还可以计算出自阴影。

一篇详细讲解的文章

http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/a-closer-look-at-parallax-occlusion-mapping-r3262

原文地址:https://www.cnblogs.com/snake-hand/p/3187104.html