Games101-现代计算机图形学入门-学习总结

线性代数复习

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
画家算法:先远处绘制,后近处绘制互相遮挡的 无法使用


着色

数学编辑器https://www.mathcha.io/

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 分形

留下评论