什么是光栅化?

一、 什么是光栅化?

光栅化作用是将几何数据变换后转换为像素呈现在显示设备上的一个过程。几何数据转换为像素,
本质是坐标变换、几何离散化,如下:

其中包含了坐标变换和几何离散化:

二、光栅化完成了什么

3D中,物体是3维的,拥有X, Y, Z三个坐标,并且拥有R, G, B三种颜色,alpha透明度,U, V贴图坐标,N法线。
三维物体在二维屏幕上的显示,大致分为以下几步:

  1. 坐标变换(transform)
    将场景中的三维坐标转换为二维坐标,这个请参考我的文章坐标系空间变换。
  2. 颜色计算(shade)
    计算每个顶点的颜色,通过UV贴图的颜色,结合光照,透明度等,计算出模型每个顶点的具体颜色(R, G, B)。
  3. 光栅化(rasterization)
    假定屏幕分辨率为
    1920×1080,在二维屏幕渲染(光栅化)时,内存中frame buffer只保存着1920×1080个屏幕点的颜色,然后一个一个的画到屏幕上。(它的实现方式是以一个1920×1080长的一维数组储存每个顶点的RGB颜色,然后遍历数组画出来)
    什么X, Y, Z,什么alpha之类的frame buffer都没有的,在frame buffer里只有3个值:R, G, B。
    X, Y, Z, alpha等等属性要在另外的地方存储。

    光栅化,就是计算出1920×1080这么长的RGB数组中,每一个RGB的值。

三、光栅化怎么完成的

我们计算出了3D模型每个顶点的颜色,这个是基于3维坐标的,顶点的三维坐标可以是小数
但在屏幕渲染时,屏幕是只有X,Y二维的,并且其像素点坐标都是整数。1920×1080的屏幕只有1920×1080=2073600个像素点。所以光栅化的连点描边是一个近似过程。

      目前主流的面片分割是三角形分割,所以大家在3DS MAX或者MAYA里看3D模型的网格,基本都是三角形网格,但也有以四边形为最小分割的算法,这里不涉及,我们认为3D模型的面片单元都是三角形。而光栅化主要有以下几步:

  1. 读取模型的顶点,3个3个的读,因为要画三角形。
  2. 将3个顶点两两连成线,形成三角形。
  3. 计算屏幕像素点在三角形内还是三角形外。在三角形内部的,就上色(颜色是之前算出来的),在三角形外部的,就不上色。
    (注意:如果一个三角形挡在另一个三角形前面,我们应该只画前面的三角形。所以这里还需要比较一下正准备上色的这个像素点是不是已经上过色了。如果这个像素点已经上过色了,并且它是被Z=1的顶点上的色,而我们正准备上色的这个顶点的Z=2(说明这个顶点被挡在了后面),那么这个顶点就不应该上色,因为它是被挡住的点。)
  4. 不断的循环,直到画完3D模型的所有三角形,这样一个模型就出来了!

总结:

总的来说,像素和纹素实际上是点,不是实体的块。屏幕空间原点是左上角的物理像素,但是纹理坐标原点是纹素矩形的最左上角。最重要的是,记住当你要将纹理中的纹素正确的映射到屏幕空间中的像素时,你需要减去0.5个单位。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖--sky-take-out(一)

