码农知识堂 - 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 算法:

  • 相关阅读:
    自动化、智能、机器人-2023-
    【DBA100人】李建明:一名普通DBA的14年技术之路与成长智慧
    C++11
    实用干货!看壹哥如何在SpringBoot项目中同时支持https和http协议
    Z410 2023款无人机,专为零基础开发者打造的入门级开源无人机
    我参加NVIDIA Sky Hackathon 后端修改
    【Python】一篇拿下类属性与类方法详解【超详细的注释和解释】
    c++学习从小白到高级工程师实战02:opencv的活学活用
    室外定位:高精度北斗RTK定位技术
    抽象代数精解【9】
  • 原文地址:https://blog.csdn.net/Jason6620/article/details/125972333
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号