Unity URP中的Single-Pass到底是什么
什么是URP相信大家都已经看过了很多的文章,这里就不再向大家详细解读URP了,只是简单的提一下:大家都知道,一直以来,unity使用的都是一套内置的渲染管线,全部写在引擎的源码里,大家基本不会能改动,所以过去的管线对于开发者来说,是很难进行定制的。而且对unity官方团队而言,应该也有很大负担,因为他们要在一个渲染管线里支持几十种平台,例如PC,主机,手机等,越来越多的平台支持无疑会使这套代码越来越臃肿,很难兼顾效率和效果,所以unity推出了一套新的基于脚本的渲染管线SRP(可编程渲染管线),主要把渲染管线拆分成两层:一层是比较底层的渲染API,另一层是渲染管线比较上层的描述,上层的代码使用C#来编写。在C#这层不需要关注底层在不同平台渲染API的差别,也不需要关心据图如何做一个Draw Call。
unity基于SRP提供了两套模板:一个是轻量级渲染管线LWRP(在unity2019.3中正式更名为URP(通用渲染管线)),一个是高清晰渲染管线HDRP。
高清渲染管线HDRP是全部基于Compute Shader,基于最新的硬件来开发的,可以达到顶尖的渲染效果。例如Unity的官方演示项目《异教徒》,它的效果非常惊艳。
另外一个渲染管线URP,主要是为了移动平台设计,也就是最流行的手机游戏平台,它可以达到更高的效率,然后可定制性也更好。
而我们在阅读官网URP文档,与内置渲染管线做对比的时候,会发现很重要的一个不同点就是,URP采用了Single-Pass的渲染方式。
我们知道Pass块的作用就是 Pass块使游戏对象的几何图形被渲染一次。我们可以找一个最简单明了的多pass效果来看一下,那就是unity下的毛发效果:Unity下的毛发效果
我们打开任意一个shader代码,就可以看到下边有超级多的pass块进行不断的渲染,所以才会呈现出多层mesh,也就是毛发的效果,每个shader都会进行一次渲染,所以我们在Unity的界面下就可以看到一个普通的球体,拥有了多层mesh,然后通过改变透明度,颜色等实现了毛发的效果(这里就不详细介绍毛发效果是如何实现了,有机会单独介绍)
我们可以把毛发相关的代码放在URP的工程下面,发现不管我们怎么调节毛发材质的选项,都只有一层mesh,打开framedebugger看一下渲染过程。我们可以断定,pass块只执行了第一个。
我们刚才已经了解到了,内置渲染管线支持多pass渲染处理,也就是刚才我们看到的毛发效果,但是urp下只支持single pass的处理方式,这个single-pass第一眼觉得是URP下的shader只能有一个pass块,但这样理解肯定是不对的,我们随便点开一个URP下的官方shader,都可以看到每个shader中都有好多pass块,分别用来渲染阴影等,而且每个pass块都打上了lightmode标签。那我们可以猜测,是不是我们在pass块中给每个pass块都设定一个lightmode标签,就可以执行了?我们可以试一下,给第一个pass块一个tag标签UniversalForward(URP渲染下的一个lightmode标签)。
之后再回到Unity,打开framedebugger看一下渲染过程,
发现此时已经进行了两次pass块的渲染,一个pass的标签是UniversalForward,另一个则么有标签,那我们再在第二个pass块上加上一个tag标签UniversalForward,再看一下framedebugger
可以看到此次渲染的是第0个和第2个,其中第0个pass块和第1个pass块都是相同的标签UniversalForward,我们把第一个pass块的tag标签换成SRPDefaultUnlit(URP下的标签之一)
可以看到两个pass都被正常渲染,而且两个pass的标签分别为UniversalForward和SRPDefaultUnlit。
那么我们现在应该可以猜到URP下的Sungle-Pass的渲染方式,应该指的是,相同的Tags标签,只会被执行一次,而不是说一个shader里面只能有一个Pass块。
那么URP下的标签又是在哪里定义的呢?我们可以在Packages文件夹下找到URP相关的代码,在DrawObjectsPass这个脚本下,发现有tag标签被加进了标签队列中
当然URP本质上就是SRP的一个模板,例如DrawObjectsPass这样的脚本我们完全可以自己去编写,来定义自己的渲染管线,我们现在可以尝试在DrawObjectsPass下,把一些我们自己定义的Tag标签名字加进去,例如
然后再毛发shader中添加我们自己的标签,发现被添加了Test1和Test2标签的pass块也都被正常执行了。(补充:最多只允许16个ShaderTag)
(以上均为博主自己的理解,如有错误,还麻烦在评论区指出,大家一起探讨研究)。
Unity URP中的Single-Pass到底是什么相关推荐
- Unity URP中的多Pass Shader和Planer shadow
一 .Unity移动端软阴影技术总结: https://blog.csdn.net/jxw167/article/details/82422891 二. 平面阴影的原理 https://zhuanla ...
- Unity URP中的Post-processing
在Unity中,你可以选择不同的渲染管道.渲染管道执行一系列获取场景内容的操作,并在屏幕上显示它们.在高水平上,这些操作包括:Culling,Rendering,Post-processing.不同的 ...
- Unity - URP RenderFeature - 实现类似多 Pass 的 XRay: Rim、Pattern
文章目录 环境 XRay : Rim, Pattern, Pattern+Rim 在 Built-RP 中 在 URP 中 Shader 脚本 效果 Pattern URP RendererFeatu ...
- [Render] 适用于高级Unity创作者的通用渲染管线[4] - URP中的光照
RuntimeMapMaker3D-Pro 英文原文:https://resources.unity.com/games/introduction-universal-render-pipeline- ...
- 【Unity URP】Rendering Debugger和可视化MipMap方案
写在前面 最近开始学习Unity性能优化,是结合了<Unity游戏优化>这本书和教程<Unity性能优化>第叁节--静态资源优化(3)--纹理的基础概念一起学习.在学习纹理优化 ...
- system volume information是什么文件_如何扩展Unity URP的后处理Volume组件
Unity在更新到Unity2019.4之后,大家或许已经发现,在使用URP(通用渲染管线)的情况下,Unity原来的Post Processing插件好像不起效了.原来Unity在Unity2019 ...
- 【直播回顾】URP中如何写Shader?
洪流学堂,让你快人几步.你好,我是你的技术探路者郑洪智,你可以叫我大智. 每周三例行的洪流学堂Unity直播公开课这周也如期与大家见面啦! 这周一起探索的话题是:URP中如何写Shader? 下面我们 ...
- Unity URP入门实战
导读 本文讲述 如何从应用层面使用URP 如何在代码层面为URP增加更多的渲染特性 如果拓展URP的后处理效果 URP管线特性 光源数量: 直线光外加4个其他光源 内置管线的多Pass Forward ...
- 关于URP中RendererFeature的使用及毛发效果的几种实现方式
目录 前言 一.铺垫 二.基于程序网格复制的实现 三.基于程序多材质的实现 四.基于RenderObjects手动配置的实现 4.1.多Pass实现多层毛发 4.2.override material ...
- unity URP内置shader lit解析
unity内置的pbr渲染shader Properties为shader相关属性 两个SubShader里面为相应的渲染内容,第二个为降级处理渲染,如果第一个SubShader不兼容,才会渲染第二个 ...
最新文章
- C语言条件编译及编译预处理阶段
- hdu2588 GCD
- 学习旧岛小程序 (1) flex 布局
- beanshell变量无法传到jmeter_学会BeanShell,才敢说自己懂Jmeter
- laravel大型项目系列教程(六)之优化、单元测试以及部署
- SQL点滴26—常见T-SQL面试解析
- 多少人能过初赛_蜂蜜和水的比例是多少?蜂蜜水怎么冲最好?
- IdentityServer4 SigningCredential(RSA 证书加密)
- 软件工程导论团队项目
- layer加载的页面偶尔出现空白_Layer-Cake 模式的设计
- treeset java_Java TreeSet Higher()方法与示例
- 读取pdf文件信息(pdfinfo)
- Python 数据科学入门教程:NLTK
- 开发物体识别桌、_Tofu3 热红外可见光双光AI目标识别跟踪
- 【黑马Bootstrap笔记】Bootstrap快速入门
- javascript高级程序设计笔记-第八章(BOM)
- oracle normal索引类型,Oracle中有多少种索引类型?
- 我国计算机发展历程简述,简述计算机的发展历程??
- 《甄嬛传》计谋汇总, 本文忠实于《后宫 甄嬛传》第1本~第7本+番外原文,而非电视剧。
- 目前有哪些高并发解决方案?
热门文章
- html插入腾讯视频自动播放,腾讯视频代码在哪里 腾讯视频嵌入网页的方法
- php 上拉加载下拉刷新页面,html下拉刷新上拉加载Refresher3.0
- aspose word 19.3的使用和破解 word转图片和pdf
- C# 获得%ProgramData% 路径
- Number theory 1_2, To prove there is no rational solution of equation: x^2+y^2=7
- 百钱买百鸡问题的解法与思路
- 获取屏幕分辨率和刷新率
- python与sql的区别_2020年入门数据分析选择Python还是SQL?七个常用操作对比!
- uniapp——显示不了网络图片或者本地图片
- [ECCV 2020] Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation