开发者社区
试想我们的美术做了一个3D模型,然后渲染引擎把模型渲染到屏幕上。我们还可以选定不同的视角,模拟不同的光照条件去观察模型。现在来分析一下这个过程。如果说我们把这个过程看成一个函数,那么函数的输出就是屏幕上的图像。确切地说,是屏幕上的每个像素。这个函数的主要输入是这个3D模型,我们观察的视角,光照情况等等因素。渲染过程就是给出这些因素决定每个像素值的过程。首先来看模型。模型通常是由可视化的建模软件制作
Shader的各种运算原理离不开数学,是因为它是建立在虚拟世界上的数学模型,作为图形学中的一部分,大家就需要先掌握Shader所需要的基本的数学基础,比如:矢量、矩阵等等。下面就和大家介绍下数学基础的数学知识部分,帮助大家去了解消化这些内容。一、笛卡尔坐标系平时我们使用的是笛卡尔坐标系,记得高中时还学过极坐标系左手坐标系:中指指向+Z,食指指向+Y,拇指指向+X(右方),旋转正方向为顺时针右手坐标
上篇给大家介绍完了向量和坐标系,下面就要介绍Unity3D游戏开发会用到的矩阵知识,矩阵也是3D数学中十分重要的基础,掌握一下很有必要。矩阵乘法常用等式** I 为单位矩阵,k为标量,v、w为向量。MI = IM = MAB ≠ BA(AB)C = A(BC)(kA)B = k(AB) = A(kB)(vA)B = v(AB)(AB)T=BTAT(可扩展多个矩阵
本篇的背景是这样,大家都知道矩阵变化操作,以前我认为只要记住几个标准的变换矩阵就可以了,不用在意那些数据知识。可是在 Shader学习渲染管线,投影矩阵推导时候,直接就崩溃了,根本无法知道投影变化中,视空间到cvv的推导是怎么弄的?实际上我觉得很多同学也会不以为然,毕竟投影变换MVP矩阵系统已经给出了。但是我这在学习利用屏幕坐标深度缓存
变换又叫仿射变换,包括平移,缩放,旋转,下面我们就来简单介绍下这些变化的使用方法。一、变换前首先,我们绘制一个三角形,后面对齐进行变换,代码: /** * 变换前 * xu.lidong@qq.com * */ // 顶点着色器源码 var vertexShaderSrc = ` attribute vec4 a_Position;// 接收传入位置坐标,必须声明为全局 void main(