Unity Shader学习-1.渲染流水线

本文详细介绍了Unity渲染流水线的三个阶段:应用阶段、几何阶段和光栅化阶段,探讨了CPU与GPU间的通信,包括数据加载、渲染状态设置和Draw Call调用。此外,还讲解了GPU流水线的不同阶段,如顶点着色器、几何着色器、片元着色器等,并解答了OpenGL、DirectX、HLSL、GLSL和CG等相关问题,以及Draw Call对性能的影响和优化策略。
摘要由CSDN通过智能技术生成

先了解一下什么是流水线:(下面是百度百科的定义)

流水线:流水线又称为装配线,一种工业上的生产方式,指每一个生产单位只专注处理某一个片段的工作,以提高工作效率及产量

一、什么是渲染流水线

1.概念

渲染流水线的概念与上面说到的流水线的概念也是一致的,其主要任务是输入一个三维场景,然后输出一个二维的图像。这个过程是由CPUGPU一起完成的。

2.渲染流水线的三个阶段

渲染流水线可以分为三个阶段:应用阶段几何阶段光栅化阶段

a.应用阶段(CPU处理)

这一阶段是由开发者主导的,在这一阶段中开发都有3个主要的任务:
- 首先,需要准备好场景数据(摄相机位置、视锥体、模型和光源等)
- 接着,还需要做粗粒度的剔除工作
- 最后,需要设置好每个模型的渲染状态(使用的材质、使用的纹理、使用的Shader等)

这一阶段最重要的输出是渲染所需的几何信息,即渲染图元,渲染图元可以是点、线、三角面等。

b.几何阶段(GPU处理)

几何阶段主要用于处理所有和我们绘制的几何相关的事情。几何阶段负责和每个渲染图元打交道,进行逐顶点逐多边形的操作。这个阶段可以进一步分成更小的流水线阶段。
几何阶段的一个重要任务就是把顶点坐标变换到屏幕空间中,再交给光栅器进行处理。
总结:输入的渲染图元->屏幕空间的二维顶点坐标、每个顶点对应深度、着色等信息

c.光栅化阶段(GPU处理)

将会使用上一个阶段传递的数据来产生屏幕上的像素,并渲染出最终的图像。主要任务是决定每个渲染图元中的哪些像素应该被绘制在屏幕上。

3.CPU与GPU之间的通信

渲染流水线的起点是CPU,即应用阶段。应用阶段可以分为下面3个阶段:

  • 1.把数据加载到显存中
  • 2.设置渲染状态
  • 3.调用Draw Call
1.数据加载到显存中
基本步骤就是纹理、网格等数据从硬盘加载到系统内存再加载到显存。数据加载到显存后系统内存中的数据就可以被移除了,但是对于一些数据来说CPU需要访问他们,例如用于碰撞检测用的网格数据,这些数据则会被保留。
2.设置渲染状态
渲染状态指的是场景中的网格是如何被渲染的,例如使用哪个Vertex Shader或者哪个Fragment Shader、光源属性、材质等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值