【渲染Keynote】
1、渲染图元(rendering primitives),可以是点、线、三角。
2、显卡对于显存的访问速度更快,而且大多数显卡对于RAM没有直接的访问权利 。
3、裁剪(Clipping)是将那些不在摄像机内的顶点裁剪掉。
4、OpenGL左下角为(0,0),右上角为(1,1)。
5、模板测试(Stencil Test)位于Fragment Shader之后。
6、Blend是最后一道工序。
7、一个形象的比喻是,我们在使用固定管线进行渲染时,就好像在控制电路上的多个开关我们可以选择打开或关闭一个开关,但永远无法控制整个电路系统。
8、OpenGL3.2中完全移除了固定管线。Unity5.2以后版本,固定管线也会被转化为shader管线。
9、计算机科学中的任何问题都可以增加一层抽象来解决。
10、三个轴互相垂直,且长度为1,这些矢量被称为标准正交基(orthonormal basis)。
11、Unity使用左手坐标系。而在Camera中,使用的是右手坐标系。
12、叉积不满足交换率,即axb!=bxa。
13、矩阵乘法不满足交换律。AxB!=BXA。
14、逆矩阵(inverse matrix)。不是所有的矩阵都有逆矩阵,该矩阵必须 是一个方阵。MM^(-1)=I。
15、正交矩阵(orthogonal matrix)。如果MM^T=I,则M是正交矩阵。显然,正交矩阵的M^T=M^(-1)。
16、满足以下公式的就是线性变换:f(x)+f(y)=f(x+y), kf(x)=f(kx)。
17、在齐次坐标下,点的w分量为1,向量的w分量为0。
18、裁剪空间(clip space),裁剪矩阵(clip matrix)也叫投影矩阵(projection matrix)。
19、透视投影后,z分量范围是[-w,w],而w是原z分量的取反。如果一个点在frustum之内,须满足-w<=x<=w,-w<=y<=w,-w<=z<=w。离摄像机越远,z值越大。
投影后,*面左下角为(-Near,-Near,-Near, Near),右上角为(Near, Near, -Near, Near),
远平面左下角为(-Far,-Far,Far,Far),右上角为(Far, Far, Far, Far)。
所以投影后,坐标的原点变为了视锥体的中心。
20、正交投影后,w分量仍然为1。
21、透视除法(perspective division),就是用投影后的w分量去除以x、y、z分量。转换后的坐叫归一化的设备坐标(Normalized Device Coordinats,NDC)。
此时,x、y、z都是[-1,1]。裁剪空间已经是一个立方体了。
22、Mv=vM^T
23、观察空间(view space)也被称为摄像机空间(camera spaace)。
24、观察空间和屏幕空间是不同的。观察空间是三维空间,屏幕空间是二维空间。从观察空间到屏幕空间的转换叫投影。
25、裁剪矩阵(clip matrix),投影矩阵(projection matrix)。
27、fixed范围为[-2.0,2.0],half为[-60000,60000]。
28、顶点着色器->裁剪->(透视除法)屏幕映射->片元着色器
29、一个显卡制作商为了让他们的显卡可以同时和OpenGL、DIrectX合作,就必须提供支持OpenGL和DirectX接口的显卡驱动。
30、OpenGL没有提供着色器编译器,而是由显卡驱动 来完成着色器的编译。也就是说,只要显卡驱动支持对GLSL的编译它主可以运行。
31、Cg则是真正意义上的跨平台,它会根据平台的不 ,编译成相应的中间语言。
32、使用固定管线进行渲染时,就好像在控制电路上的多个开关我们可以选择打开或者关闭一个开关,但永远无法控制 整个电路的排布。
33、Unity中可以在Default Maps中指定Shader默认纹理。当第一次使用该shader时,这些纹理就会自动被赋予到相应的属性上。
34、(AB)^T=B^T*A^T,(AB)^(-1)=A^(-1)*B^(-1)。
35、CBAv=vA^T*B^T*C^T
36、_ScreenParams,x=width,y=height。
37、遮罩纹理(mask texture)。采样得到遮照纹理的纹素值,然后使用其中某个通道的值(如texel.r)来与某种表面属性进行相乘。通过还会配套一个 mask-scale。
38、渐变纹理。
39、法线的变换矩阵为(M^T)^(-1),M的逆转置矩阵。
40、为了渲染非凹凸透明物体时物体自身不会重叠,需要通过两遍渲染。第一遍只写入深度,不输出颜色;第二遍利用深度,输出颜色 。
ZWrite On
ColorMask 0
41、渲染双面透明物体时,需要分为两个pass。第一遍只渲染背后,第二遍只渲染正面。
42、前向渲染中,环境光、自发光放在BasePass中只计算一次,而Addition Pass跟像素光源有关,每个像素光源会调用一次Addtion Pass。
43、延迟渲染不能处理半透明物体。
44、广告牌技术:使用 ViewDir 重建三个 Object 坐标轴(称为 Camera-Object 坐标轴),让所有 Object Vertex 新的 Camera-Object 坐标轴进行偏移。
45、
46、