在游戏开发中近大远小的效果是3d图形所呈现的基本效果,那我们如何在着色器中实现3d的效果呢,
实现的方式有多种形式,今天我们一起分析其中的一种方式,通过定义“camera”的位置,“物体”的位置与uv的计算相关性得到近大远小的效果,计算方式会借助于向量叉乘中的几何性质得出计算结果。
简易作出上图来简单介绍他们间的关系,我们把点c作为摄像机的位置,点p是物体的位置,
uv是作用于屏幕上的uv坐标,我们会把其转换为3维坐标(uv.x,uv.y,0),我们可以把转换后的uv点的位置定义为U,则U-C=CU向量,P-C=CP向量,通过cross(CU,CP)求其模长为|cross(CU,CP)|,根据叉乘的几何意义可知,叉乘后的模长等于以两向量为边所形成的平行四边形的面积,又因为平行四边形的面积等于底乘于高,所以要求h的长度,只需要通过以下公式求得即可:
h=|cross(CU,CP)|/|CU|