【《Unity Shader入门精要》 提炼总结】(二)第二章·渲染流水线详细介绍&CPU与GPU之间的通讯

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iceSony/article/details/84110149

本文由@唐三十胖子出品,转载请注明出处。  
文章链接:https://blog.csdn.net/iceSony/article/details/84110149

这篇文章将总结和提炼《Unity Shader入门精要》的第二章“渲染流水线”的内容。

通过这篇文章,你可以知道

1)渲染流水线的真实实现

2)CPU与GPU流水线

3)相关Shader开发语言的介绍

一.渲染流水线的真实实现

传送门☞        https://blog.csdn.net/iceSony/article/details/84106401

这张图概述了渲染流水线的过程

这一篇我们详细展开

第一眼看上去是不是头大,但是接下来的介绍会让你发现和上一章比多了几个shader介绍而已

关键的步骤我们都已经知道了

二.CPU流水线(应用阶段)

顶点数据的处理,细分

1.数据加载到显存中

(如果有了解,显卡包含显存与显示芯片,显示芯片就是GPU,这样GPU进行绘制的时候会很快地读取,如果显存过低,就会占用内存来代替)

2.设置渲染状态(模型上的网格如何被渲染,用哪个shader与贴图等)

3.调用Drawcall概念参考教程☞        传送门

三.GPU流水线(几何阶段)

除去顶点数据是CPU提供的,其他的都是GPU的数据处理

接下来绿色表示可以用代码实现

蓝色表示可以配置,但是不能修改代码

红色表示自发进行无法配置与修改

顶点着色器vertex shader,顶点坐标变换,顶点颜色变换等

曲面细分着色器tessellation shader:细分图元

几何着色器geometry shader:逐图元上色,或者创建图元

裁剪:你可能会想到我们U3D中的遮挡剔除,事实上我们这里说的是更进一步的,比如

一个房子后面十个人,你只能看见房子的正面,后面的人你是看不见的

通过遮挡剔除可以将后面的模型清除掉,这样GPU渲染压力就要变小

 

而这里的GPU裁剪指的是看不见的顶点删除,比如房屋的背面就可以裁剪掉,只能配置

 

屏幕映射:图元坐标转变为屏幕坐标,不可修改

 

三角形的设置与遍历不可以修改的,具体操作是有了顶点,插值进行图像绘画

片元着色器fragment shader:可编程逐片元着色,什么是片元,刚刚不是有几何的着色了吗

首先片元是包含位置与向量的像素点,你之前给模型上色是什么颜色就是什么颜色,就好像你看远处的人就是一个黑点,事实上他并不是= =

逐片元操作,看你着色器怎么写的了,当然了这个也可以配置

四.最后再介绍三个名词HLSL GLSL CG

其实这三个对应三家的shader语言

大家都想做shader开发,谁也不服谁

 

HLSL DirectX适用于微软自己机器

GLSL OPENGL依赖显卡,不同厂家的可能出现渲染不同效果

CG     NVIDIA  跨平台,语法结果和HLSL类似

 

至于接下来我们要学的Unity Shader是一套给定了框架的shader开发结构

你可以认为是javascript和jquery的关系

你可以使用Unity定好的框架开发,同时它也支持你写CG/HLSL | GLSL的语言。

 

下一章见:)

猜你喜欢

转载自blog.csdn.net/iceSony/article/details/84110149
今日推荐