计算机图形学学习日志4
计算机图形学学习日志4.
- 1.布林-冯光照反射模型
- 2.按频率着色模型
- 顶点法线如何求?
- 每像素法线
- 3.渲染管线pipeline
- 4.三角形内一点的重心坐标计算
- 5.双线性插值确定对应位置的texle--纹理过小
- 超采样ssaa和多重抗锯齿msaa
- 6.纹理过大
- 三线性,额外1/3的空间。
- 引入mipmap
- 层级计算
- 各向异性过滤,额外3倍空间。
- EWA过滤
1.布林-冯光照反射模型
La表示环境光,该物体本来该有的颜色。
Ld表示漫反射光,与出射角无关。
Ls表示镜面反射,与半程向量和法线的夹角有关。半程向量是入射光线方向向量与观测方向向量的中间向量。
2.按频率着色模型
1.每个面: flat Shading。
2.每顶点: Gouraud Shading。
3.每像素: Phong Shading。
顶点法线如何求?
是每个面法线的加权平均! 权为面积!
每像素法线
是两个顶点法线之间的一个平滑过渡,感觉是Lerp?
3.渲染管线pipeline
- 应用程序阶段(Application)
开发者在此设置场景,包括定义物体几何形状、位置、光照条件等,还会进行碰撞检测等操作,确定需要渲染的对象,将相关数据输出给顶点处理阶段。 - 顶点处理(Vertex Processing)
对输入的顶点数据(如位置、法线、纹理坐标等)进行变换,比如模型变换(将物体从局部坐标系转换到世界坐标系 )、视图变换(从世界坐标系转换到相机坐标系)、投影变换(转换到裁剪空间 )等,输出顶点流(Vertex Stream)。 - 三角形处理(Triangle Processing)
将顶点组装成三角形图元,进行图元的裁剪(去除不在视野范围内的图元部分)、细分(在需要时将大三角形细分成更多小三角形 )等操作,输出三角形流(Triangle Stream)。 - 光栅化(Rasterization)
核心步骤,将三角形图元转换为屏幕上的片段(Fragment)。通过采样三角形覆盖区域(如右侧示意图,确定三角形覆盖哪些像素位置 ),计算每个像素位置对应的片段属性(如深度、颜色等 ),输出片段流(Fragment Stream)。 - 片段处理(Fragment Processing)
对每个片段进行操作,如纹理采样(根据纹理坐标获取纹理颜色 )、光照计算(确定片段颜色 )、透明度计算等,生成着色后的片段(Shaded Fragments)。 - 帧缓冲区操作(Framebuffer Operations)
处理片段的颜色、深度、模板等缓冲区信息。包括深度测试(判断片段是否在其他物体前面,决定是否绘制 )、混合(处理半透明物体颜色融合 )等操作,最终结果输出到显示设备(Display)呈现图像。
4.三角形内一点的重心坐标计算
5.双线性插值确定对应位置的texle–纹理过小
u01,u11对s进行插值。记x1
u00,u10对s进行插值。记x2
x1, x2对t进行插值。
超采样ssaa和多重抗锯齿msaa
6.纹理过大
三线性,额外1/3的空间。
引入mipmap
根据相邻像素映射到texel之间的间距L,来判断应该取哪两个层级的mipmap来进行Lerp然后三线性过滤,可以取到一个正方形范围的texel。
层级计算
各向异性过滤,额外3倍空间。
把mipmap更新成了不止是等比缩小长宽的,还有只变化一边的mipmap。可以取到一个矩形范围的texle,无法很好解决斜着的texle。
EWA过滤
取多次椭圆填充,效果更好代价更大。