概述:
Unity里面的渲染管线与计算机图形学里面定义的渲染管线差别无几,不过unity提供了一个高度可配置可扩展的框架
渲染管线是将数据分阶段的变为屏幕图像的过程。可以理解为“渲染流水线”。
数据包括顶点数据、纹理数据、光照数据、摄像机设置等等。
渲染管线分为应用阶段、几何阶段和光栅化阶段,每个阶段对数据进行处理,最终生成屏幕图像。
unity目前支持的渲染管线主要有三种:
内置渲染管线(Built-in Render Pipeline):这是Unity长期以来使用的传统渲染管线,易于使用,适合大多数通用场景。对于初学者或对图形要求不是特别高的项目来说是个不错的选择。在处理复杂的光照和材质时可能会显得不足,性能优化空间相对较小。
通用渲染管线(Universal Render Pipeline, URP):以前称为轻量级渲染管线(Lightweight Render Pipeline),URP旨在提供一个平衡性能与图像质量的解决方案。适用于移动设备和不需要最高端图形的平台。同时提供了更现代的渲染特性,如基于物理的光照模型、屏幕空间反射等。支持广泛的平台,从移动设备到高端PC和游戏主机。
高清渲染管线(High Definition Render Pipeline, HDRP):针对需要高端视觉效果的项目设计,比如3A游戏、电影级应用等。提供了非常高质量的图形渲染能力,包括高级光照、阴影、反射和其他特效,能够实现逼真的视觉效果。主要面向高性能硬件,因此在中低端设备上的兼容性不如其他两种管线。
其它渲染管线:
自定义渲染管线(Scriptable Render Pipeline, SRP):允许开发者根据需求创建自定义渲染管线,技术门槛比较高。
2D渲染管线:通常与URP兼容,即2DURP,也是现阶段项目主要使用的渲染管线,提供2D光照和2D着色器。
Unity更换渲染管线材质:
更换管线之后,材质也要改变,注意到很多初学者不知道如何更换渲染材质导致物体出现诡异的紫色(绝对没有指谁嗯嗯),下面是更换材质的地方:
window->Rendering->RenderPipelineConvert
一定注意如果是2D项目的话,是URP2D啊,不要换错了!!!!!(本人曾因为2D误换了3D换不回来只好迁移项目o(╥﹏╥)o)
渲染流程:
请看图:

