设置可用的渲染管线资源
在SRP中,你的工程需要有一个激活的渲染管线资源(Render Pipeline Asset).这一章的内容有在Editor以及运行时的情况下设置渲染管线资源的相关资讯
兼容性和性能
因为SRP是高度可配置的,所以改变激活的渲染管线资源只会导致很小的变化,比如用同样的渲染管线实例对应不同的quality等级,或者来一个大的改变,比如从通用渲染管线(URP)切换到高清晰渲染管线(HDRP).
如果你从一个激活的渲染管线资源换到另外一个使用了不同渲染管线实例的管线资源,你必须要保证你项目中的资源和代码要和新的渲染管线实例相兼容,否者你可能会遇到错误或者是一些无法预料的视觉效果
注意,转换新的渲染管线资源会导致unity销毁当前的渲染管线实例,并且会去调用新的渲染管线资源中的CreatePipeline()方法.从SRP中的代码来看,在计算上这将是一个资源密集型的操作
在UnityEidor中设置渲染管线资源
当你在编辑你的工程时,如果想要使用SRP,你需要在你的UnityEidor中设置渲染管线资源.你在UnityEidor中设置的渲染管线资源是unity默认在build player中使用的渲染管线资源.
在Graphics Settings 窗口,为你的工程设置渲染管线资源
1.通过导航到Edit > Project Settings > Graphics来打开 Graphics Settings窗口
2.在你的Project文件夹下,找到你想要使用的渲染管线资源
3.拖拽渲染管线资源到Scriptable Render Pipeline Setting这一栏.然后,Unity会立马使用你在渲染管线资源中定义的配置开始渲染.这包括了Game视图,scene视图,以及在Project面板和Inspector面板中显示的材质的预览窗口
在运行时设置渲染管线资源
如果你想要在多个渲染管线资源之间切换,你可以在runtime时设置渲染管线资源.你可以在build player中进行设置也可以在Editor下的Play模式下完成这一切
在runtime时,使用 GraphicsSettings.renderPipelineAsset API对渲染管线资源进行设置
以下的代码展示了如何在多个渲染管线资源之间切换.
using UnityEngine;
using UnityEngine.Rendering;
public class SwitchRenderPipelineAsset : MonoBehaviour
{
public RenderPipelineAsset exampleAssetA;
public RenderPipelineAsset exampleAssetB;
void Update()
{
if (Input.GetKeyDown(KeyCode.A)) {
GraphicsSettings.renderPipelineAsset = exampleAssetA;
Debug.Log("Active render pipeline asset is: " + GraphicsSettings.renderPipelineAsset.name);
}
else if (Input.GetKeyDown(KeyCode.B)) {
GraphicsSettings.renderPipelineAsset = exampleAssetB;
Debug.Log("Active render pipeline asset is: " + GraphicsSettings.renderPipelineAsset.name);
}
}