渲染管线学习总结

1.渲染管线的作用

渲染管线的核心功能是利用给定的虚拟相机,三维物体,光源等信息,来生成或者渲染一张二维图像

2.整体流程

一种粗略的划分方法是将渲染管线划分成四个阶段——应用阶段(Application),几何处理阶段(Geometry Processing),光栅化阶段(Rasterization )和像素处理阶段(Pixel Processing)

这里参考了RTR4中的划分方法,不同的书籍可能划分方法不同。

3.应用阶段

应用阶段通常是在cpu上完成的。主要分为以下几个部分。

3.1准备基本场景数据

准备场景物体数据,比如物体的变换数据(物体的位置,旋转,缩放等),物体的网格数据(顶点位置,uv,法线等等)

摄像机数据,摄像机的位置和朝向,远近截面,摄像机的模式(正交还是透视),FOV和视口比例(长宽比)

光源及阴影数据,比如场景中包含哪些光源,以及它们的类型(方向光,点光源,聚光灯)和参数(位置,朝向,角度等),是否需要阴影(光源可见范围内是否有可以投射阴影的物体),阴影参数(对应光源序号,阴影强度,级联参数,深度偏移,近平面偏移等),然后是逐光源绘制阴影贴图作为阴影数据供后面的阶段使用

其他全局数据,比如变换矩阵等等

3.2加速算法和粗粒度的剔除

可见光裁剪,比如点光源和聚光灯与视锥体的距离非常远,因为有光照的衰减就可以剔除掉

可见场景物体裁剪,对于与视锥体完全不相交的物体进行剔除(视锥剔除),也可以对被其他物体遮挡住的物体进行剔除(遮挡剔除),常见算法有八叉树,BVH包围盒等等

3.3渲染设置

绘制设置:使用着色器以及合批方式

绘制物体的顺序:相对摄像机的距离或者Render Queue等等

渲染目标:帧缓存(FrameBuffer)或者渲染到纹理上(RenderTexture),也可以输出到多个渲染目标然后再通过特定的方式合并到一起

渲染模式:前向渲染或者延迟渲染

3.4调用DrawCall输出渲染图元到显存

顶点数据:位置,颜色,法线,纹理uv坐标,其他顶点数据
其他数据: MVP变换矩阵,纹理贴图,其他数据

4.几何处理阶段

4.1顶点着色器

视图变换:通过MVP矩阵进行空间变换,最后变换到裁剪空间

顶点着色:根据顶点信息进行着色计算

4.2可选着色器

曲面细分着色器:根据一定的规则/算法生成更多顶点,操作对象是顶点

几何着色器:根据给定的图元生成更多的图元,操作对象是图元

4.3裁剪

这一步是硬件上的固定操作,但是我们可以自定义一个裁剪操作来对这一步进行配置。

如果一个顶点的坐标超过了-W~W的范围,那么这个点就应该被裁剪掉。

如果一个图元的部分顶点被裁剪,那么还需要补全额外的顶点来补全这个图元。

4.4投影

这一步一般由硬件自动完成.

分为正交投影和透视投影,主要进行的操作是透视除法,将xyz分别除以W,透视除法之后就转换到标准设备坐标系(NDC,Normalized Device Coordinates)。Opengl中NDC的范围是(-1,-1,-1)~(1,1,1)。DX中(-1,-1,0)~(-1,-1,1)。

正交投影的过程中W始终为1,所以进行透视除法以后坐标都不会发生变化,因此并不会产生近大远小的效果。

透视投影的W是近处小远处大,进行透视除法以后就会有近大远小的效果。

4.5屏幕映射

将标准设备坐标系的坐标转换到屏幕坐标系中,屏幕坐标系是一个二维的坐标系,屏幕映射阶段不会对Z坐标进行任何变换,屏幕坐标系和z坐标一起构成了窗口坐标系,另外OpenGl的屏幕坐标系的原点一般在左下角,而DX的原点在左上角。

5.光栅化阶段

找到位于待渲染图元中的所有像素值,这个过程被叫做光栅化。

