Unity 轻量级渲染管线LWRP/URP详解

图形学中的抗锯齿讨论以及在unity中的应用 对图形学中的抗锯齿做了讨论,并给出unity中的使用方法 阅读详情

Unity 可编程渲染管线, LWRP轻量级渲染管线(Light Weight Render Pipeline)出来有一段时间了, 今天写一遍文章,详细的介绍一下可编程渲染管线与LWRP轻量级渲染管线相关内容,帮助大家搞懂这些概念,并建立起一个学习可编程渲染管线/轻量级渲染管线的思维。整个文章我将会分成4个部分来个大家讲解:

   (1): 什么是渲染管线与向前渲染;

   (2): 什么是可编程渲染管线;

   (3): 轻量级渲染管线与它的基本使用;

   (4): 轻量级渲染管线Shader 模板结构;

每个Unity版本,实现的轻量级渲染管线LWRP的代码可能都不一样,但是思路原理基本都差不多。

1: 什么是渲染管线与向前渲染

   我本人非常反对高大上的概念包装,唯独游戏中的"渲染"是例外之一。通俗点说渲染就是烘托出相应的环境(光照,阴影,遮挡,反射,折射等),把物体在特定的环境中绘制出来。Unity引擎里把引擎中完成整个游戏场景,人物, 环境,光照等游戏画面绘制相关,最终把画面绘制到屏幕上的整套逻辑与相关代码(普通代码与Shader代码)称为渲染管线。

  Unity引擎的渲染管线主要分为"渲染核心库"与"渲染策略"两个部分, “渲染核心库”是Unity把基于OpenGL/DirectX把渲染相关的接口函数封装成API,这部分Unity引擎写好后作为核心的API渲染库。”渲染策略”指的是Unity引擎绘制整个游戏场景的时候,如何处理多相机,多光源,阴影投射,物体绘制,雾,自发光等。这个就叫做渲染策略,渲染管线基于一种渲染策略,调用渲染核心库中的API,把整个游戏场景绘制出来。

             

  早期的Unity引擎,把整个渲染管线都内置在引擎里面,没有开放给开发者,只有少数的一些大厂,获得了Unity引擎源码授权,能修改和定制里面的渲染管线相关代码。Unity内置的渲染管线有: 向前渲染,延时渲染等,目前这两种用的比较多。Unity引擎默认使用"向前渲染"。接下来我说一下向前渲染管线中的一个渲染策略,为了后面对比轻量级渲染管线做好铺垫。向前渲染管线可以处理任意多的光源,处理多光源的时候,每个重要光源,都会调用一次Shader里面的Pass来完成渲染,有几个重要光源就会渲染几次,这样大大降低了多光源时候的绘制效率。所以之前我们很多手机游戏上面都用静态光照来渲染场景,获得逼真的光照效果,因为向前渲染管线多光源的实时计算开销实在太大。静态光照有一个问题就是无法获得实时光照的效果。

2: 什么是可编程渲染管线

  前面个讲解了渲染管线与内置的先前渲染管线,我们会发现内置的渲染管线的策略有时候不满足我们的要求,比如我们需要实时光照,又需要好的性能,那么向前渲染每个光照都走一次Pass显然不合适,做手机游戏,可能只要4个光源就可以了,不用支持任意多的光源,随着unity可以开发越来越多的游戏平台,不同平台,不同类型的游戏越来越需要能修改渲染管线相关的策略,到达好的效果,同时有好的性能。Unity新版本推出了可编程渲染管线,把渲染管线里面的渲染API核心库开放给开发者,允许开发者自己定制渲染策略。Unity引擎提供了一整套可以定制渲染管线的机制,所以叫做可编程渲染管线SRP(Scriptable Render Pipeline)。

