games101-(5/6)

news/2025/1/30 3:52:45/

光栅化

投影完成之后,视图区域被确定在从[-1,1]的单位矩阵中,下一步就是光栅化

长宽比:ratio

垂直的可视角度:fild-of-view 可以看到的y 轴的范围,角度越小 越接近正交投影

屏幕坐标系

将多边形转化成像素

显示器的成像:隔行扫描(每次仅仅绘制奇数行或偶数行)

三角形

像素和三角形的位置关系:像素的中心点和三角形的位置关系如何确定

采样

判断像素的中心点是否在三角形内

如何实现一个点是否在三角形内?

使用叉乘:p1p2 与p1q 叉乘 ,使用右手螺旋定则,z朝外,q 在p1 p2 的左侧

同理:q 在p2p0的右侧

q在p0 p1 的左侧;

因此 q 在三角形外侧

包围盒:bounding box ;不需要考虑所有的像素;考虑 三角形顶点的最大最小值

实际中会有锯齿,光栅化采样会导致该问题

反走样

通过判断像素点中心是否在三角形中,获取该像素点的值

实际得到:

期望得到:

实际上不期望出现锯齿

采样产生的现象:

(1)锯齿:jaggies

(2)摩尔纹

通过删除奇数行列后放大到和原图像尺寸

频域

高频信息:

对应图像的边界

卷积

时域卷积= 频域乘积

采样频率过低会导致频谱混叠,无法恢复,采样频率>= f

处理

(1)增加采样率:显示器分辨率高,像素和像素之间的间隔小,采样率高,更清楚

(2)反走样:先做模糊处理(低通滤波,过滤掉高频信息),再采样,相当于降低了原来频谱的对应的T,这样低的采样率不容易造成频谱混叠,无法过滤出原来的频谱

计算平均像素值:

MSAA

通过对像素内的多个位置进行采样并取其平均值来近似 1 像素盒式滤波器的效果

原本的效果:

第一步:使用2x2的像素点代替原来的像素点 

如蓝色区域,有75%的像素点在三角形内 

深度缓冲 Z-buffer

Painter‘s Algorithm

先画远处,再画近处

解决不了环形覆盖的问题

Z-Buffer

右图记录深度,深度越小,颜色越重

算法

如果当前三角形点的z 值小于 zbuffer中维护的z值,则重新赋值;

并且更新该点中的z值


http://www.ppmy.cn/news/1567791.html

相关文章

C语言内存管理详解

C语言不像其他高级语言那样提供自动内存管理,它要求程序员手动进行内存的分配和释放。在C语言中,动态内存的管理主要依赖于 malloc、calloc、realloc 和 free 等函数。理解这些函数的用法、内存泄漏的原因及其防止方法,对于编写高效、可靠的C…

苍穹外卖使用MyBatis-Plus

系列博客目录 文章目录 系列博客目录一、修改sky-take-out项目的pom.xml文件1.修改lombok依赖的版本号2.修改spring-boot-starter-parent父工程的版本号3.增加依赖 二、修改sky-server模块的pom.xml文件1.增加mysql连接的依赖(版本为8.0以上)2.增加两个依…

分布式 IO 模块携手 PLC,开启设备车间降本增效新篇章

在当今竞争激烈的制造业领域,设备车间的高效控制与成本优化,是企业立足市场的关键。而明达技术MR30分布式 IO 模块与 PLC(可编程逻辑控制器)的精妙搭配,正成为实现这一目标的利器。 精准控制,提升生产效能 …

网络安全态势感知:企业数字化转型的 “安全密钥”

在数字经济飞速发展的当下,网络安全已经成为企业平稳运营的关键所在。从大型企业的数据泄露事故,到中小企业遭遇的各类网络攻击,网络安全威胁无处不在。而网络安全态势感知产品,作为应对复杂网络威胁的关键技术,正逐渐…

【CSS入门学习】Flex布局设置div水平、垂直分布与居中

水平平均分布 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>…

计算机网络__基础知识问答

Question: 1&#xff09;在计算机网络的5层结构中&#xff0c;每一层的功能大概是什么&#xff1f; 2&#xff09;交换机的功能&#xff1f;https://www.bilibili.com/video/BV1na4y1L7Ev 3&#xff09;路由器的功能&#xff1f;https://www.bilibili.com/video/BV1hv411k7n…

Github 2025-01-26 php开源项目日报Top10

根据Github Trendings的统计,今日(2025-01-26统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Blade项目1Laravel:表达力和优雅的 Web 应用程序框架 创建周期:4631 天开发语言:PHP, BladeStar数量:75969 个Fork数量:24281 次…

Spring Data JPA 实战:构建高性能数据访问层

1 简介 1.1 Spring Data JPA 概述 1.1.1 什么是 Spring Data JPA? Spring Data JPA 是 Spring Data 项目的一部分,旨在简化对基于 JPA 的数据库访问操作。它通过提供一致的编程模型和接口,使得开发者可以更轻松地与关系型数据库进行交互,同时减少了样板代码的编写。Spri…