GPU渲染流水线的简单概括

GPU流水线

主要分为两个阶段:几何阶段和光栅化阶段

几何阶段

顶点着色器 ——> 曲面细分着色器(可选)----->几何着色器(可选)----->裁剪——>屏幕映射

 顶点着色器

流水线的第一个阶段,输入来自于CPU,处理的基本单位为单个顶点,输入的每个顶点都会调用一次顶点着色器。

主要工作是:坐标变换(比如改变顶点位置模拟水面、布料等)和逐顶点光照,并输出后续阶段需要的数据(常见的输出路径是经光栅化后交给片元着色器处理)。

曲面着色器

一个可选的着色器,用于细分图元。

几何着色器

用于执行逐图元操作,或者用于产生更多的图元

裁剪

将不在摄像机视野的顶点裁剪掉,并剔除某些三角图元的面片(主要处理一部分在视野内另一部分在视野外的图元。

屏幕映射

将每个图元的x和y坐标转换到屏幕坐标系(二维坐标系,与屏幕分辨率有很大关系)

光栅化阶段

三角形设置 ——> 三角形遍历 -----> 片元着色器(可选)——>逐片元操作——>屏幕图像

 三角形设置

该阶段计算光栅化一个三角形网格需要的信息。具体来说,上个阶段输出过来的都是三角网格的顶点,即三角网格每条边的两个端点。但如果要得到整个三角网格对像素的覆盖情况,我们就必须计算每条边上的像素坐标。为了能够计算边界像素的坐标信息,我们就需要得到三角形边界的表示方法。这就是一个计算三角网格表示数据的过程。

 三角形遍历

该阶段会检查每个像素是否被一个三角网格覆盖,如果被覆盖就会生成一个片元。该阶段会根据上一阶段的计算结果判断一个三角网格覆盖了哪些像素,并用三角网格的三个顶点的信息对覆盖区域的像素进行插值。这一阶段会输出一个片元序列。

   片元着色器

顾名思义,给每个像素着色。该阶段可由开发者编程实现一些渲染效果,并完成很多重要的渲染技术,如纹理采样等。片元着色器仅能影响单个片元。

逐片元操作

在DriectX中又称为输出合并阶段。

主要任务:1)决定每个片元的可见性。如进行深度测试、模板测试。

2)如果一个片元通过了所有的测试,就需要把这个片元的颜色值和已经存储在颜色缓冲区中的颜色进行合并,或者说混合。

过程: 片元——>模板测试——>深度测试——>混合——>颜色缓冲区。

原文地址:https://www.cnblogs.com/0kk470/p/8182560.html

时间: 2024-11-10 03:09:08

GPU渲染流水线的简单概括的相关文章

第一章 渲染流水线

1 综述 好吧,既然是从最基础开始说起,那我们就有必要了解什么是Shader,即着色器.与之关系非常紧密的就是渲染流水线.可以说如果不了解渲染流水线的工作流程,就无法说自己真正的了解Shader. 1.1 什么是流水线 要想学会怎么使用Shader,我们首先要了解Shader是怎么工作的.实际上,Shader仅仅是渲染流水线的一个环节,想要让我们的Shader发挥出它的作用,我们就需要知道它在流水中扮演了怎样的角色. 理想情况下,如果把一个非流水线系统分成n个流水线阶段,并且每个阶段耗费时间相同

一篇文章搞懂到底什么是渲染流水线

本文实际上是<Unity Shader入门精要>一书的读书笔记,书中关于渲染流水线的讲解清楚易懂,非常适合作为Shader学习的入门书籍.自知好记性不如烂笔头,遂将相关内容再结合自己的一些理解写作这篇博客记录下来. 我们将图像绘制的流程称为渲染流水线,是由CPU和GPU协作完成的.一般一个渲染流程可以分成3个概念阶段,分别是:应用阶段(Application Stage),几何阶段(Geometry Stage),光栅化阶段(Rasterizer Stage). 应用阶段 应用阶段是在CPU中

Unity3D Shader之路 写Shader前必须要知道的事情 渲染流水线的概括

