コード例 #1
0
        public static void SwitchProjectToURP()
        {
#if URP_PACKAGE_IS_INSTALLED
            // Create default URP render pipeline asset (if it doesn't already exist).
            //
            // The #if/#else is needed here because Unity renamed `ForwardRendererData`
            // to `UniversalRendererData` in Unity 2021.2.

#if UNITY_2021_2_OR_NEWER
            UniversalRendererData rendererData = null;

            if (!AssetPathUtil.Exists(URP_RENDERER_ASSET_PATH))
            {
                rendererData = ScriptableObject.CreateInstance <UniversalRendererData>();
                AssetDatabase.CreateAsset(rendererData, URP_RENDERER_ASSET_PATH);
                // reload asset so that object reference is "backed" by asset file
                rendererData = AssetDatabase.LoadAssetAtPath <UniversalRendererData>(URP_RENDERER_ASSET_PATH);
            }
#else
            ForwardRendererData rendererData = null;

            if (!AssetPathUtil.Exists(URP_RENDERER_ASSET_PATH))
            {
                rendererData = ScriptableObject.CreateInstance <ForwardRendererData>();
                AssetDatabase.CreateAsset(rendererData, URP_RENDERER_ASSET_PATH);
                // reload asset so that object reference is "backed" by asset file
                rendererData = AssetDatabase.LoadAssetAtPath <ForwardRendererData>(URP_RENDERER_ASSET_PATH);
            }
#endif

            RenderPipelineAsset renderPipeline = null;

            if (!AssetPathUtil.Exists(URP_PIPELINE_ASSET_PATH))
            {
                renderPipeline = UniversalRenderPipelineAsset.Create(rendererData);
                AssetDatabase.CreateAsset(renderPipeline, URP_PIPELINE_ASSET_PATH);
            }

            // reload asset so that object reference is "backed" by asset file
            renderPipeline = AssetDatabase.LoadAssetAtPath <RenderPipelineAsset>(URP_PIPELINE_ASSET_PATH);
            GraphicsSettings.renderPipelineAsset = renderPipeline;

            // Set color space to linear to match Unity's
            // default setting for new URP projects.
            PlayerSettings.colorSpace = ColorSpace.Linear;
#endif
        }
コード例 #2
0
    public void CreatePipelineAssetWithoutErrors()
    {
        // Test without any render pipeline assigned to GraphicsSettings.
        var renderPipelineAsset = GraphicsSettings.renderPipelineAsset;

        GraphicsSettings.renderPipelineAsset = null;

        try
        {
            UniversalRenderPipelineAsset asset = UniversalRenderPipelineAsset.Create();
            LogAssert.NoUnexpectedReceived();
            ScriptableObject.DestroyImmediate(asset);
        }
        // Makes sure the render pipeline is restored in case of a NullReference exception.
        finally
        {
            GraphicsSettings.renderPipelineAsset = renderPipelineAsset;
        }
    }
コード例 #3
0
    public void ValidateNewAssetResources()
    {
        UniversalRenderPipelineAsset asset = UniversalRenderPipelineAsset.Create();

        Assert.AreNotEqual(null, asset.defaultMaterial);
        Assert.AreNotEqual(null, asset.defaultParticleMaterial);
        Assert.AreNotEqual(null, asset.defaultLineMaterial);
        Assert.AreNotEqual(null, asset.defaultTerrainMaterial);
        Assert.AreNotEqual(null, asset.defaultShader);

        // LWRP doesn't override the following materials
        Assert.AreEqual(null, asset.defaultUIMaterial);
        Assert.AreEqual(null, asset.defaultUIOverdrawMaterial);
        Assert.AreEqual(null, asset.defaultUIETC1SupportedMaterial);
        Assert.AreEqual(null, asset.default2DMaterial);

        Assert.AreNotEqual(null, asset.m_EditorResourcesAsset, "Editor Resources should be initialized when creating a new pipeline.");
        Assert.AreNotEqual(null, asset.m_RendererData, "A default renderer data should be created when creating a new pipeline.");
        ScriptableObject.DestroyImmediate(asset);
    }
コード例 #4
0
ファイル: EditorTests.cs プロジェクト: zacharycarter/Graphics
    public void ValidateAssetSettings()
    {
        // Create a new asset and validate invalid settings
        UniversalRendererData        data  = ScriptableObject.CreateInstance <UniversalRendererData>();
        UniversalRenderPipelineAsset asset = UniversalRenderPipelineAsset.Create(data);

        if (asset != null)
        {
            asset.shadowDistance = -1.0f;
            Assert.GreaterOrEqual(asset.shadowDistance, 0.0f);

            asset.renderScale = -1.0f;
            Assert.GreaterOrEqual(asset.renderScale, UniversalRenderPipeline.minRenderScale);

            asset.renderScale = 32.0f;
            Assert.LessOrEqual(asset.renderScale, UniversalRenderPipeline.maxRenderScale);

            asset.shadowNormalBias = -1.0f;
            Assert.GreaterOrEqual(asset.shadowNormalBias, 0.0f);

            asset.shadowNormalBias = 32.0f;
            Assert.LessOrEqual(asset.shadowNormalBias, UniversalRenderPipeline.maxShadowBias);

            asset.shadowDepthBias = -1.0f;
            Assert.GreaterOrEqual(asset.shadowDepthBias, 0.0f);

            asset.shadowDepthBias = 32.0f;
            Assert.LessOrEqual(asset.shadowDepthBias, UniversalRenderPipeline.maxShadowBias);

            asset.maxAdditionalLightsCount = -1;
            Assert.GreaterOrEqual(asset.maxAdditionalLightsCount, 0);

            asset.maxAdditionalLightsCount = 32;
            Assert.LessOrEqual(asset.maxAdditionalLightsCount, UniversalRenderPipeline.maxPerObjectLights);
        }
        ScriptableObject.DestroyImmediate(asset);
        ScriptableObject.DestroyImmediate(data);
    }
コード例 #5
0
        public static RenderPipelineAsset CreateAsset(ForwardRendererData data)
        {
#if UNITY_2019_3_OR_NEWER
            return(UniversalRenderPipelineAsset.Create(data));
#else
            var asset = LightweightRenderPipelineAsset.Create();

            using (var so = new SerializedObject(asset))
            {
                so.Update();

                var rendererProperty     = so.FindProperty("m_RendererData");
                var rendererTypeProperty = so.FindProperty("m_RendererType");
                rendererTypeProperty.enumValueIndex = (int)RendererType.Custom;

                rendererProperty.objectReferenceValue = data;

                so.ApplyModifiedProperties();
            }

            return(asset);
#endif
        }
コード例 #6
0
ファイル: Renderer2DMenus.cs プロジェクト: Kideya/Brawlgame
 public override void Action(int instanceId, string pathName, string resourceFile)
 {
     //Create asset
     AssetDatabase.CreateAsset(UniversalRenderPipelineAsset.Create(UniversalRenderPipelineAsset.CreateRendererAsset(pathName, RendererType._2DRenderer)), pathName);
 }