☀️博客主页:CSDN博客主页
💨本文由 萌萌的小木屋 原创,首发于 CSDN💢
🔥学习专栏推荐:面试汇总
❗️游戏框架专栏推荐:游戏实用框架专栏
⛅️点赞 👍 收藏 ⭐留言 📝,如有错误请指正
📆 未来很长,值得我们全力奔赴更美好的生活✨
------------------❤️分割线❤️-------------------------
Unity 小科普
老规矩,先介绍一下Unity的科普小知识:
Unity 是行业领先的实时3D开发平台。
包括游戏开发,电影,AR/VR,虚拟现实在内的所有创作者,可以将梦想照进现实。
Unity提供了一套完整完善的软件解决方案,可用于创作,运营和模拟任何2D和3D的内容,进本全平台支持。
实际上Unity就是一个游戏引擎,大名鼎鼎的原神就是用它制作的。
我是小狼君
- @[TOC](我是小狼君)
- 什么是流水线
- 好处
- 什么是渲染流水线
- 总览三阶段
- 应用阶段(CPU)
- 几何阶段(GPU上)
- 光栅化阶段(GPU上)
- 细化三阶段
- 应用阶段
- 把数据加载到显存中
- 设置渲染状态
- 调用Draw Call
- 几何阶段
- 顶点着色器
- 曲面细分着色器
- 几何着色器
- 裁剪
- 屏幕映射
- 光栅化阶段
- 主要两个目标
- 三角形设置和三角形遍历
- 片元着色器
- 逐片元操作
我是小狼君
- @[TOC](我是小狼君)
- 什么是流水线
- 好处
- 什么是渲染流水线
- 总览三阶段
- 应用阶段(CPU)
- 几何阶段(GPU上)
- 光栅化阶段(GPU上)
- 细化三阶段
- 应用阶段
- 把数据加载到显存中
- 设置渲染状态
- 调用Draw Call
- 几何阶段
- 顶点着色器
- 曲面细分着色器
- 几何着色器
- 裁剪
- 屏幕映射
- 光栅化阶段
- 主要两个目标
- 三角形设置和三角形遍历
- 片元着色器
- 逐片元操作
什么是流水线
每个步骤专人完成,工序1完成后交付工序2,工序1不停,继续制作,互相之间不干预。
好处
可以提高单位时间的生产量
什么是渲染流水线
- 可以直接套用流水线概念,同样使用计算机的图像渲染。
- 渲染流程分为3个阶段:应用阶段,几何阶段,光栅化阶段
总览三阶段
应用阶段(CPU)
- 首先,准备好场景数据,如摄像机位置,视锥体,场景中模型
- 其次,为了提高渲染性能,需要做一些粗粒度剔除,把不可见物体剔除
- 最后,设置好每个模型的渲染状态,包括但不限于使用的材质,纹理,shader等
- 最重要的就是输出渲染所需要的几何信息,即渲染图元。
几何阶段(GPU上)
- 处理所有和我们要绘制的几何相关的事情,比如绘制的图元,怎么绘制
- 重要任务就是把顶点坐标变换到屏幕空间
- 这一阶段将会输出屏幕的二维顶点坐标,顶点的深度值,着色相关
光栅化阶段(GPU上)
- 使用上个阶段传递的数据产生屏幕上的像素,并渲染最终的图像
- 对逐顶点数据进行插值,然后再进行逐像素处理
细化三阶段
应用阶段
把数据加载到显存中
所有数据加载到系统内存,然后再加载到显存中,因为大多数显卡没有对RAM(系统内存)直接访问的权力,而且显卡对于显存的访问速度更快
设置渲染状态
这些状态定义了场景中的网格是怎样被渲染的,如何使用哪个顶点,片元着色器,光源属性,材质等
调用Draw Call
是一个命令,发起方是CPU,接收方是GPU,这个命令仅仅会指向一个需要被渲染的图元列表,不会包含任何材质信息,定了一个Draw Call,GPU会根据渲染状态和所有输入的顶点数据来计算。
几何阶段
顶点着色器
完全可编程,通常用于实现顶点的空间变换,顶点着色功能
曲面细分着色器
可选着色器,用于细分图元
几何着色器
可选着色器,执行逐图元的着色操作
裁剪
将不在摄像机视野内的顶点裁剪掉,并剔除某些三角图元的面片,该阶段可配置
屏幕映射
不可配置和编程,负责把每个图元的坐标转换到屏幕坐标系中
光栅化阶段
主要两个目标
计算每个图元覆盖了哪些像素,为这些像素计算它们的颜色
三角形设置和三角形遍历
固定函数阶段
片元着色器
完全可编程,实现逐片元操作
逐片元操作
修改颜色,深度缓冲,进行混合,不可编程,很高的可配置性