当前位置: 首页 > article >正文

计算机图形学学习日志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

在这里插入图片描述

  1. 应用程序阶段(Application)
    开发者在此设置场景,包括定义物体几何形状、位置、光照条件等,还会进行碰撞检测等操作,确定需要渲染的对象,将相关数据输出给顶点处理阶段。
  2. 顶点处理(Vertex Processing)
    对输入的顶点数据(如位置、法线、纹理坐标等)进行变换,比如模型变换(将物体从局部坐标系转换到世界坐标系 )、视图变换(从世界坐标系转换到相机坐标系)、投影变换(转换到裁剪空间 )等,输出顶点流(Vertex Stream)。
  3. 三角形处理(Triangle Processing)
    将顶点组装成三角形图元,进行图元的裁剪(去除不在视野范围内的图元部分)、细分(在需要时将大三角形细分成更多小三角形 )等操作,输出三角形流(Triangle Stream)。
  4. 光栅化(Rasterization)
    核心步骤,将三角形图元转换为屏幕上的片段(Fragment)。通过采样三角形覆盖区域(如右侧示意图,确定三角形覆盖哪些像素位置 ),计算每个像素位置对应的片段属性(如深度、颜色等 ),输出片段流(Fragment Stream)。
  5. 片段处理(Fragment Processing)
    对每个片段进行操作,如纹理采样(根据纹理坐标获取纹理颜色 )、光照计算(确定片段颜色 )、透明度计算等,生成着色后的片段(Shaded Fragments)。
  6. 帧缓冲区操作(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过滤

取多次椭圆填充,效果更好代价更大。
在这里插入图片描述


http://www.kler.cn/a/594599.html

相关文章:

  • CVPR2025 | 对抗样本智能安全方向论文汇总 | 持续更新中~
  • mysql之DATE_FORMAT迁移到gbase8s
  • MVC_Publish-Subscriber 模式中的事件处理程序
  • 【虚幻引擎UE5】SpawnActor生成Character实例不执行AI Move To,未初始化AIController的原因和解决方法
  • 微服务即时通信系统---(九)消息转发子服务
  • Sqlserver安全篇之_启用和禁用Named Pipes的案列介绍
  • 基于 HT 2D3D 渲染引擎的新能源充电桩可视化运营系统技术剖析
  • 网络安全证书培训机构有哪些
  • Godep是什么??在GoLang中作用是什么
  • Unity 从零开始的框架搭建1-7 FSM有限状态机与其应用示例
  • 自动生成树形目录结构:与 `el-tree` 和滚动定位结合的完整解决方案
  • WordPress系统获取webshell的攻略
  • 请为下面的html添加一个修改按钮,以便对书名、价格进行修改
  • 【FastGPT】利用知识库创建AI智能助手
  • C++动态库中的静态调用和动态调用,延迟加载
  • 再学:ERC721扩展、ERC1155、SBT,OpenSeaNFT市场 NFT Market 习题讲解
  • Multisim学习-01 特点安装使用和第一个仿真实例
  • 智慧人大系统(源码+文档+讲解+演示)
  • [极客大挑战 2019]Upload_3.19BUUCTF练习day3(2)
  • 《信息系统安全》(第一次上机实验报告)