Unity URP切换品质和Feature开关的性能问题

Unity URP全屏模糊插件:高性能实现与移动端优化指南 后处理特效是提升游戏与应用视觉沉浸感的关键技术,其核心原理在于对渲染完成的图像进行像素级处理,以改变最终呈现效果。在实时渲染领域,模糊算法作为基础后处理技术,通过卷积运算对图像像素进行加权混合,能有效营造景深、聚焦视线或烘托特定艺术氛围。其技术价值在于以可控的性能开销,显著提升视觉表现力与用户体验,广泛应用于UI背景虚化、角色状态反馈及场景氛围营造等场景。本文聚焦Unity URP管线,深入解析一款深度优化的全屏模糊插件,其采用Kawase Blur等高效算法,并针对移动端进行Render Texture压 阅读详情

现在对我的项目进行安卓端发布,需要切换品质和一些Feature开关。
我是这样做的。

划分品质

在这里插入图片描述
首先Renerer分为2个Android和PC,图中其他不用参考。
每个副本的URP Asset分为pc和android,例如图中的
hall和hall_android。
hall

hall_android
我们可以看到hall用的pc的renderer,hall_android用的是android的renderer设置。

进入副本切换

    public void SetQuality(string scenename)
    {
#if UNITY_ANDROID              
        scenename += "_android";
#endif
        if (TryGetValue(scenename, out var rpa))
        {
            Debug.Log("切换品质:" + scenename);
            QualitySettings.renderPipeline = (RenderPipelineAsset)rpa;

            ScriptableRenderer sr = CameraManager.inst.cameraData.scriptableRenderer;//
            var property = typeof(ScriptableRenderer).GetProperty("rendererFeatures", BindingFlags.NonPublic | BindingFlags.Instance);

            List<ScriptableRendererFeature> features = property.GetValue(sr) as List<ScriptableRendererFeature>;
            for (int i = 0; i < features.Count; i++)
            {
                Debug.Log("features :" + features[i].name + " , active :" + features[i].isActive);
            }
        }
        else
        {
            Debug.LogError("没找到这个品质:" + scenename);
        }
    }

TryGetValue是从所有的URPAsset里获取对应的设置,然后通过QualitySettings.renderPipeline函数覆盖设置。
后面是输出所有的features名字和开关。

开启和关闭Feature

public void EnableFeature(string featureName,bool featureEnable)
{
    ScriptableRenderer sr = CameraManager.inst.cameraData.scriptableRenderer;//
    var property = typeof(ScriptableRenderer).GetProperty("rendererFeatures", BindingFlags.NonPublic | BindingFlags.Instance);

    List<ScriptableRendererFeature> features = property.GetValue(sr) as List<ScriptableRendererFeature>;
    for (int i = 0; i < features.Count; i++)
    {
        if (features[i].name == featureName)
        {
            features[i].SetActive(featureEnable);
            Debug.Log("features change :" + features[i].name + " , active :" + features[i].isActive);
        }
    }
}

这个接口用于开关某些feature。

特别重要的性能问题

这里要注意,因为每个副本的renderer是共用的,所以feature需要根据每个副本不同来开启关闭比较灵活。

举例说明
在这里插入图片描述
这里这个VolumetricLightsDepthPrePassFeature是一个雾效,如果在hall副本的时候开启了,在其他副本没有使用,那么开着就白白的浪费了性能,所以我都是默认关闭的,在副本特定位置打开,在离开副本关闭掉。

那就到这里了。

如果对你有用,请点赞。

参考

Unity URP渲染管线下动态切换Universal Render Pipeline Asset 当更换了URPAsset后,如果RendererList的数据不相同,则可能报错索引找不到,因为该列表中的RendererData是被Camera引用的 (另外补充提示一点,Cemara的Rendering.Renderer引用的是当前GraphicsSetting.Scriptable Render Pipeline Setting的URPAsset里的RendererData资源数据) 阅读详情

相关推荐

【Unity】RenderFeature笔记

RenderFeature是在urp中添加的额外渲染pass,并可以将这个pass插入到渲染列队中的任意位置。内置渲染管线中Graphics 的功能需要在RenderFeature里实现,常见的如DrawMesh和Blit

发布unity,三维模型的相关内容 5746

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

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

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

Unity URP屏幕空间描边:原理、实现与性能优化实战

轮廓渲染是游戏开发中实现视觉强调和提升画面品质的关键技术。其核心原理是通过检测图像中颜色、深度或法线的突变区域来识别物体边缘。在实时渲染领域,屏幕空间技术因其性能可控性而成为主流方案,它基于渲染完成后的深度图和法线图,运用Sobel等边缘检测算法进行计算。这种方法的优势在于其计算复杂度仅与屏幕分辨率相关,与场景几何复杂度解耦,为性能优化提供了清晰路径,尤其适合移动端和多平台项目。在Unity URP管线中,通过自定义Renderer Feature和Render Pass,开发者可以高效集成屏幕空间描边,用

weixin_30383279的博客 357

UNITY普通3D项目转换成URP项目