目录 d1 软件开发流程 项目介绍 产品原型 技术选型 前端环境搭建 后端环境搭建 Git版本控制 数据库环境搭建 nginx反向代理和负载均衡 导入接口文档 Swagger 问题 d2 用户登录 代码实现 MD5密码加密 新增员工 需求分析与设计 代码开发 代码完善(Threa…

Spring Boot Interceptor(拦截器使用及原理)

之前的博客中讲解了关于 Spring AOP的思想和原理,而实际开发中Spring Boot对于AOP的思想的具体实现就是Spring Boot Interceptor。在 Spring Boot 应用程序开发中,拦截器(Interceptor)是一个非常有用的工具。它允许我们在 HTTP 请…

python爬虫学习(2)——requests模块

520那天我向心仪的女孩要微信:“女神,能给我你的微信号吗?” 女神:“给我——爬!!!!” 从那天开始,我就决定要学好爬虫,爬到女神微信号!&#xff…

RBA认证是什么?申请RBA认证的流程是什么?

RBA认证,全称为Responsible Business Alliance(责任商业联盟)认证,是一个全球性的企业社会责任(CSR)倡议,旨在通过推动供应链中的社会和环境责任实践,确保供应链的可持续性。该认证要…

【驱动】RS485收发控制、自动收发电路及波特率限制

1、芯片本身支持自动收发 RS485收发器芯片本身支持自动收发切换: 优点:简化硬件设计和软件编程,减少外部控制线;缺点:成本高,传输速率可能受限制。下面介绍几款支持自动收发切换的RS485/422芯片 1.1 MAX13487 MAX13487 是一款由 美信(Maxim) 生产的半双工 RS-485/RS…

Unity3D读取Excel表格写入Excel表格

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、读取Excel表格👉二、写入Excel表格👉三、Fileinfo和Directoryinfo的操作👉四、壁纸分享👉总结 👉前言 有时候难免会遇到读取文件写…

uniapp页面vue3下拉触底发送获取新数据请求实现分页功能

页面下拉触底获取新数据实现分页功能实现方式有两种,根据自己的业务需求来定,不同的方案适用场景不一样,有的是一整个页面下拉获取新数据,有的是部分盒子内容滚动到底部时候实现获取新数据,下面讨论一下两种方式的区别…

网络通讯聊天工具的实现

学习网络与通信,实现聊天界面能够通过服务器进行私聊和群聊的功能。 1.服务器:ServeSocket 客户端先发送消息给服务器,服务器接受消息后再发送给客户端。 利用服务器随时监听。等待客户端的请求,一旦有请求便生产一个socket套接…

js深入理解对象的 属性(properties)的特殊 特性(attributes)

对象 js对象 // 构造一个对象 let obj {}; let obj new Object(); 我们知道js中一切皆对象,对象是一个键值对集合(key: value),一个键(key)对应一个值(value),而每个键都是这个对象的属性,我们可以通过对象的属性来…

Java绩效考核系统源码 springboot员工绩效考核系统源码

Java绩效考核系统源码 springboot员工绩效考核系统源码-009 源码下载地址:https://download.csdn.net/download/xiaohua1992/89352195 项目介绍 本系统的功能分为管理员和员工两个角色 管理员的功能有: (1)个人中心管理功能&a…

一点点 cv 经验 1:cv方向、模型评估、输入尺寸、目标检测器设计

一点点 cv 经验 1:cv方向、模型评估、输入尺寸、目标检测器设计 cv 方向Pytorch数据集划分 模型评估误差偏差方差噪声 输入尺寸方法一:让数据适应模型方法二:修改模型适应数据方法三:划分Patch,分别处理 目标检测器结构…

【Redis】 关于列表类型

文章目录 🍃前言🍀常见操作命令介绍🚩lpush🚩lpushx🚩rpush🚩rpushx🚩lrange🚩lpop🚩rpop🚩lindex🚩linsert🚩llen🚩lrem&…

Python3 笔记:Python之禅

打开Python Shell,输入import this,按回车键运行程序。 Beautiful is better than ugly. 优雅胜于丑陋。 Explicit is better than implicit. 明确胜于含糊。 Simple is better than complex. 简单胜于复杂。

Ansible02-Ansible Modules模块详解

目录 写在前面4. Ansible Modules 模块4.1 Ansible常用模块4.1.1 Command模块4.1.2 shell模块4.1.3 scrpit模块4.1.4 file模块4.1.5 copy模块4.1.6 lineinfile模块4.1.7 systemd模块4.1.8 yum模块4.1.9 get_url模块4.1.10 yum_repository模块4.1.11 user模块4.1.12 group模块4.…

在C++中自定义命名空间,在命名空间中定义string变量,同时定义一个函数实现单词逆置

代码 #include <iostream> #include <cstring> using namespace std; namespace my_space {string s;void reverse(string s);//定义逆置函数 } using namespace my_space; void my_space::reverse(string s){int lens.size();int i0;int jlen-1;while(i<j){//…

设计模式17——模板方法模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 模板方法模式&#xff08;Temp…

买车是小米su7还是model3?这个AI在我这里“干掉了”百万车评人

作者 | 曾响铃 文 | 响铃说 43天交付1万辆新车&#xff01;雷军的微博一发&#xff0c;又把小米汽车推上了热搜。 自小米su7问世以来&#xff0c;天天刷屏。说不心动&#xff0c;那是假的&#xff0c;身边好几个朋友都按捺不住要下订一台了。 但真要买&#xff0c;还是忍不住…

容器组件:页面和自定义组件生命周期(HarmonyOS学习第五课)

页面和自定义组件生命周期 先明确自定义组件和页面的关系&#xff1a; 自定义组件:Component装饰的UI单元&#xff0c;可以组合多个系统组件实现U的复用。 页面:即应用的UI页面。可以由一个或者多个自定义组件组成&#xff0c;Entry装饰的自定义组件为贞面的入口组件&#xf…

5月26(信息差)

&#x1f30d; 珠峰登顶“堵车”后冰架断裂 5人坠崖 2人没爬上来&#xff01; 珠峰登顶“堵车”后冰架断裂 5人坠崖 2人没爬上来&#xff01; &#x1f384; Windows 11 Beta 22635.3646 预览版发布&#xff1a;中国大陆地区新增“微软电脑管家”应用 ✨ 成都限购解除即将满…

DOS学习-目录与文件应用操作经典案例-ren

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 案例 1&#xff1a;重命名当前目录下的文件 案例 2&#xff1a…