GAMES101(5~6节,光栅化)

news2024/9/22 17:23:55

光栅化Rasterization

透视投影已知field和近平面,如何推导宽度?

根据三角函数:tan field / 2 = (height / 2) / ||n||近平面,从而可以求出高度

因为知道宽高比,所以可以求出宽度,高度 * 宽/高

视口变换

经过MVP变换,顶点位于正则化空间坐标,是一个在 [-1,1] ^3 之间的 x, y, z 坐标构成(标准立方体),我们下一步需要做的就是视口变换,将坐标映射到我们的屏幕中

假设定义:

屏幕是一个2维数组,每个元素对应一个像素,指定分辨率决定像素的多少,每个像素有各自的颜色

屏幕坐标系,左下为00,  像素坐标为00到width - 1, height - 1,每个像素坐标+1,像素中心+0.5,

//

视口变换矩阵:

不考虑z,如何将-1---1的宽高拉伸到0---width,或0---height?

比如宽度将坐标缩放* width / 2,那么分别为 - width /2,和 width /2,再平移正数width / 2左下角在原点,高度也一样

采样:

现在变换到了屏幕空间,如何将多边形(比如最简单的三角形)拆分为不同的像素?

也就是说多边形网格由三角形组成,网格已经被映射到屏幕上,我们就可以知道每个顶点的屏幕坐标,但是对于内部区域,并为全部遮挡像素,如何确定这是否被绘制颜色呢?

每个像素中心即为采样点,判断采样点是否在三角形内

对每个坐标循环,如果当前坐标+0.5(即中心)在三角形内,为1,否则为0、

微积分简述:

导数:函数在某一点的瞬时变化率,或者说函数的斜率。导数回答了“函数在某一点上变化的有多快”这个问题。

积分:是导数的逆运算,用来描述累积量。积分回答了“给定一个变化率,累积多少”这个问题。积分可以用于计算面积、体积、总量等。

极限:描述函数在某一点的趋近行为。

信号处理学简述:

与采样关系:

傅里叶级数展开:将一个周期函数展开为一组简单的正弦和余弦函数(或复指数函数)之和的表示方式。

傅里叶变换是傅里叶级数的推广,它将时域转换到频率域(函数),帮助我们分析频谱成分。

去除低频信号后

傅里叶逆变换:将频率域的表示还原为时域的表示

计算方式:通过设置采样点,计算每个采样到的值,再相连。

同时当频率很高时,采样数量不足,将发生走样,比如原本转为频率域应为蓝色线的表示,可是现在因为采样点不足将

对应

为黑色线,产生走样

//

模糊处理:

滤波:把特定频率的部分删掉,也相当于平均(比如从半球采样再求均值)或卷积(比如预滤波环境贴图,就是预先计算的卷积后的环境贴图)

比如可以将低频信号删掉,得到的就是这个图片人物轮廓,那么为什么高频对应人物轮廓呢?

因为边界位置发生了剧烈的变化,所以信号是高频的

可以看到时域和频域对应关系,时域的卷积 相当于 频率的乘积

抗锯齿 | 反走样

增加采样率(提高采样个数)

或者blurred aliasing 算法    先模糊(做卷积)再采样(映射到屏幕像素)、但是反之先采样再模糊不行

//

如何模糊处理?

MSAA:近似处理走样问题,在每个像素增加采样点

SSAA VS MSAA

本质区别在于计算颜色的次数,SSAA首先会将低分辨率转换,对高分辨率每个像素计算颜色,然后在几个像素一组求平均颜色,重新转回低分辨率

而MSAA不用计算每个高分辨率的像素,而是用采样点近似处理,通过对采样点遮挡个数直接计算颜色值

但同时MSAA并不如SSAA精准,但性能更好,

其余的还有FXAA在屏幕层面处理,TAA……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2111200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vulkan描述符、描述符Pool、Layout概念

1、DescriptorSetLayout为了组织和管理着色器资源(如缓冲区、纹理、采样器等),多个相同类型的Descriptor放在一个Layout中以优化GPU对资源的访问 //DescriptorSetLayout定义了哪些描述符Descriptor类型(Buffers、Textures、Sample…

四、搭建网站服务器超详细步骤——解决宝塔界面无法登录问题

前言 本篇博客是搭建网站服务器的第四期,也到了中间的一节 先分享一下我在搭建网站时的个人感受,我在这个环节卡住了很久 后来突然醒悟了,然后成功进入了宝塔界面 现在就来分享一下,我所遇到的问题 小伙伴们坐好了 …

LINUX和Windows提权前信息收集的两种方式

信息收集分为两种方式: 手动收集、自动收集; 手动枚举一个系统非常耗时,然而这种方法允许更多的控制,并可以帮助识别自动化工具经常遗漏的更奇特的提权提升方式; 一、手动收集 1、枚举用户 Windows whoami …

【C++】手动实现nique_ptr智能指针

1、自己实现封装了一个智能指针&#xff0c;并且使用了模板 目录 代码实现&#xff1a; 输出结果如下&#xff1a; 代码实现&#xff1a; #include <iostream>using namespace std;template <typename T> class UniquePtr { private:T *ptr;public://默认构造函…

【2024数学建模国赛赛题思路】C题第四套思路已出丨仅供参考

问题一思路分析 假定各种农作物未来的预期销售量、种植成本、亩产量和销售价格相对于2023年保持稳定&#xff0c;每季种植的农作物在当季销售。如果某种作物每季的总产量超过相应的预期销售量&#xff0c;超过部分不能正常销售。请针对以下两种情况&#xff0c;分别给出该乡村…

语法分析例题