3: 轻量级渲染管线与它的基本使用

  内置的渲染管线是针对通用情况,比如支持任意数目的光源等,所以很多策略并不是特定的环境下,针对特定应用场景而得到的最佳的策略,现在手机游戏非常的广泛,还有很多其它的游戏平台,需要好的渲染效果的同时,需要一个好的性能。比如我就希望有多光源的实时光照,我的角色到了光源附近能渲染出光的效果出来,而不是使用静态光照那样。同时我们又不需要任意多的光源,只要限定一个光源数目即可,比如4个。这样就可以通过定制渲染管线,提升性能,比如我们最多支持4个光源,我把所有光源的计算一起放到一个Pass里面,这样提升性能的同时,又获得实时的光照,虽然对光源的数目做了一些限制(轻量化),却获得了效果和性能的一个灵活的平衡。Unity 针对手游等应用领域,开发了轻量级渲染管线(LWRP),后来基于轻量级渲染管线又衍生出来另外一个渲染管线Universal Render Pipeline(URP,这边文章我们用的是URP的代码)。

  渲染管线的渲染策略被定制了,渲染的时候需要Shader来配合最终绘制物体出来,所以不同的渲染管线Shader会不一样,我们之前学习的Shader开发都是针对向前渲染管线的,比如轻量级渲染管线所有光照计算都在一个Pass,那么之前向前渲染的Shader肯定就不能直接使用了。所以当我们定制了新的渲染管线以后,还要基于新的渲染管线的策略重新开发一个Shader包(PBR Shader, 粒子, 雾,天空盒等),这个Shader包能满足大部分的3D游戏开发的需求,同时我们也可以基于新的渲染管线的策略来开发自己的Shader。

   总结一下定制渲染管线的主要的3个点:

      (1) 渲染核心功能的API,由引擎开放给开发者调用;

      (2) 定制渲染策略,开发者根据自己游戏的情况来定制自己的渲染管线,达到最好性能;

    (3) 基于渲染管线的渲染策略,开发出对应的Shader包;

完全从头到尾定制一个渲染管线并不容易,幸运的是Unity引擎为我们做好了轻量级的渲染管线,满足我们做手机游戏的绝大部分的需求。我们只要使用就可以了,如何使用轻量级渲染管线,这里我们已URP为例:

    (1) 安装URP的相关的Unity Package, 不同的Unity的版本可能URP的代码版本不一样。

(2) 使用URP渲染管线来代替内置的渲染管线。先创建一个渲染管线的Asset文件,配置好相关数据,创建成功后,在Grpahics下面的Scriptable Render Pipeline选择这个Asset文件,切换渲染管线成功。系统会根据Asset文件的描述来创建出渲染管线出来。如图:

  (3) 创建角色,场景,创建材质的时候,使用渲染URP渲染管线相关的Shader;

   4: 轻量级渲染管线Shader 模板结构

   Unity可编程渲染管线(包括轻量级渲染管线)的Shader开发仍然使用的是ShaderLab的语法结构,开发语言和普通的Shader开发不一样,使用的是HLSL编程语言。同时有些渲染管线还支持Shader Graphic开发。作为程序员,我个人还是建议自己手写代码,比起生成的Shader的代码,手写代码能减少冗余,更高效。我们打开URP渲染管线里面 PBR Shader如下图:

   

仍然是基于ShaderLab, 和普通的Shader结构,没有区别。

 我们来看几个重要的Pass, 体会一下和向前渲染管线的不同。先来看主要的绘制Pass,处理光照计算的,正如红线标注的一样,所有的光源在一个Pass里面计算完成。

看下阴影投射的Pass:

看下HLSL代码,和Cg差不多,所以学习的时候不用由心里负担, 打开LitForwardPass.hlsl,这个文件就是URP里面PBR Shader具体实现的代码。截图如下,数据结构这些和Cg没有太大的差别,如图:

由于篇幅有限,没有办法把Shader详细代码的讲解一遍,为此我还提供了本文对应的代码与视频讲解(里面详细讲解了Shader结构),需要的可以关注公众号,回复"LWRP",来学习免费学习视频教程,并获取课程源码。 URP渲染管线效果截图如下:

Unity URP下阴影锯齿 Unity的URP模式下阴影质量设置 阅读详情

相关推荐

unity渲染管线及升级URP

unity渲染管线及升级URP一,unity渲染管线简介二,通用渲染管线URP三,shader升级URP1,Builtin RP和URP中内置Shader 的对应2,总体结构3,include4,光照模式LightMode5,变体Variants6,预定义宏辅助宏阴影贴图纹理采样器声明光照、雾7,辅助函数变换函数通用辅助函数向前渲染函数屏幕空间顶点光照深度其他7,内置变量8,后处理参考资料 一,unity渲染管线简介 Unity引擎的渲染管线主要分为"渲染核心库"与"渲染策略"两个部分, “渲染核心库”是U

噗噗噗的博客 1万+

Unity URP VR 抗锯齿优化

【Settings】URP VR 抗锯齿优化

2301_79311694的博客 1996

Unity URP 渲染管线实战:URP渲染管线Shader机制剖析

