From 32b728bd05442a3239f86a20218330671fc027cd Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 31 Aug 2021 21:12:10 +0900 Subject: [PATCH] Add Urp/UrpPipelineTypes.cs --- .../ScriptedImporter/GlbScriptedImporter.cs | 2 +- .../ScriptedImporter/GltfScriptedImporter.cs | 2 +- .../GltfScriptedImporterBase.cs | 25 ++++++++-------- .../ZipArchivedGltfScriptedImporter.cs | 2 +- .../IO/MaterialIO/URP/UrpPipelineTypes.cs | 12 ++++++++ .../MaterialIO/URP/UrpPipelineTypes.cs.meta | 11 +++++++ .../ScriptedImporter/VrmScriptedImporter.cs | 4 +-- .../VrmScriptedImporterImpl.cs | 29 +++++++++++-------- 8 files changed, 58 insertions(+), 29 deletions(-) create mode 100644 Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/URP/UrpPipelineTypes.cs create mode 100644 Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/URP/UrpPipelineTypes.cs.meta diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporter.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporter.cs index cfafbec45..3c952fc04 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporter.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporter.cs @@ -12,7 +12,7 @@ namespace UniGLTF { public override void OnImportAsset(AssetImportContext ctx) { - Import(this, ctx, m_reverseAxis.ToAxes(), m_useUrpMaterial); + Import(this, ctx, m_reverseAxis.ToAxes(), m_renderPipeline); } } } diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporter.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporter.cs index 97a08b914..39d8914ba 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporter.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporter.cs @@ -12,7 +12,7 @@ namespace UniGLTF { public override void OnImportAsset(AssetImportContext ctx) { - Import(this, ctx, m_reverseAxis.ToAxes(), m_useUrpMaterial); + Import(this, ctx, m_reverseAxis.ToAxes(), m_renderPipeline); } } } diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterBase.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterBase.cs index b1bf91d3b..54a5c72dc 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterBase.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterBase.cs @@ -1,8 +1,6 @@ using UnityEngine; -using UnityEditor; using System.Linq; using VRMShaders; -using UnityEngine.Rendering; #if UNITY_2020_2_OR_NEWER using UnityEditor.AssetImporters; #else @@ -21,17 +19,20 @@ namespace UniGLTF public ScriptedImporterAxes m_reverseAxis = default; [SerializeField] - public bool m_useUrpMaterial; + public RenderPipelineTypes m_renderPipeline; - static IMaterialDescriptorGenerator GetMaterialGenerator(bool useUrpMaterial) + static IMaterialDescriptorGenerator GetMaterialGenerator(RenderPipelineTypes renderPipeline) { - if (useUrpMaterial) + switch (renderPipeline) { - return new GltfUrpMaterialDescriptorGenerator(); - } - else - { - return new GltfMaterialDescriptorGenerator(); + case RenderPipelineTypes.Builtin: + return new GltfUrpMaterialDescriptorGenerator(); + + case RenderPipelineTypes.UniversalRenderPipeline: + return new GltfMaterialDescriptorGenerator(); + + default: + throw new System.NotImplementedException(); } } @@ -41,7 +42,7 @@ namespace UniGLTF /// /// /// - protected static void Import(ScriptedImporter scriptedImporter, AssetImportContext context, Axes reverseAxis, bool useUrpMaterial) + protected static void Import(ScriptedImporter scriptedImporter, AssetImportContext context, Axes reverseAxis, RenderPipelineTypes renderPipeline) { #if VRM_DEVELOP Debug.Log("OnImportAsset to " + scriptedImporter.assetPath); @@ -62,7 +63,7 @@ namespace UniGLTF .Where(x => x.Value != null) .ToDictionary(kv => new SubAssetKey(kv.Value.GetType(), kv.Key.name), kv => kv.Value); - IMaterialDescriptorGenerator materialGenerator = GetMaterialGenerator(useUrpMaterial); + IMaterialDescriptorGenerator materialGenerator = GetMaterialGenerator(renderPipeline); using (var loader = new ImporterContext(data, extractedObjects, materialGenerator: materialGenerator)) { diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporter.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporter.cs index 0ed65d3f7..518019a0c 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporter.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporter.cs @@ -14,7 +14,7 @@ namespace UniGLTF { public override void OnImportAsset(AssetImportContext ctx) { - Import(this, ctx, m_reverseAxis.ToAxes(), m_useUrpMaterial); + Import(this, ctx, m_reverseAxis.ToAxes(), m_renderPipeline); } } } diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/URP/UrpPipelineTypes.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/URP/UrpPipelineTypes.cs new file mode 100644 index 000000000..cbcb80e40 --- /dev/null +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/URP/UrpPipelineTypes.cs @@ -0,0 +1,12 @@ +namespace UniGLTF +{ + /// + /// TODO: HDRP ? + /// TODO: UserCustom ? + /// + public enum RenderPipelineTypes + { + Builtin, + UniversalRenderPipeline, + } +} diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/URP/UrpPipelineTypes.cs.meta b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/URP/UrpPipelineTypes.cs.meta new file mode 100644 index 000000000..6f9f7c807 --- /dev/null +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/URP/UrpPipelineTypes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c2ddf76db17176b4bb4480924f97c9d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM10/Editor/ScriptedImporter/VrmScriptedImporter.cs b/Assets/VRM10/Editor/ScriptedImporter/VrmScriptedImporter.cs index d0414cc82..af17de1ff 100644 --- a/Assets/VRM10/Editor/ScriptedImporter/VrmScriptedImporter.cs +++ b/Assets/VRM10/Editor/ScriptedImporter/VrmScriptedImporter.cs @@ -15,11 +15,11 @@ namespace UniVRM10 public bool MigrateToVrm1 = default; [SerializeField] - public bool UseUrp = default; + public UniGLTF.RenderPipelineTypes RenderPipeline = default; public override void OnImportAsset(AssetImportContext ctx) { - VrmScriptedImporterImpl.Import(this, ctx, MigrateToVrm1, UseUrp); + VrmScriptedImporterImpl.Import(this, ctx, MigrateToVrm1, RenderPipeline); } } } diff --git a/Assets/VRM10/Editor/ScriptedImporter/VrmScriptedImporterImpl.cs b/Assets/VRM10/Editor/ScriptedImporter/VrmScriptedImporterImpl.cs index 20e67c7a4..4878c1493 100644 --- a/Assets/VRM10/Editor/ScriptedImporter/VrmScriptedImporterImpl.cs +++ b/Assets/VRM10/Editor/ScriptedImporter/VrmScriptedImporterImpl.cs @@ -1,9 +1,7 @@ using System.Linq; using UnityEngine; using UniGLTF; -using System.IO; using System; -using UniJSON; using VRMShaders; #if UNITY_2020_2_OR_NEWER using UnityEditor.AssetImporters; @@ -16,7 +14,22 @@ namespace UniVRM10 { public static class VrmScriptedImporterImpl { - public static void Import(ScriptedImporter scriptedImporter, AssetImportContext context, bool migrateToVrm1, bool useUrp) + static IMaterialDescriptorGenerator GetMaterialDescriptorGenerator(RenderPipelineTypes renderPipeline) + { + switch (renderPipeline) + { + case RenderPipelineTypes.Builtin: + return new Vrm10MaterialDescriptorGenerator(); + + case RenderPipelineTypes.UniversalRenderPipeline: + return new Vrm10UrpMaterialDescriptorGenerator(); + + default: + throw new NotImplementedException(); + } + } + + public static void Import(ScriptedImporter scriptedImporter, AssetImportContext context, bool migrateToVrm1, RenderPipelineTypes renderPipeline) { #if VRM_DEVELOP Debug.Log("OnImportAsset to " + scriptedImporter.assetPath); @@ -35,15 +48,7 @@ namespace UniVRM10 .Where(kv => kv.Value != null) .ToDictionary(kv => new SubAssetKey(kv.Value.GetType(), kv.Key.name), kv => kv.Value); - IMaterialDescriptorGenerator materialGenerator; - if (useUrp) - { - materialGenerator = new Vrm10UrpMaterialDescriptorGenerator(); - } - else - { - materialGenerator = new Vrm10MaterialDescriptorGenerator(); - } + var materialGenerator = GetMaterialDescriptorGenerator(renderPipeline); using (var loader = new Vrm10Importer(result.Data, result.Vrm, extractedObjects, materialGenerator: materialGenerator)) {