码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • GAMES101复习:光栅化


    • MVP变换之后该做什么?自然是将变换好的视图映射到屏幕空间上。
    • 最终会把[-1,1]^3映射到屏幕空间上去。
    • 当所有的三角形都已经屏幕上,这时就要把三角形画出来,这个过程就叫光栅化。
    • 利用像素的中心(是否在三角形内),对三角形可见性的函数进行采样。
    • 处理反走样(抗锯齿)AntiAliasing

    目录

    1. 视口变换

    1.1 定义屏幕、屏幕空间

    1.2 视口变换:将标准立方体坐标变换到屏幕空间

    2. 光栅化

    2.1 三角形:最基本的图元

    2.2 采样:对连续函数的离散化,对像素中心(x+0.5,y+0.5)进行采样

    ⭐ 2.2.1 AABB包围盒(轴对齐包围盒):求解离散点最优包围空间的方法

    3. 反走样

    3.0 图形学中的几种Sampling Artifacts

    ⭐3.1 走样的原因:采样频率无法与信号频率同步

    3.2 频域(Frequency Domain)

    ⭐3.2.1 傅里叶变换(Fourier Transform):时域-->频域

    3.2.2 高频信号需要高频采样,一些可视化例子 

    3.2.3 频域图:高通滤波、低通滤波、某频段通滤波

    3.2.4 卷积操作:时域中的加法=频域中的乘法

    ❓3.2.5 采样=重复频域上的内容 

    ❓3.2.6 走样=频域上内容混合,即函数上有交叉的部分

    ❗3.2.7 反走样 = 限制频域上内容的混合,在采样前通过滤波去除高频部分

    3.2.8 由以上可得出:可通过在一定像素区域卷积来达到反走样的效果,取均值

    3.3 几种反走样技术

    3.3.1 MSAA(多重采样抗锯齿):提高分辨率,算平均值

    3.3.2 FXAA(Fast Approximate AA):快速近似抗锯齿 

    3.3.3 TAA(Temporal AA):时域抗锯齿

    3.3.4 DLSS(Deep Learning Super Sampling):深度学习抗锯齿

    4. 可见性与遮挡(Visibility/Occlusion)

    4.0 画家算法Painter's Algorithm

    ⭐4.1 Z-Buffering深度缓冲,在GPU硬件中实现


    1. 视口变换

    1.1 定义屏幕、屏幕空间

    1.2 视口变换:将标准立方体坐标变换到屏幕空间

    2. 光栅化

    2.1 三角形:最基本的图元

    • 保证是一个平面
    • 容易定义三角形内外(通过叉乘)
    •  三角形内任意一点的属性可通过插值获得

    2.2 采样:对连续函数的离散化,对像素中心(x+0.5,y+0.5)进行采样

    采样可以在时间上采样,也可以在位置上采样

    ⭐ 2.2.1 AABB包围盒(轴对齐包围盒):求解离散点最优包围空间的方法

    碰撞检测之 AABB 包围盒_星星光点的博客-CSDN博客_aabb包围盒

    3. 反走样

    3.0 图形学中的几种Sampling Artifacts

    ⭐3.1 走样的原因:采样频率无法与信号频率同步

    3.2 频域(Frequency Domain)

    ⭐3.2.1 傅里叶变换(Fourier Transform):时域-->频域

    利用傅里叶级数近似原函数:

    3.2.2 高频信号需要高频采样,一些可视化例子 

     

    3.2.3 频域图:高通滤波、低通滤波、某频段通滤波

    高通滤波:只保留高频率部分,视觉上表现为保留边界,因为边界是图像中变化最剧烈的部分。

    低通滤波:只保留低频部分,视觉上表现为模糊,可理解为去除明显的边界部分。 

    3.2.4 卷积操作:时域中的加法=频域中的乘法

    由此,卷积的实现可以有两种方法:

    ❓3.2.5 采样=重复频域上的内容 

    ❓3.2.6 走样=频域上内容混合,即函数上有交叉的部分

    ❗3.2.7 反走样 = 限制频域上内容的混合,在采样前通过滤波去除高频部分

    所以这也就是为什么可以通过滤波的方式能一定程度上解决走样的原理:

    3.2.8 由以上可得出:可通过在一定像素区域卷积来达到反走样的效果,取均值

    3.3 几种反走样技术

    3.3.1 MSAA(多重采样抗锯齿):提高分辨率,算平均值

    比如把之前每个点由1×1像素提升为2×2的像素点

    随后进行采样,并算得均值

    3.3.2 FXAA(Fast Approximate AA):快速近似抗锯齿 

    通过图像匹配的方法找到锯齿的图像边界,并换成没有边界的图像,速度十分快,与采样无关,用图像的方法

    3.3.3 TAA(Temporal AA):时域抗锯齿

    复用上一帧的信息,相当于MSAA对应的样本分布在了时间上。

    3.3.4 DLSS(Deep Learning Super Sampling):深度学习抗锯齿

    上采样时会丢失一些信息(产生锯齿),采样率不够,利用深度学习技术“猜”出缺失的细节。

    4. 可见性与遮挡(Visibility/Occlusion)

    4.0 画家算法Painter's Algorithm

    ⭐4.1 Z-Buffering深度缓冲,在GPU硬件中实现

    • 存取离我们最近的像素深度值在一个Buffer中,叫深度缓存,Z-Buffer
    • 把离我们最近的像素点混合后的信息缓存,叫做frame buffer

    z-buffer 算法:

  • 相关阅读:
    webpack loader和plugins的区别
    接口自动化测试思路和实战(3):测试库框架
    LeetCode 1345. 跳跃游戏 IV (bfs+哈希表)
    【数据结构练习】二叉树相关oj题集锦三
    python多线程示例
    JSON数据和解析
    手机和电脑之间用rsync同步
    Mongodb 安装脚本(附服务器自启动)
    推荐一个react拖拽排序的库,@dnd-kit
    27岁想转行IT,还来的及吗?
  • 原文地址:https://blog.csdn.net/Jason6620/article/details/125972333
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号