主要结构依然是Shader{ SubShader { pass{} pass{} }, SubShader {}, FallBack }与标准的Unity Shader开发不同的是 URP Shader内嵌HLSL的代码,标准的是Cg的代码,其它的差不多。分析完URP的Unlit Shader后,接下来分析PBR Shader, PBR Shader基于物理的光照,支持金属度与粗超度美术工作流,反射与光泽度工作流,这些参数和标准PBR Shader一样,来看下URP的PBR Shader。

weixin_49669470的博客 3413

走进LWRP(Universal RP)的世界

走进LWRP(Universal RP)的世界 原文:https://connect.unity.com/p/zou-jin-lwrp-universal-rp-de-shi-jie LWRP自Unity2018发布以来,进入大家视野已经有一段时间了,不过对于广大Unity开发者来说,依然相对比较陌生,原因有几个,一是一直以来LWRP都处于预览状态,使用中会遇到一些bug,所以也就止于尝试。...

yinfourever的专栏 6621

Unity URP 渲染管线:URP渲染管线光照机制剖析

(2) 传统渲染管线,采用是逐顶点光照,还是逐像素光照,都是由Shader的实现来决定,而URP把这个开关放到了光源这边,这样方便我们进行响应的配置与调整。上一节通过剖析URP 摄像机了解摄像机的机制,本节来分析URP的光照的主要机制,并通过与内置的向前渲染管线做对比,来比较它们的与不同。(4) URP 渲染管线的光照策略,在有限光源数目前提下相比传统的获得更好的性能和更容易配置的选项。今天的分享就到这里,关注我们,下一节继续剖析URP渲染管线的其它核心机制。,少了Cookie光晕这些。

weixin_49669470的博客 1751

【制作100个unity游戏之22】3DRPG游戏开发01——项目的设置和导入及渲染管线的安装修复

如果你现在存在一些疑惑unity导入素材为什么是粉紫色的?表示他没有适配我们的URP通用渲染管线,要如何适配呢?素材渲染错误丢失要如何解决?如果你有上面3个任意的问题,那这篇文章同样适合你,我将手把手教你如何安装修复渲染管线,看完你就了解了!在Unity中,他们都是渲染管线,它们的主要区别在于性能和功能。LWRP是早期版本的URP,它专门为移动设备和低端PC设计,旨在提供更高的性能。它使用基于顶点的光照和简化的后处理效果,可以在更低的硬件要求下运行。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2428

Unity URP中的Single-Pass到底是什么

什么是URP相信大家都已经看过了很多的文章,这里就不再向大家详细解读URP了,只是简单的提一下:大家都知道,一直以来,unity使用的都是一套内置的渲染管线,全部写在引擎的源码里,大家基本不会能改动,所以过去的管线对于开发者来说,是很难进行定制的。而且对unity官方团队而言,应该也有很大负担,因为他们要在一个渲染管线里支持几十种平台,例如PC,主机,手机等,越来越多的平台支持无疑会使这套代码越来越臃肿,很难兼顾效率和效果,所以unity推出了一套新的基于脚本的渲染管线SRP(可编程渲染管线),主要把渲染管

Lenny的博客 3762

Tesseract OCR 字库训练教程:提高识别率进阶版

通过 Tesseract 字库训练,你可以提高 OCR 对特定文本或字体的识别能力。训练过程包括准备训练数据、生成标签文件、运行训练工具,以及将训练结果集成到实际项目中。虽然训练过程需要一些时间和精力,但对于需要高精度文本识别的场景来说,字库训练是非常有效的提升识别率的方法。

小蜗牛的珍贵百宝箱 1865

Unity渲染管线详解:从Built-in到URP/HDRP的全面解析

渲染管线是将3D场景数据转换为2D屏幕图像的一系列处理流程。剔除(Culling):确定哪些对象在视野内渲染(Rendering):将几何体绘制到屏幕后处理(Post-processing):应用屏幕空间效果// 自定义渲染逻辑Unity渲染管线的演进为开发者提供了从移动端到3A大作的完整解决方案。根据目标硬件选择合适的管线优化渲染性能与画面质量的平衡有效规划项目技术路线随着实时渲染技术的快速发展,建议开发者持续关注Unity官方文档和图形技术社区,掌握最新的渲染管线技术与最佳实践。

weixin_42216813的博客 6219

Canoe主要功能的详细介绍