答案&#xff1a;A 选项B&#xff0c;选项C&#xff0c;选项D都只有在程序运行后才能看出来是否正确 答案&#xff1a;D 自己写一个C程序&#xff0c;未赋值&#xff0c;就可以看出可以运行&#xff0c;但结果是乱码 #include<stdio.h>int main() {int a;int b;b10;bb…

图形推理-错题集

001 解析&#xff1a; 002 解析&#xff1a; 003 解析&#xff1a; 004 005 006

day09-IO-字符流其它流

一、字符流 字符流&#xff08;只能做文本文件的处理&#xff09;字符输入流 Reader--FileReader字符输出流 Writer--FileWriter ​ 使用文件字符输入流的好处&#xff1a;读取中文不会出现乱码问题 1.1 字符输入流 构造器说明public FileReader (File file)创建字符输入流管道…

软件测试永远的家——银行测试,YYDS

为什么做金融类软件测试举个栗子&#xff0c;银行里的软件测试工程师。横向跟互联网公司里的测试来说&#xff0c;薪资相对稳定&#xff0c;加班少甚至基本没有&#xff0c;业务稳定。实在是测试类岗位中的香饽饽&#xff01; 一、什么是金融行业 金融业是指经营金融商品的特…

VSCode中latex文件(Misplaced alignment tab character .LaTeX

Misplaced alignment tab character &.LaTeX 先给出参考文章1 Misplaced alignment tab character &.LaTeX 把bib文件中的 &改为 and 。删除原有的bbl文件、重新运行 选择这个运行 这个错误在overleaf上并没有遇到、在vscode上遇到了 方法二就是把 &改为…

医用介入导管的种类以及在线检测设备

关键字&#xff1a;介入导管生产线&#xff0c;医用导管检测设备&#xff0c;指引导管测径仪&#xff0c;球囊导管测量仪&#xff0c;医用导管测量&#xff0c;医用导管生产线&#xff0c;溶栓导管测径仪&#xff0c;造影导管测量仪 介入导管在医疗领域&#xff0c;特别是血管内…

机器学习之实战篇——MNIST手写数字0~9识别(全连接神经网络模型)

机器学习之实战篇——Mnist手写数字0~9识别&#xff08;全连接神经网络模型&#xff09; 文章传送MNIST数据集介绍&#xff1a;实验过程实验环境导入模块导入MNIST数据集创建神经网络模型进行训练&#xff0c;测试&#xff0c;评估模型优化 文章传送 机器学习之监督学习&#…

别再羡慕别人啦,四种方法轻松打造自己的IP形象

大家好&#xff0c;我是宇航&#xff0c;10年技术专家&#xff0c;专注于AI绘画&#xff0c;AI视频 做自媒体的小伙伴第一件事儿就是起一个IP名称和制作IP图像。制作图像这件事儿对于很多小伙伴来说都不太容易&#xff0c;有的小伙伴制作了很久还是没有做出自己满意的图像。 …

使用Python本地搭建http.server文件共享服务并实现公网环境远程访问——“cpolar内网穿透”

前言 本文主要介绍如何在Windows系统电脑上使用python这样的简单程序语言&#xff0c;在自己的电脑上搭建一个共享文件服务器&#xff0c;并通过cpolar创建的公网地址&#xff0c;打造一个可以随时随地远程访问的私人云盘。 数据共享作为和连接作为互联网的基础应用&#xff…

Spring Boot项目更改项目名称

背景&#xff1a;新项目开始前&#xff0c;往往需要初始化功能&#xff0c;拿到基础版本后更改项目对应的名称等信息。 更改步骤如下&#xff1a; 1、修改目录名称。 打开本地项目&#xff0c;右键修改项目名称。 2、修改maven项目的pom依赖 修改parent及modules项目名称&…

C++语法知识点合集:7.string类

文章目录 一、标准库中的string类1.string类2.auto和范围for3.string类的常用接口说明 二、string类的模拟实现1. 经典的string类问题2.浅拷贝3.深拷贝 一、标准库中的string类 1.string类 string是表示字符串的字符串类该类的接口与常规容器的接口基本相同&#xff0c;再添加…

鸿蒙 HarmonyOS 下拉控件

✍️作者简介&#xff1a;小北编程&#xff08;专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向&#xff09; &#x1f433;博客主页&#xff1a; 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN &#x1f514;如果文章对您有一定的帮助请&#x1f…

Verilog和Matlab实现RGB888互转YUV444

文章目录 一、色彩空间1.1 RGB色彩空间1.2 CMYK色彩空间1.3 YUV色彩空间 二、色彩空间转换公式2.1 RGB转CMYK2.2 CMYK转RGB2.3 RGB888转YUV4442.4 YUV444转RGB888 三、MATLAB实现RGB888转YUV4443.1 matlab代码3.2 matlab结果 四、Verilog实现RGB888转YUV444 一、色彩空间 色彩空…

python_openCV_计算图片中的区域的黑色比例

希望对原始图片进行处理,然后计算图片上的黑色和白色的占比 上图, 原始图片 import numpy as np import cv2 import matplotlib.pyplot as pltdef cal_black(img_file):#功能: 计算图片中的区域的黑色比例#取图片中不同的位置进行计算,然后计算器数值#----------------p…

如何使用事件流相关操作

文章目录 1. 概念介绍2. 使用方法StreamControllerStreamBuilder 3. 示例代码 我们在上一章回中介绍了管理Stream事件流相关的内容&#xff0c;本章回中将介绍如何使用Stream事件流输入输出数据 。闲话休提&#xff0c;言归正传&#xff0c;让我们一起Talk Flutter吧。 1. 概念…