5.1三角形设置(图元装配)

’将顶点连接成三角形,得到三角形网格数据。几何处理阶段产生的各种着色数据的插值也是在这个阶段完成的,比如顶点颜色,位置,uv等等。

5.2三角形遍历

检查每个像素是否被三角网格覆盖,如果被覆盖的话就会生成一个片元。这个阶段会对三角形三个顶点上的属性进行插值,来获得每个片元的属性。包括片元的深度,以及几何处理阶段输出的相关着色数据。注意片元并不等同与像素,因为一个像素可能被多个三角形的不同片元所覆盖,经过像素处理阶段以后才会决定这些片元是否保留以及保留下来的如何进行混合。

6.像素处理阶段

光栅化阶段以后,就得到了所有被三角形覆盖的片元的系列。对序列中的每个片元进行逐个操作的过程就是逐片元操作。

6.1片元(像素)着色器

片元着色器的输入是光栅化阶段对顶点信息进行插值得到的结果,输出是一个或多个颜色值。(比如可以渲染到多个目标)。

6.2合并(逐片元操作)

这个阶段是高度可配置但不可编程的。

主要进行两个任务:1.进行各种测试决定片元的可见性

                                2.对于通过测试的片元,将片元的颜色与颜色缓冲区的颜色进行合并(混合)

一般来说测试的顺序是 透明度测试,模板测试,深度测试。

通过了测试的片元可以进行颜色混合,如果没有开启混合默认会覆盖掉颜色缓冲区的颜色。

7.参考:

TA100-renderpipeline-v2.1_哔哩哔哩_bilibili

Shader入门精要

RTR4

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

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

相关文章

MIMO(多天线)通信的四种译码算法

目录 一. 介绍 二. 极大似然译码 三. 破零译码算法 四. 最小均方误差算法 五. 球形译码 一. 介绍 发射天线数记为Mt,接收天线数记为Mr。由此发射信号x为向量: 接受信号y为向量: 信道H为矩阵: 利用n代表噪声向量,…

揭秘:从低代码到APP工厂,从休闲T恤到蓝色工装

2024年3月29日,感恩伯乐,感恩同行——2024年得帆十周年庆典暨用户大会在上海佘山世茂洲际酒店圆满举办。作为业内规模最大的低代码主题峰会,本次峰会汇聚了来自全国62个城市,500参会嘉宾,59位业界专家带来了2场主题发布…

亿发:信息化管理软件是什么?企业智慧信息化解决方案的重要性

在当今数字化时代,企业信息化管理已成为提升运营效率和促进发展的关键。信息化管理软件是企业数字化转型的重要工具,但单一软件往往难以满足企业多方面的高质量发展需求。因此,企业整体信息化解决方案的重要性愈发凸显。 什么是信息化管理软件…

springboot WebFilter+@Component urlPatterns 全部拦截

