Unity URP渲染管线下动态切换Universal Render Pipeline Asset

提要

以下内容都是基于 QualitySetting 中的Rendering资源为null的前提下,应该是由于只动态修改了Graphics.Scriptable Render Pipeline Setting资源,而 QualitySetting.Rendering会覆盖效果

经真机测试后未发现异常问题

 实现方式

准备多个URPAsset管线资源:

public RenderPipelineAsset URPAsset;
private RenderPipelineAsset m_OriUrpAsset;
void Modify()
{
    m_OriUrpAsset = GraphicsSettings.renderPipelineAsset;
    GraphicsSettings.renderPipelineAsset = URPAsset;
}

void Reset()
{
    GraphicsSettings.renderPipelineAsset = m_OriUrpAsset;
    m_OriUrpAsset = null;
}

该资源同样是可以打入AB包动态加载的,类型为UnityEngine.Rendering.RenderPipelineAsset

注意点

当更换了URPAsset后,如果RendererList的数据不相同,则可能报错索引找不到,因为该列表中的RendererData是被Camera引用的 (另外补充提示一点,Cemara的Rendering.Renderer引用的是当前GraphicsSetting.Scriptable Render Pipeline Setting的URPAsset里的RendererData资源数据)

 

 URPAsset.Shadow参数动态修改方式

var asset = GraphicsSettings.renderPipelineAsset as UniversalRenderPipelineAsset;
asset.shadowDistance = m_shadowDistance;
asset.shadowCascadeCount = m_shadowCascadeCount;
asset.shadowDepthBias = m_shadowDepthBias;
asset.shadowNormalBias = m_shadowNormalBias;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值