目录
线性代数复习
1. 判断叉乘 法向量方向:
例:右手坐标系,AXB 移动为同一个出发点,然后四指从A绕向B,大拇指则是 法向量,AB夹角不重要(AB指向的方向不重合即可)
应用:
判断左右,进一步,判断点是否在凸多边形内部
凹多边形呢?https://www.cnblogs.com/luxiaoxun/p/3722358.html
面积判别法:
夹角和判别法:
引射线法:
向量运算:https://baike.baidu.com/item/%E5%90%91%E9%87%8F%E7%A7%AF/4601007?fr=aladdin
叉积的两种运算方式:
1.算式sin: |c|=|a|·|b|·sin<a,b>
2.行列式:
向量积与数量积的区别
TransFormation
二维齐次坐标
二维point
有1的是point(x,y,1)
二维vector 没有1表示vector (x,y,0)
表示缩放:
表示旋转:
表示位移:
TransFormation 2
三维齐次坐标
重点:三维旋转 (右手坐标系)
MVP
模型视图,投影变换(前两者经常放在一起)
View Transformation
View 回归原点,看向-z,y向上
任意一个视图 如何变换为标准视图呢:位移直接归零旋转可以先逆,然后使用逆矩阵转置,即可求出旋转矩阵
最后视图变换结束,还是要应用的模型上,
Projection transformation
透视投影与正交投影
正交投影做法:
正则化矩阵l
r是x轴左右的数据n
f是z轴远近的数据t
b是y轴上下的数据
OpenGL左手系原因
透视投影做法
透视投影矩阵
所以 透视->正交 矩阵是
n 0 0 0
0 n 0 0
0 0 n+f -nf
0 0 1 0
提问:Z的变化?
fov 与 Aspect ratio (定义视锥)
fov 与 Aspect ratio (定义视锥)
视锥与宽高比 (透视投影数据) 和 长方体数据(正交投影数据) 关系
三角形光栅化
MVP 之后绘制到屏幕上
视口变换
采样(Simple Approach:Sampling)
判断屏幕所有的像素点是否在三角形内,然后 采样,将像素 置0 1,内1,外0
如何判断一个三角形是否在三角形内,使用通顺序向量叉积:例如
p1p2 x p1Q
p2p0 x p2Q
p0p1 x p0Q
当结全正或者全负,则点在三角形内
优化:Bounding Box。将不在Bouding box内的像素不需要考虑
出现问题:走样 (锯齿严重)解决:反走样(抗锯齿)
反走样、深度缓冲(重点)
artifacts(瑕疵)摩尔纹、走样
原因: 傅里叶变换,频域空间 频域与时域关系
采样跟不上频率
滤波(去掉一系列频率)
时域的乘积=频域的卷积
时域的卷积=频域的乘积
走样:
在外观表现上:锯齿在频域的频谱上:
重叠造成原因:采样不足,频率过大
解决办法:增
加采样(增加分辨率),频域上间隔大
反走样,先做模糊,再做采样,在频率上,先低通滤波(砍掉高频),然后采样,频谱上则无交叉
关键:滤波器,如何变模糊解决:卷积,平均,三角形模糊 ,box filter
具体使用:
MSAA(增加采样点,计算三角形的覆盖) 模糊操作 采样
FXAA(快速近似抗锯齿,相当于图像后期处理,拿到锯齿图,然后做处理,和采样无关)
TAA(最近兴起,与时间相关,复用上一帧像素,将MSAA在频域的分布放到时间上操作,用像素内外试探)(很多游戏的图像选项也能看到这几个选项)
超分辨率(图像拉大,不出现锯齿)
DLSS(深度学习,猜)
shading 1
Zbuffer
画家算法:先远处绘制,后近处绘制互相遮挡的 无法使用
着色
shading 2
渲染管线
顶点着色器(vertex shader),像素着色器(片段着色器)
shading 3
重心坐标与插值
求重心坐标:
重心: 面积平均
双线性插值 (水平+竖直)
Bicubic 取周围16个插值 (双三次插值,双立方插值)
想要好效果,就需要高计算
Mipmap
允许范围查询
fast,approx,square
存储只是额外的 三分之一
三线性插值(层与层之间插值)
更好的效果:
各向异性过滤(考虑方向性)
矩形查询,(Mipmap只能正方形),所以效果更好(但是开销加大,原本的3倍)显存够,开最高,对运算要求不高
EWA过滤(开销更大,多次查询)
shading Texture
bump Mapping(normal mapping,告诉模型法线信息,展示凹凸结果)
Ambient occlusion (AO 环境光遮蔽,其实就是阴影贴图,告诉模型阴影信息)
贴图都是为了节约计算,以内存换计算量(normal 节约模型细节,Ao节约阴影计算)纹理(贴图),主要还是看着色器如何解释
3D Textures体渲染,扫描,三维纹理
Geometry
Geometry lmplicit surface 隐式表达(隐式表面)数学公式表示
几何之间,可以使用距离函数 ,最终绘制图形
Fractals 分形