Change RenderPipelineAsset via Script
I have implemented my own Scriptable Render Pipeline, and now I would like to add a switch to dynamically change Render Pipeline Asset via C# Script for comparison with Unity built-in Standard Shader. I searched around a lot and I couldn't find anything about changing setting in Edit -> Project Settings -> Graphics via C# Script. Can anyone point me to the right direction? Is it impossible to do so in runtime? Or is there a way to switch to the default render pipeline using my Scriptable Render Pipeline Asset?
Answer by guillemsrr · Sep 01, 2019 at 04:45 PM
In 2019.2 you can use GraphicsSettings.renderPipelineAsset = yourRPA;
How to let user set lwrp asset settings or auto configure? I want to call the values in Ui panel.
var rpAsset = UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset;
var urpAsset = (UnityEngine.Rendering.Universal.UniversalRenderPipelineAsset) rpAsset;
urpAsset.renderScale = newValue;
Ok! This is woring. :) Thanks
using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.LWRP;
public class graphicctrl : $$anonymous$$onoBehaviour { public LightweightRenderPipelineAsset assetlow; public LightweightRenderPipelineAsset assethigh;
public void ChangeQuality(float level)
{
switch((int)level)
{
case 0:
QualitySettings.SetQualityLevel(0);
GraphicsSettings.renderPipelineAsset = assetlow;
break;
case 1:
QualitySettings.SetQualityLevel(3);
GraphicsSettings.renderPipelineAsset = assethigh;
break;
}
}
}
Answer by jjxtra · Jul 03, 2019 at 03:55 PM
UnityEngine.Rendering.LWRP.LightweightRenderPipelineAsset asset = AssetDatabase.LoadAssetAtPath<UnityEngine.Rendering.LWRP.LightweightRenderPipelineAsset>(assetPath);
As far as I can tell, render features still have to be done in inspector... dumb...
var rpAsset = UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset;
var urpAsset = (UnityEngine.Rendering.Universal.UniversalRenderPipelineAsset) rpAsset;
urpAsset.renderScale = 0.2;