【实时渲染】图形渲染管线

渲染管线是什么?

渲染管线的核心功能就是利用给定的虚拟相机、三维物体、光源等信息,经过一系列不同的阶段来生成或渲染一张二维图像。渲染管线就是实时渲染的低层工具。最终图像中物体的位置和形状,由其几何结构,环境特征以及相机位置所决定。而物体的外观则会受到材质属性、光源、纹理(应用在物体表面上的图像)以及着色方程的影响。

渲染管线的架构

渲染管线的结构其实是一种流水线的思想,一组工人比作一个流水线,组内不同的工人代表着不同阶段的操作。比如要生产一个三文治,第一个工人准备面包传递给第二个工人,第二个工人使用面包把面包和火腿块叠好传给第三个工人,第三个工人把配料涂在三文治上,就这样完成了一个三文治。

在渲染管线中也是这样。我们把它方程几个粗糙的阶段。如下:
程序应用-》几何阶段-》光栅化-》片元阶段-》测试阶段

程序应用

这一阶段主要由CPU完成,主要是把虚拟相机、三维物体、光源等信息传递给GPU。其实它还会做一些物理碰撞检测的阶段。也可以把一些简单的计算交给GPU来做,也就是计算着色器(computer shader)。因为开发者对这个阶段的控制度是最高的,所以大部分程序性能优化都可以在这个阶段来完成,比如对顶点的剔除,减少GPU计算点,面的数量等。

几何阶段

这一阶段主要对图像的顶点进行坐标系转换,由三个矩阵进行叉乘转换坐标轴,这三个矩阵分别是模型(Model)、观察(View)、投影(Projection)。这三个矩阵代表了物体顶点坐标从局部空间转换到裁剪空间,最后以屏幕坐标的形式结束。再生成图元(点,三角形等)传递到下一个阶段

光栅化

拿到几何阶段传递过来的图元,对图元内的像素进行搜索,得到图元内的像素并把这些像素传递到片元着色器进行加工。

片元阶段

对传递过来的片元进行染色处理,决定片元的显示颜色。

测试阶段

可以对没有通过的片元进行屏蔽处理。

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

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

相关文章

Ubuntu+Tesla V100环境配置

系统基本信息 nvidia-smi’ nvidia-smi 470.182.03 driver version:470.182.03 cuda version: 11.4 查看系统体系结构 uname -aUTC 2023 x86_64 x86_64 x86_64 GNU/Linux 下载miniconda https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CM&OA https://mi…

Python指南 | 在linux上安装python3.7

发布于 2021-12-14 13:28:47 6.8K2 举报 今天在腾讯云服务器上安装了python3,又学到的知识。 如何在Linux环境中安装Python3.7.0以上 1.下载python cd /home wget http://cdn.npm.taobao.org/dist/python/3.7.4/Python-3.7.4.tgz 复制 使用了wget软件&#…

python字符串格式化

字符串格式化 # 2023年11月16日 星期四 y 2023 m 11 d 16 w 四 s %d年%d月%d日 星期%s%(y,m,d,w) print(s) s {}年{}月{}日 星期{}.format(y,m,d,w) print(s) s f{y}年{m}月{d}日 星期{w} print(s)

TestNG数据驱动DataProvider(4种方式)

