好多粉丝私信我说要学习Shader,那我就给大家出一篇Shader的入门教程!
Unity中的渲染管线和图形学中的渲染管线有些不同
一.什么是渲染管线
渲染管线中的数据指的是什么?梦凡尘~
渲染管线的概念是: 将数据分阶段的变为屏幕图像的过程 这里的数据指的是: 1.顶点数据:模型的顶点坐标、法线向量、纹理坐标等等 2.纹理数据:纹理贴图等 3.光照数据:光照参数、光源信息等 等等 Unity场景上相关的数据
二.三个阶段
1.应用阶段
渲染管线的应用阶段中大部分的内容都和渲染无关(比如:游戏逻辑处理、动画更新、物理模拟、场景管理等等) 当应用阶段完成后,后面的几何阶段以及光栅化阶段将开始处理和图形渲染相关的数据和操作。 那么应用阶段为什么会归纳到渲染管线中呢? 那是因为应用阶段为渲染管线的后续提供了最重要的内容——数据 应用阶段主导者是CPU,在这一阶段,我们将渲染需要用到的数据传递给GPU用于后续的两个阶段的处理梦凡尘~
应用阶段CPU进行了什么操作:1.把不可见的物体数据剔除 2.准备好模型相关数据(顶点、法线、切线、贴图、着色器等等) 3.将数据加载到显存中 4.设置渲染状态(设置网格需要使用那个着色器、材质、光源属性等等) 5.调用DrawCall(CPU通知GPU使用相关的数据和渲染状态进行渲染)梦凡尘~
2.几何阶段
在几何阶段,GPU给我们开放了一些权限,就是顶点着色器的修改,所以我们在几何阶段主要看顶点着色器,其余步骤大家稍做了解就好!梦凡尘~
顶点着色器:
它处理来自应用阶段由CPU传递过来的顶点相关数据,输入进来的每一个顶点都会调用一次顶点着色器中的逻辑 顶点着色器需要完成的工作主要有: 1.坐标变换 —— 顶点变换、法线变换、纹理坐标变换等 2.顶点属性处理—— 对顶点的其他属性进行处理,比如顶点颜色、透明度、切线向量等,可以用于实现顶点动画、着色、光照等效果 3.顶点插值 —— 计算顶点属性的插值值 等等
总结:梦凡尘~
在渲染管线(流水线)的几何阶段,最主要做的工作就是 对顶点进行处理,并进行坐标转换,裁剪画面外的图元 最主要完成的就是将模型的顶点从其 本地坐标 转换到最终的 屏幕坐标中
3.光栅化阶段
1. 三角形设置
这个小阶段,GPU主要做的事情就是计算三角形网格的表示数据(计算范围)
2.三角形遍历
这个小阶段 GPU主要做的事情就是根据三角形网格信息得到被它们覆盖的片元序列
3.片元着色器
它主要完成对 三角形遍历输入的片元序列中的 每个片元(像素)的着色计算和属性处理 片元着色器需要完成的工作主要有: 1.光照计算 —— 计算片元的光照效果 2.纹理映射 —— 根据片元在纹理中的位置,对纹理进行采样,将纹理颜色映射到片元上,实现表面贴图效果 3.材质属性处理 —— 根据材质的属性,比如颜色、透明度、反射率等,计算片元的最终颜色和透明度 4.阴影计算 —— 根据光源等信息,计算片元是否处于阴影中,影响其最终颜色 等等梦凡尘~
4.逐片元操作(输出合并阶段)
对 片元着色器 输出数据(最终颜色、法线、纹理坐标、深度等)进行各种处理和计算梦凡尘~
5.三个测试阶段
透明度测试--》模板测试--》深度测试
三,总结
渲染管线(流水线)本质:数据 处理为 屏幕图像