普通3D项目转换成URP项目 需要注意的是要确认UniversalRP对应的版本支持 目前此插件在2019和2020.2版本上已经得到认证 转换的前提: 1.查看素材或询问素材支持的Unity版本 2.查看或询问素材是否支持UniversalRP插件 3.查看或询问素材支持的URP Unity版本 4.安装好UniversalRP并创建通用渲染管线

csDN_Smily的博客 7178

Unity URP线性空间下UI透明度混合问题的原理与解决方案

在计算机图形学中,色彩空间转换与透明度混合是渲染管线的核心基础概念。伽马空间与线性空间的本质区别在于颜色值的编码方式,伽马空间通过非线性编码优化存储与人眼感知,而线性空间则遵循物理光照的线性叠加原理,确保光照计算的数学正确性。在Unity的通用渲染管线(URP)中,启用线性空间能显著提升光照与色彩的真实性,这是现代游戏与交互应用追求视觉保真度的关键技术价值。然而,当传统的UI系统(如UGUI)默认基于伽马空间假设进行渲染时,其输出的颜色值与线性空间的帧缓冲区混合会产生计算错误,导致UI元素出现发灰、边缘黑边

weixin_30781107的博客 490

URP屏幕模糊效果:从原理到实战的高性能实现指南

屏幕后处理是实时渲染中提升视觉表现力的关键技术,其核心原理是通过对像素颜色进行采样与混合来改变图像表现。在Unity的通用渲染管线(URP)架构下,实现高效的屏幕模糊需要深入理解渲染流程与算法原理。高斯模糊作为经典算法,通过分离计算优化性能,而双重模糊策略则通过降采样大幅提升移动端运行效率。这些技术为景深、UI毛玻璃、技能特效等应用场景提供了基础支持。本文聚焦于URP下模糊效果的实现,详细解析了通过Renderer Feature构建高性能双重高斯模糊的方案,并探讨了与UI系统深度集成等工程实践,帮助开发者

weixin_30698297的博客 393

【Unity基础】如何在BRP和URP管线之间切换?

本文介绍了如何在BRP和URP之间切换渲染管线

Tealc 5182

Unity渲染管线深度对比:URP与内置管线的性能、画质与工作流抉择

在实时图形渲染领域,渲染管线是决定应用性能与视觉表现的核心架构。其工作原理是将3D场景数据通过一系列可编程或固定的处理阶段,最终输出为屏幕上的2D图像。现代渲染管线通过优化绘制调用、光照计算和资源管理,为开发者提供了平衡性能与画质的技术基础。在Unity引擎中,内置渲染管线(Built-in Render Pipeline)作为经典的全能解决方案,提供了开箱即用的丰富功能,而通用渲染管线(Universal Render Pipeline, URP)则代表了模块化、可编程的现代设计哲学。URP通过引入SRP

weixin_34050519的博客 345

Unity URP渲染管线动态配置的性能陷阱与优化方案

在实时渲染管线中,动态调整渲染品质和特性是常见的性能优化与适配需求。其核心原理在于渲染管线的状态管理与资源分配机制——当运行时修改关键配置时,会触发底层渲染上下文的重构、着色器变体编译以及GPU资源重建,这一过程往往造成显著的性能开销。从技术价值看,理解并规避这些开销对于保障应用流畅性至关重要,尤其在移动端和性能敏感平台。常见的应用场景包括游戏画质分级、设备自适应渲染以及运行时特效管理。本文聚焦Unity通用渲染管线(URP),深入剖析动态切换渲染品质与开关Renderer Feature时引发的性能卡顿问

weixin_30321449的博客 390

Unity URP粒子特效利器:NovaShader核心功能与性能优化全解析

在Unity游戏开发中,着色器(Shader)是实现高质量视觉特效的核心技术之一,它通过编写GPU程序来控制物体表面的渲染方式。其原理在于将顶点数据、纹理信息与光照模型结合,通过一系列数学运算生成最终像素颜色。对于粒子系统(VFX)而言,着色器的技术价值尤为突出,它直接决定了火焰、烟雾、魔法轨迹等动态效果的视觉表现力与运行效率。在URP渲染管线中,开发者常面临为不同特效编写和维护多个独立着色器的挑战,这不仅影响开发效率,也为性能优化和跨平台兼容带来隐患。NovaShader作为一个专为URP设计的超级着色器

weixin_34138056的博客 345

URP后处理深度解析:从核心原理到移动端性能优化实战

后处理(Post-Processing)是实时渲染管线中提升最终画面视觉表现的关键技术环节,它通过在最终图像输出前施加一系列全屏特效,来塑造氛围、模拟物理特性并引导视觉焦点。其核心原理在于利用屏幕空间信息(如颜色、深度缓冲区),通过着色器进行像素级计算,实现色彩分级、泛光、景深等效果。在Universal Render Pipeline(URP)中,后处理通过模块化的Volume系统深度集成,提供了灵活的分层控制能力。这项技术的核心价值在于,它能以较低的性能开销,极大地增强画面的艺术表现力和沉浸感,广泛应用

weixin_30480075的博客 384

Unity URP全屏模糊插件:从Shader原理到工程实践

