shader中制作简易3d绘制

在游戏开发中近大远小的效果是3d图形所呈现的基本效果,那我们如何在着色器中实现3d的效果呢,
实现的方式有多种形式,今天我们一起分析其中的一种方式,通过定义“camera”的位置,“物体”的位置与uv的计算相关性得到近大远小的效果,计算方式会借助于向量叉乘中的几何性质得出计算结果。


image.png

简易作出上图来简单介绍他们间的关系,我们把点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|

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容