版本:unity 5.4.1  语言:Unity Shader 总起: 最近花了一个月的时间把<Unity Shader 入门精要>看完了,没怎么写博文,因为写得太好了,看得有点废寝忘食了,再次强烈推荐. 今天把写Shader前必须要知道的渲染流水线给概括一下,然后简单结合顶点\片元着色器Shader,说说各个代码在流水线的位置,以及职责功能. 渲染流水线: 在写Unity脚本的时候,不管是C#也好还是js也好,都是在跟CPU打交道,做算术运算.调用类成员.控制程序流程.而写Shader不同,

移动端 像素渲染流水线与GPU hack

什么是 像素渲染流水线 web页面你所写的页面代码是如何被转换成屏幕上显示的像素的.这个转换过程可以归纳为这样的一个流水线,包含五个关键步骤: 1.JavaScript:一般来说,我们会使用JavaScript来实现一些视觉变化的效果.比如用jQuery的animate函数做一个动画.对一个数据集进行排序.或者往页面里添加一些DOM元素等. 当然,除了JavaScript,还有其他一些常用方法也可以实现视觉变化效果,比如:CSS Animations, Transitions和Web Anima

[GEiv]第七章:着色器 高效GPU渲染方案

第七章:着色器 高效GPU渲染方案 本章介绍着色器的基本知识以及Geiv下对其提供的支持接口.并以"渐变高斯模糊"为线索进行实例的演示解说. [背景信息] [计算机中央处理器的局限性] 在大学的"数字图像处理"课程中,老师解说了高斯模糊的基本算法.并使用C#进行了基本实现.高斯模糊.简单地说,就是使用高斯权重模板对图像的每个像素进行再计算.填充,以达到模糊的效果. 在课程中.对于给定的模板与模糊度系数,对一副800X600的图像进行模糊处理.须要计算48万个像素点,

[GEiv]第七章:着色器 高效的GPU渲染方案

第七章:着色器 高效的GPU渲染方案 本章介绍着色器的基本知识以及Geiv下对其提供的支持接口,并以"渐变高斯模糊"为线索进行实例的演示讲解. [背景信息] [计算机中央处理器的局限性] 在大学的"数字图像处理"课程中,老师讲解了高斯模糊的基本算法,并使用C#进行了基本实现.高斯模糊,简单地说,就是使用高斯权重模板对图像的每一个像素进行再计算.填充,以达到模糊的效果. 在课程中,对于给定的模板与模糊度系数,对一副800X600的图像进行模糊处理,需要计算48万个像素

渲染流水线

渲染流水线最终目的:生成或者渲染一张二维纹理,即我们在电脑屏幕上看到的所有效果.它的输入是一个虚拟摄像机.一些光源.一些shader以及纹理等. 渲染流程分为三个阶段:应用阶段,几何阶段,光栅化阶段. 应用阶段: 通常由CPU负责实现.是由开发者主导的. 开发者有3个主要任务: 准好场景数据.例如摄像机的位置.视椎体.场景里的模型.光源等. 做一个粗粒度剔除工作.把那些不可见的物体剔除出去,这样就不需要再移交给几何阶段. 设置好每个模型的渲染状态.包括但不限于使用的材质(漫反射颜色.高光反射颜色

iOS开发——适配篇&amp;App适配简单概括

App适配简单概括 1:适配:适应.兼容各种不同的情况 系统适配 针对不同版本的操作系统进行适配 屏幕适配 针对不同大小的屏幕尺寸进行适配 在用户眼中 屏幕是由无数个像素组成的 像素越多,屏幕越清晰 在开发者眼中 屏幕是由无数个点组成的,点又是由像素组成的 像素越多,屏幕越清晰 iOS设置尺寸图 一:Autoresizing:基本的控件布局----掌握 在Autolayout之前,有Autoresizing可以作屏幕适配,但局限性较大,有些任务根本无法完成 相比之下,Autolayout的功能比

人生岂能用输和赢简单概括

我的女儿先是在本地的一所公立小学读书,之后在北京的国际学校上中学.有一次,我在餐桌上问她两所学校的教育方式有什么不同,她想了想后回答说:"在本地的学校,老师总是让我们别犯错误:在国际学校,老师鼓励我们不要怕犯错误." 这两种教育方式的差异给孩子造成的心理影响显而易见.2015年10月,在电视真人秀节目<最强大脑>中出现了这样的情景:一个12岁的中国男孩与一个同龄的意大利男孩展开比赛,看谁能用最短的时间记住102位新郎.新娘的排列顺序,然后用人偶复位.按照比赛规则,由意大利男