在实时渲染中,后处理效果是提升视觉沉浸感的关键技术之一。其核心原理是通过对渲染完成的图像进行像素级处理,改变最终呈现的视觉风格。高斯模糊作为经典的后处理算法,通过加权平均采样实现平滑过渡,在性能与效果间取得平衡。在Unity的URP(通用渲染管线)中,后处理需通过Render Feature和Command Buffer进行重构,这为开发者带来了新的技术挑战与优化空间。该技术的工程价值在于,它能将底层渲染逻辑封装为可复用的组件,显著提升开发效率。在游戏开发中,全屏模糊广泛应用于UI聚焦、过场动画、技能反馈等

weixin_33968104的博客 492

Unity URP移动端屏幕空间平面反射(SSPR)实现与优化指南

屏幕空间反射(SSR)是一种基于当前帧已渲染信息的实时反射技术,它通过采样深度和颜色纹理重建反射效果,避免了传统镜像摄像机方案的全场景重复渲染开销。其核心原理是利用GPU并行计算能力,在着色器中进行射线步进或镜像投影计算,在性能与效果间取得平衡。这一技术对移动端游戏和XR应用具有重要价值,能显著提升水面、冰面等场景的真实感,同时保持可接受的性能开销。在Unity URP管线中,通过自定义Renderer Feature实现SSPR,需重点优化纹理采样、射线步进算法,并针对Tile-Based GPU架构进行

413

Unity URP描边渲染技术解构:从原理到实战的完整指南

在3D游戏开发中,物体轮廓的清晰度直接影响玩家对场景的认知和交互体验。当我在开发第三人称动作游戏时,曾因复杂场景中角色与环境融合导致玩家操作失误,这让我意识到高质量描边渲染的重要性。Unity URP Outlines作为基于屏幕空间技术的解决方案,通过深度和法线信息实现精准边缘检测,完美平衡了性能与视觉效果。本文将从技术原理到实战应用,全面解析这一工具如何解决行业痛点,提升游戏视觉品质。 ##

gitblog_01090的博客 284

Unity URP后处理实战:从Bloom调优到自定义着色器开发

后处理是计算机图形渲染管线中的关键环节,指在场景渲染完成后对最终图像进行的二次加工,其核心原理是通过像素着色器对屏幕空间图像进行滤镜式处理。这项技术能极大提升视觉表现力与艺术风格统一性,广泛应用于游戏开发、影视特效和实时渲染领域。在Unity的通用渲染管线(URP)框架下,后处理通过模块化的Volume系统和可编程渲染器特性实现高性能与高灵活性的平衡。本文聚焦URP后处理的核心实践,深入解析Bloom泛光效果的移动端调优策略与阈值参数设置,并详解如何通过编写自定义全屏后处理着色器及Render Featur

weixin_31556767的博客 296

Unity URP抗锯齿技术全解析:FXAA、SMAA、TAA原理对比与实战选型

抗锯齿(Anti-Aliasing)是计算机图形学中解决图像边缘锯齿问题的核心技术,其本质是通过算法对离散像素采样进行优化,以平滑连续几何边缘的视觉表现。从原理上可分为空间域与时间域两大类:空间域算法(如FXAA、SMAA)基于单帧图像进行边缘检测与混合,而时间域算法(如TAA)则利用多帧历史信息实现更优的动态稳定性。在Unity URP(通用渲染管线)架构下,抗锯齿作为后处理效果实现,需根据渲染路径(前向/延迟)进行适配——延迟渲染路径依赖后处理方案,前向渲染则可结合硬件MSAA。对于工程实践,FXAA以

chuange6363的博客 433

Unity URP全屏模糊插件深度解析:5分钟打造专业级毛玻璃效果

在Unity游戏开发中,实现高质量的屏幕模糊效果一直是UI视觉设计的重要挑战。传统的模糊解决方案要么性能消耗过大,要么兼容性有限,难以在现代渲染管线中稳定运行。Unified Universal Blur插件正是为解决这一痛点而生,它为Unity开发者提供了一套基于Render Graph API的高性能全屏模糊解决方案,专为URP渲染管线优化设计。 ## 为什么选择Render Graph架构

gitblog_00195的博客 523

Unity渲染管线深度对比:URP、HDRP与内置管线如何选择?

渲染管线是实时图形应用的核心框架,它定义了3D场景数据转换为最终屏幕像素的完整流程与算法。其原理在于通过一系列可编程或固定的渲染阶段(如几何处理、光照计算、像素着色等)来合成图像。在游戏开发、虚拟现实、建筑可视化等领域,选择合适的渲染管线对项目性能、视觉效果和开发效率具有决定性影响。Unity引擎提供了内置渲染管线(BRP)、通用渲染管线(URP)和高清渲染管线(HDRP)三种主要方案,它们分别对应不同的性能开销、画质目标和平台适配需求。例如,针对移动端或WebGL项目,URP因其轻量化和深度优化,能有效解

weixin_30617695的博客 312
上一篇: Unity2022.3打包Android后从AB包加载场景发现丢失大量脚本问题
下一篇: Unity关于纹理图片格式带来的内存问题和对预制体批量格式和大小减半处理
Thinbug
博客等级 码龄22年 2万+粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinbug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值