TestNG数据驱动DataProvider(4种方式) 1、DataProvider用法(从二维数组中读取) 1、定义方法,加上@DataProvider注解 定义一个方法,方法名随意取,使用@DataProvider注解,注解中给这个provider起名字,该方法返回一个二维数组。例如:@DataProvider(name="testData&quo…

redis报错3

INFO: Initializing SpringDispatcherServletdispatcherServlet

OpenCV快速入门:移动物体检测和目标跟踪

文章目录 前言一、移动物体检测和目标跟踪简介1.1 移动物体检测的基本概念1.2 移动物体检测算法的类型1.3 目标跟踪的基本概念1.4 目标跟踪算法的类型 二、差值法检测移动物体2.1 差值法原理2.2 差值法公式2.3 代码实现2.3.1 视频或摄像头检测移动物体2.3.2 随机动画生成的移动…

串口数据包收发的思路和流程-stm32入门

本节主要内容: 如何去规定一个合理的数据包格式如何收发数据包 1. 数据包格式规定/定义 1.1 HEX 数据包定义 固定包长,含包头包尾 可变包长,含包头包尾 首先数据包的作用是把一个个单独的数据给打包起来,方便我们进行多字节…

【05】python序列类型

文章目录 1.字符串 strings1.1 字符串的创建1.2 字符串的长度1.3 字符串的索引1.4字符串的切片2.列表 List2.1列表的创建2.2 列表的长度2.3 访问列表中的元素2.3.1 列表的索引2.3.2 列表的切片2.4 修改列表中的元素3. 元组 Tuple3.1 元组的创建与长度3.2 访问元组中的元素4.字典…

【精选】七天手撕分布式缓存之一

项目参考GitHub上的高分项目7days-golang,文章内不一定展示完整代码,文章的目的是分享自己在实现分布式缓存的过程中对具体代码实现的解释与见解,文章的编写的时间均是在项目实现之后,可放心参考,有些地方会加上自己对…

Java LeetCode篇-深入了解关于数组的经典解法

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 轮转数组 1.1 使用移位的方式 1.2 使用三次数组逆转法 2.0 消失的数字 2.1 使用相减法 2.2 使用异或的方式 3.0 合并两个有序数组 3.1 使用三指针方式 3.2 使用合…

Spring Cache(缓存框架)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

vue 中 js 金额数字转中文

参考:js工具函数之数字转为中文数字和大写金额_js封装工具类函数金额大写-CSDN博客 我使用的框架vol.core。 客户需求要将录入框的金额数字转换成中文在旁边显示,换了几种函数,最终确定如下函数 function changeToChineseMoney(Num) {//判断…

Android Termux SFTP如何实现远程文件传输

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP(SSH File Transfer Protocol)是一种基于SSH(Secure Shell)安全协议的文件传输协议。与FTP协议相比,SFTP使用了…

【24届校招】c++选手还有机会吗?如何选择更好的出路?

一、今年为什么c选手就业形势如此艰难? 去年c岗位的火热,不少c选手拿到高薪offer,今年转c的人群变多,内卷加剧,高学历大佬多如牛毛,很多比较好的c岗位多人投递,僧多肉少。 从行情来说&#xf…

Selenium-Unittest单元测试框架

1、Unittest介绍 为什么要学习单元测试框架 测试用例的组织与运行需要单元测试框架的参与,从而满足不同测试场景的需要,单元测试框架提供了丰富的比较方法:实际结果与预期结果的对比测试结果 单元测试框架提供了丰富的日志:给出测…

livox 半固体激光雷达 gazebo 仿真 | 安装与验证

livox 半固体激光雷达 gazebo 仿真 | 安装与验证 livox 半固体激光雷达 gazebo 仿真 | 安装与验证livox 介绍安装验证 livox 半固体激光雷达 gazebo 仿真 | 安装与验证 livox 介绍 览沃科技有限公司(Livox)成立于2016年。为了革新激光雷达行业&#xf…

MySQL特点和基本语句

MySQL MySQL是一种流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,现属于甲骨文公司(Oracle)旗下产品。MySQL是基于C语言开发的,它具有高性能、可扩展性、易用性等特点,并且支持大量的用户访问。 My…

使用 Kafka 和 Cassandra 构建实时异常检测实验

异常检测是一种跨行业方法,用于发现事件流中的异常情况 - 它适用于物联网传感器、金融欺诈检测、安全、威胁检测、数字广告欺诈和许多其他应用。此类系统检查流数据以检查是否存在异常或违规行为,并在检测到时发送警报以处理这些异常并确定它们是否确实代…

C语言重点编程题——11-20

目录 ★★★★★11.编一个程序,将磁盘中当前目录下名为“ccwl. txt"的文本文件复制在同一目录下,文k件名改为“ccw2. txt 12.编一个名为countc的函数,要求如下:(1)形式参数: array 存放字符串的字符型数组名(2)功能:统计array数组中大写字母的数目;(3)返回值:字符串中…

web:[NPUCTF2020]ReadlezPHP

题目 打开页面显示如下 没发现其他的线索,查看源代码 发现一个网址,访问这个页面查看 进行代码审计 这段代码是一个简单的 PHP 类,名为 HelloPhp。它有两个公共属性 $a 和 $b,并在构造函数中将它们分别初始化为字符串 "Y-m-…