Zephus 发表于 2022-6-29 16:34

Unity Shader入门精要笔记

P2:渲染管线

渲染流水线三阶段:应用阶段、几何阶段、光栅化阶段

应用阶段:1.输出渲染图元(点、线、三角面)
               2.准备好场景数据(摄像机位置、视椎体、包含的模型及光源)
               3.做粗粒度的剔除
               4.设置好每个模型的渲染状态(使用的材质(漫反射材质、高光材质等)、纹理、shader)
几何阶段:1.输出屏幕的顶点信息
               2.处理所有要绘制的几何相关的事务(决定要绘制的图元是什么、怎么绘制、在哪里绘制)
光栅化阶段:使用几何阶段的数据来阐述屏幕上的像素,并渲染出最终的图像
CPU与GPU之间的通信

1.把数据加载到显存中(从硬盘加载到内存,然后将网格和纹理数据加载到显卡的显存中)
2.设置渲染状态(定义场景的中网格是怎么渲染的)
3.调用DrawCall(CPU发起,GPU接收,仅指向图元列表数据【点、线、面】,不包含任何材质信息【材质信息在之前已经被加载的显存中了】)
OpenGL和DirectX

显卡驱动把DX和OpenGL的函数调用翻译成GPU的执行命令
应用程序通过调用DX和OpenGL的图形接口,将渲染所需的数据(如顶点、纹理、材质数据等)存储在显存指定的区域内,该过程也被称为DrawCall
HLSL、GLSL、CG区别

HLSL:DX的着色语言,微软的
GLSL:OpenGL的着色语言,跨平台
CG:英伟达的C for graphic,跨平台的
什么是DrawCall

CPU调用图形编程接口,以命令GPU渲染的操作
通过命令缓冲区并行运行
DrawCall多了影响帧率,可通过批处理减少DrawCall数量
什么是Shader

GPU流水线上一些可高度编程的阶段,由着色器编译出来的最终代码会在GPU上运行
有一些特地的着色器,如:顶点着色器、片元着色器
依靠着色器,可以控制流水线中的渲染细节,比如通过顶点着色器进行顶点变换和传递数据、通过片元着色器进行像素渲染
操作包括:设置适当的渲染状态、使用合适的混合函数、开启或关闭深度测试/深度写入
页: [1]
查看完整版本: Unity Shader入门精要笔记