CANoe是德国Vetor公司推出的一款用于总线开发的设备,全程为CAN open environment。后来随着总线技术的发展,CANoe不仅限于CAN类型的总线开发,还包含LIN、FlexRay、MOST和以太网等开发。在车载网络和ECU开发、测试和分析方面,CANoe几乎长期占据着垄断地位,当然是因为其强大的功能性了。目前用这个工具的主要是整车厂和供应商的网络设计工程是、开发工程师和测试工程师。小编当时安装CANoe的时候也是花了一定的时间和精力,好在没有崩溃。

车载测试 3722

Keil MDK编译错误#541解决方案与ARM_Compiler包解析

在嵌入式开发中,编译器工具链的依赖管理是确保项目顺利构建的关键环节。以Keil MDK为例,其软件包依赖机制通过组件化设计实现功能解耦,其中ARM_Compiler包专门处理系统IO重定向等编译器扩展功能。这种架构既提升了模块复用性,也带来了版本兼容性挑战。当出现'Error #541: component missing'报错时,通常是由于中间件组件(如文件系统)在新版本中显式依赖了ARM_Compiler包。开发者需要通过Pack Installer安装该包,并在Run-Time Environment

weixin_32129187的博客 365

通用渲染管线(URP)_学习笔记

通用渲染管线(URP)

不负青春 2万+

【论文笔记】LIME: low-light image enhancement via illumination map estimation

【论文笔记】LIME: low-light image enhancement via illumination map estimation 一篇低光图像增强,引用超1000次的经典论文

weixin_45565519的博客 1793

Unity中Shader URP 简介

在这篇文章中,我们主要介绍一下Unity中的URP(通用渲染管线)是什么。

楠溪泽岸的博客 2188

实战STM32G0驱动DRV8870/AT8870:PWM+DMA精准调速与H桥衰减模式详解

本文详细介绍了如何使用STM32G0单片机结合DRV8870/AT8870电机驱动芯片实现直流有刷电机的精准控制。重点讲解了PWM与DMA结合实现高效调速的硬件配置与软件驱动方法,并深入剖析了H桥快衰减与慢衰减模式的工作原理及应用场景,为嵌入式电机控制项目提供了完整的实战解决方案。

c7d8e9的博客 595

YOLO11全网首发:CVPR2026 MixerCSeg | DEGConv方向引导边缘门控,破解细长裂缝检测难题

DEGConv通过方向先验嵌入、边缘增强卷积和动态门控三大机制,针对性解决了YOLO在处理裂缝类细长、多方向、低对比度目标时的特征提取不足问题,显著提升了裂缝检测的精度与鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 561

Unity URP/SRP 渲染管线浅入深出【匠】

URP/SRP 渲染管线

FoxGame的专栏 4276

LVGL 组件对齐方式说明

本文说明 LVGL(以 v8 为例)中常用的 lv_align_t对齐选项的含义与用法,对应界面设计工具里下拉列表中的以及等命名。

摸鱼专家 130

推荐开源项目:URP-LWRP-Shaders - 高效Unity渲染管线的shader集合

在Unity引擎中,高效的渲染是提升游戏或应用性能的关键之一。是一个为Unity Universal Render Pipeline (URP) 和 Lightweight Render Pipeline (LWRP) 设计的shader集,它提供了丰富的视觉效果和优化的性能。 ## 项目简介 URP-LWRP-Shaders是Marco Zakaria开发的一个开源项目,旨在帮助开发者充分利

gitblog_00046的博客 1125

第 10 篇:深度学习的“军火库”——CNN、RNN与Transformer,AI如何看懂世界?

深度学习的革命,不是依赖单一的通用大脑,而是为不同任务打造了专属“军火库”:CNN用“局部感知”看懂图像,RNN用“循环记忆”理解序列,而Transformer则用“全局注意力”开启了AIGC时代。理解这些架构,不是记忆孤立的技术,而是洞察AI从“专才”走向“通才”的进化脉络。

maqh_csdn的博客 786

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Unity URP/SRP可编程渲染管线

可编程渲染管线

Peter的博客 4453

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LWRP(URP)学习笔记二多PASS的使用

LWRP的开篇总章中有这么一句话 The URP uses single-pass forward rendering. Use this pipeline to get optimized real-time performance on several platforms. 以及这样一张图片 这么没头没脑的一句话其实让很多人望而却步(也许没有很多人只是我),单pass遮挡效果怎么做?外...

nxl76450106的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 游戏开发中的矩阵
下一篇: Unity 架构师如何做资源管理
Unity_RAIN
博客等级 码龄4年 409粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值