问题描述 WebFilter(filterName “ssoFilter”,urlPatterns “/*”)配置 Order中的value越小,优先级越高。 解决方法一: 在springboot启动类上添加 ServletComponentScan(basePackages “com.package.path”) 解决方法二: 手动配置bean(…

XiaodiSec day025 Learn Note 小迪安全学习笔记

XiaodiSec day025 Learn Note 小迪安全学习笔记 记录得比较凌乱,不尽详细 day25 sql 注入 知识点 mysql 注入 mssql 注入 postgreSQL 注入 详细点: access 无高权限注入点,智能暴力猜解,不像 mysql 中的 schema mysql,postgr…

新质生产力应用场景深度分析,再塑行业格局

新质生产力应用场景深度分析 技术突破、要素创新配置和产业深度转型升级,催生“新质生产力”定义:新质生产力是由技术革命性突破、生产要素创新性配置、产业深度转型升级而催生的当代先进生产力,它以劳动者、劳动资料、劳动对象及 其优化组合…

安卓(Android)安装 Microsoft Authenticator 搞定 2FA 验证

现在越来越多网站强制 2FA 验证了,Microsoft Authenticator 是一个兼容性很强的 2FA 应用 app,如果能够安装它,可以解决绝大部分的 2FA 验证问题。 但是,在国内如果你用苹果手机还好,如果是用安卓(Android…

【御控物联网平台】物联网平台常见通讯协议

随着物联网(InternetofThings,IoT)的快速发展,越来越多的设备和传感器连接到网络,使得数据的传递和交互变得更加智能化和高效化。在实现这种智能化和高效化的数据交互,过程中,各种不同的通信协议…

PROSAIL模型前向模拟与植被参数遥感提取代码实现

原文链接:PROSAIL模型前向模拟与植被参数遥感提取代码实现https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247602140&idx7&sn7c4ca9239865d536ba81ba4c26a34031&chksmfa820e3bcdf5872d540c0dfe8c533c8696c8b4658427aab254f246a739f96b36bc37…

使用代理绕过网站的反爬机制

最近在尝试收集一些网络指标的数据, 所以, 我又开始做爬虫了。 :) 我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误…

java 学习一

jdk下载地址 配置环境变量

【数学归纳法 组合数学】容斥原理

问题提出 有n个条件,要求不重复统计满足一到n个条件的所有可能数。 容斥原理 要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所有两个集合相交的部分,再加回所有三个集合相交的部分,再减…

电子签名在人力资源中的应用:让HR工作更高效

人力资源(HR)行业是电子签领域的重要应用之一,它可以在以下场景中使用电子签: 1. 在招聘流程中,HR部门可以利用电子签名工具来完成与招聘候选人之间的任何文件签署操作。例如,维护人才库数据库、简历、面试…

HTML不常用的文本标签

1.标签如下&#xff1a; 代码及相关内容 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>不常用的文…

web server apache tomcat11-11-Jasper 2 JSP Engine

前言 整理这个官方翻译的系列&#xff0c;原因是网上大部分的 tomcat 版本比较旧&#xff0c;此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎&#xff0c;轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…

每日一练 | 华为认证真题练习Day219

1、通常用于控制数据流如何出AS的BGP属性是&#xff1a; A. AS-Path B. Nexthop C. Local-Preference D. MED 2、一种路由协议在引入其他路由协议时&#xff0c;为了只引入一部分满足条件的路由信息&#xff0c;和对所有引入的路由信息的某些属性进行设置&#xff0c;那么只…

中医药性笔记

目录 当归黄芪党参白术甘草茯苓半夏陈皮升麻柴胡 当归 补血。 当归&#xff0c;腾讯医典 黄芪 土金之药。 补中气的同时补肺气。益卫固表、利水消肿、 腾讯医典黄芪 党参 土金之药。健脾益肺&#xff0c;生津养血。 党参补气之力弱于人参、用于脾肺气虚的轻症。 党…

[2024更新]如何从Android恢复已删除的相机照片?

相信大家都经历过Android手机误删相机图片的经历。您是否正在寻找一种可行的方法来挽救这些丢失的照片&#xff1f;如果这是你迫切想解决的问题&#xff0c;那么这篇文章绝对可以帮助你。然而&#xff0c;与其考虑如何从Android恢复已删除的相机照片&#xff0c;我们更愿意建议…

ETL简介以及使用ETL(Kettle)进行数据接入的具体例子

目录 ETL介绍 ETL简介 ETL包含的三部分 ETL基本概念 ETL资源库 ETL变量 业务表梳理以及接入规划 数据接入流程 业务表梳理 ETL任务规范 接入规划 数据接入中的方便工具 具体例子 导出生产表信息 1、ORACLE 2、MYSQL ETL数据增量抽取任务开发 1、ORACLE通用流程…

Linux 网络编程

引入: 进程间的通信 - 特点: 依赖 Linux内核. --> 缺陷: 无法多机通信 多机通信 -- 比如 Android IOS Linux之间的通信组合 网络编程: 1.地址: a.IP地址 b.端口号 2.数据: 需要协议传输协议(数据格式)&#xff08;TCP UDP HTTP&#xff09; &#xff0c;其他协议&am…