上面这张图只是大概的渲染管线流程,实际上的渲染管线流程会更加复杂
重要名词说明:
DrawCall:
其实就是CPU通知GPU进行渲染的命令,但是如果DrawCall的命令过多会造成CPU过载影响性能
顶点着色器(没错就是ShaderGraph里面的vertex):
处理坐标变换,包括顶点变换、法线变换、纹理坐标变换等
也对顶点的其他属性进行处理,比如顶点颜色、透明度、切线向量等
片元着色器(是的就是Fragment):
片元简单理解就是:像素点+光照、材质等数据
1.计算片元的光照效果
2.纹理映射根据片元在纹理中的位置,对纹理进行采样,将纹理颜色映射到片元上,实现表面贴图效果
3.材质属性处理根据材质的属性,比如颜色、透明度、反射率等,计算片元的最终颜色和透明度
4.阴影计算 -根据光源等信息,计算片元是否处于阴影中,影响其最终颜色
优化
减少DrawCall:使用批处理技术,比方说将静态物体合并成一张网格,合并Sprite图集,光照贴图应该也算
减少实时光照计算:光照是非常费性能的,可以使用烘焙,光照贴图等技术,有兴趣的话可以去看看虚幻五的全局动态光照Lumen( 【老奇】阴差阳错 撼动世界的游戏引擎_哔哩哔哩_bilibili )
设置适当的摄像机场景深度:超过该深度的物体不会被渲染
参考链接:
【唐老狮】Unity Shader开发入门_哔哩哔哩_bilibili
【教程】技术美术入门:渲染管线概述_哔哩哔哩_bilibili 概述:
Unity里面的渲染管线与计算机图形学里面定义的渲染管线差别无几,不过unity提供了一个高度可配置可扩展的框架
渲染管线是将数据分阶段的变为屏幕图像的过程。可以理解为“渲染流水线”。
数据包括顶点数据、纹理数据、光照数据、摄像机设置等等。
渲染管线分为应用阶段、几何阶段和光栅化阶段,每个阶段对数据进行处理,最终生成屏幕图像。
unity目前支持的渲染管线主要有三种:
内置渲染管线(Built-in Render Pipeline):这是Unity长期以来使用的传统渲染管线,易于使用,适合大多数通用场景。对于初学者或对图形要求不是特别高的项目来说是个不错的选择。在处理复杂的光照和材质时可能会显得不足,性能优化空间相对较小。
通用渲染管线(Universal Render Pipeline, URP):以前称为轻量级渲染管线(Lightweight Render Pipeline),URP旨在提供一个平衡性能与图像质量的解决方案。适用于移动设备和不需要最高端图形的平台。同时提供了更现代的渲染特性,如基于物理的光照模型、屏幕空间反射等。支持广泛的平台,从移动设备到高端PC和游戏主机。
高清渲染管线(High Definition Render Pipeline, HDRP):针对需要高端视觉效果的项目设计,比如3A游戏、电影级应用等。提供了非常高质量的图形渲染能力,包括高级光照、阴影、反射和其他特效,能够实现逼真的视觉效果。主要面向高性能硬件,因此在中低端设备上的兼容性不如其他两种管线。
其它渲染管线:
自定义渲染管线(Scriptable Render Pipeline, SRP):允许开发者根据需求创建自定义渲染管线,技术门槛比较高。
2D渲染管线:通常与URP兼容,即2DURP,也是现阶段项目主要使用的渲染管线,提供2D光照和2D着色器。
Unity更换渲染管线材质:
更换管线之后,材质也要改变,注意到很多初学者不知道如何更换渲染材质导致物体出现诡异的紫色(绝对没有指谁嗯嗯),下面是更换材质的地方:
window->Rendering->RenderPipelineConvert
一定注意如果是2D项目的话,是URP2D啊,不要换错了!!!!!(本人曾因为2D误换了3D换不回来只好迁移项目o(╥﹏╥)o)
渲染流程:
请看图:
暂时无法在飞书文档外展示此内容
上面这张图只是大概的渲染管线流程,实际上的渲染管线流程会更加复杂
重要名词说明:
DrawCall:
其实就是CPU通知GPU进行渲染的命令,但是如果DrawCall的命令过多会造成CPU过载影响性能
顶点着色器(没错就是ShaderGraph里面的vertex):
处理坐标变换,包括顶点变换、法线变换、纹理坐标变换等
也对顶点的其他属性进行处理,比如顶点颜色、透明度、切线向量等
片元着色器(是的就是Fragment):
片元简单理解就是:像素点+光照、材质等数据
1.计算片元的光照效果
2.纹理映射根据片元在纹理中的位置,对纹理进行采样,将纹理颜色映射到片元上,实现表面贴图效果
3.材质属性处理根据材质的属性,比如颜色、透明度、反射率等,计算片元的最终颜色和透明度
4.阴影计算 -根据光源等信息,计算片元是否处于阴影中,影响其最终颜色
优化
减少DrawCall:使用批处理技术,比方说将静态物体合并成一张网格,合并Sprite图集,光照贴图应该也算
减少实时光照计算:光照是非常费性能的,可以使用烘焙,光照贴图等技术,有兴趣的话可以去看看虚幻五的全局动态光照Lumen( 【老奇】阴差阳错 撼动世界的游戏引擎_哔哩哔哩_bilibili )
设置适当的摄像机场景深度:超过该深度的物体不会被渲染
参与讨论
(Participate in the discussion)
参与讨论