【《Unity Shader入门精要》 提炼总结】(二)第二章·渲染流水线详细介绍&CPU与GPU之间的通讯
本文由@唐三十胖子出品,转载请注明出处。
文章链接:https://blog.****.net/iceSony/article/details/84110149
这篇文章将总结和提炼《Unity Shader入门精要》的第二章“渲染流水线”的内容。
通过这篇文章,你可以知道
1)渲染流水线的真实实现
2)CPU与GPU流水线
3)相关Shader开发语言的介绍
一.渲染流水线的真实实现
传送门☞ https://blog.****.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的语言。
下一章见:)