// [MenuItem("Tools/glTF Test/Test")]
        // static void TestMenu() {
        //     var rp = RenderPipelineUtils.DetectRenderPipeline();
        //
        //     var setName = "glTF-Sample-Models";
        //
        //     switch (rp) {
        //         case RenderPipeline.Universal:
        //             setName = "glTF-Sample-Models-URP";
        //             break;
        //         case RenderPipeline.HighDefinition:
        //             setName = "glTF-Sample-Models-HDRP";
        //             break;
        //     }
        //
        //     var sampleSet = AssetDatabase.LoadAssetAtPath<SampleSet>( $"Packages/com.atteneder.gltf-graphics-tests/Runtime/SampleSets/{setName}.asset");
        //
        // }

        internal static void GenerateTests(bool createScenes = true)
        {
            var rp = RenderPipelineUtils.DetectRenderPipeline();

            var setName = "glTF-Sample-Models";

            switch (rp)
            {
            case RenderPipeline.Universal:
                setName = "glTF-Sample-Models-URP";
                break;

            case RenderPipeline.HighDefinition:
                setName = "glTF-Sample-Models-HDRP";
                break;
            }

            var sampleSet = AssetDatabase.LoadAssetAtPath <SampleSet>($"Packages/com.atteneder.gltf-graphics-tests/Runtime/SampleSets/{setName}.asset");

            sampleSet.CopyToStreamingAssets();

            if (createScenes)
            {
                sampleSet.CreateRenderTestScenes();
            }
        }
예제 #2
0
        static string GetExportSceneName()
        {
            switch (RenderPipelineUtils.DetectRenderPipeline())
            {
            case RenderPipeline.HighDefinition:
                return("ExportSceneHighDefinition");

            case RenderPipeline.Universal:
                return("ExportSceneUniversal");

            default:
                return("ExportSceneBuiltIn");
            }
        }
예제 #3
0
        public override void OnInspectorGUI()
        {
            SetupStyles();

            serializedTarget.Update();

            // Draw Title "MadGoat SSAA & Resolution Scale 2"
            EditorMacros.DrawTitle("MadGoat SSAA & Resolution Scale 2", styleTitle);

            var pipeline = RenderPipelineUtils.DetectPipeline();

            if (pipeline != RenderPipelineUtils.PipelineType.Unsupported)
            {
                // Draw Main Tab
                mainTab = GUILayout.Toolbar(mainTab, new string[] { "Super Sampling", "Screenshot", "Integrations & Misc" });
                EditorGUILayout.Separator();

                // Get current render resolution
                int width  = 0;
                int height = 0;
                if (targetAsSSAA.GetType() != typeof(MadGoatSSAA_VR))
                {
                    if (targetAsSSAA.RenderCamera && targetAsSSAA.RenderCamera.targetTexture)
                    {
                        width  = targetAsSSAA.RenderCamera.targetTexture.width;
                        height = targetAsSSAA.RenderCamera.targetTexture.height;
                    }
                }
                else
                {
#if UNITY_2017_2_OR_NEWER
                    width  = (int)(UnityEngine.XR.XRSettings.eyeTextureWidth * targetAsSSAA.InternalRenderMultiplier);
                    height = (int)(UnityEngine.XR.XRSettings.eyeTextureHeight * targetAsSSAA.InternalRenderMultiplier);
#else
                    width  = (int)(UnityEngine.VR.VRSettings.eyeTextureWidth * targetAsSSAA.InternalRenderMultiplier);
                    height = (int)(UnityEngine.VR.VRSettings.eyeTextureHeight * targetAsSSAA.InternalRenderMultiplier);
#endif
                }
                var resolution = width + " x " + height + " (x" + targetAsSSAA.InternalRenderMultiplier + ")";
                if (targetAsSSAA != null && targetAsSSAA.GetType() != typeof(MadGoatSSAA_VR) && targetAsSSAA.CurrentCamera != null && targetAsSSAA.CurrentCamera.targetTexture != null)
                {
                    resolution += " - Output is texture";
                }

                // Draw Content Header
                EditorMacros.DrawHeader(new string[] { "Super Sampling Settings - " + resolution, "Screenshot Settings", "Integrations" }[mainTab], styleHeader);

                // Draw Content
                switch (mainTab)
                {
                case 0:
                    DrawSectionSuperSampling();
                    break;

                case 1:
                    DrawSectionScreenshot();
                    break;

                case 2:
                    DrawSectionMisc();
                    break;
                }
            }
            else
            {
                EditorGUILayout.HelpBox("<b>Unsupported RenderPipeline detected.</b> \n\n" +
                                        "Pipeline Requirements: \n" +
                                        "   - HDRP: Unity 2019.1 or newer \n" +
                                        "   - HDRP + DXR: Unity 2019.3 or newer \n" +
                                        "   - Universal Pipeline: Unity 2019.3 or newer \n" +
                                        "   - Built-in: Unity 5 or newer", MessageType.Error);
            }

            // Draw Version Footer
            var versionStr = RenderPipelineUtils.DetectPipeline().ToString();
#if UNITY_2019_3_OR_NEWER && SSAA_HDRP && ENABLE_RAYTRACING
            versionStr += " <b>(DXR Enabled)</b>";
#endif
            EditorMacros.DrawVersion(SsaaUtils.ssaaversion, versionStr, styleNormal);

            // Apply modifications
            serializedTarget.ApplyModifiedProperties();
        }
        public static void CreateRenderTestScenes(this SampleSet sampleSet)
        {
#if GLTFAST_RENDER_TEST
            var allScenes     = new List <EditorBuildSettingsScene>();
            var allScenePaths = new List <string>();
            // Texture2D dummyReference = null;
            var setName = sampleSet.name;

            var renderPipeline = RenderPipelineUtils.DetectRenderPipeline();

            foreach (var item in sampleSet.GetItems())
            {
                var testScene = EditorSceneManager.OpenScene("Assets/Scenes/TestScene.unity");

                var settingsGameObject   = new GameObject("GraphicsTestSettings");
                var graphicsTestSettings = settingsGameObject.AddComponent <UniversalGraphicsTestSettings>();
                graphicsTestSettings.WaitFrames = renderPipeline == RenderPipeline.HighDefinition ? 2 : 0;

                var go        = new GameObject(item.name);
                var gltfAsset = go.AddComponent <GltfBoundsAsset>();

                if (string.IsNullOrEmpty(sampleSet.streamingAssetsPath))
                {
                    gltfAsset.url = Path.Combine(sampleSet.baseLocalPath, item.path);
                }
                else
                {
                    gltfAsset.url            = Path.Combine(sampleSet.streamingAssetsPath, item.path);
                    gltfAsset.streamingAsset = true;
                }
                gltfAsset.loadOnStartup     = false;
                gltfAsset.createBoxCollider = false;

                var sceneDirectory = CertifyDirectory(item.directoryParts, string.Format("Assets/Scenes/{0}", setName));
                var scenePath      = Path.Combine(sceneDirectory, item.name + ".unity");

                EditorSceneManager.SaveScene(testScene, scenePath);
                allScenes.Add(new EditorBuildSettingsScene(scenePath, true));
                allScenePaths.Add(scenePath);

                // CertifyDirectory(new[] { "ReferenceImages", "Linear", "OSXEditor", "Metal", "None" }, "Assets");
                // var referenceImagePath =
                //     Path.Combine(Application.dataPath, "ReferenceImages/Linear/OSXEditor/Metal/None", item.name + ".png");
                //
                // if (!File.Exists(referenceImagePath)) {
                //     Debug.LogFormat("Create dummy reference at path {0}", referenceImagePath);
                //     dummyReference = dummyReference!=null
                //         ? dummyReference
                //         : new Texture2D(
                //         graphicsTestSettings.ImageComparisonSettings.TargetWidth,
                //         graphicsTestSettings.ImageComparisonSettings.TargetHeight
                //     );
                //     File.WriteAllBytes(referenceImagePath, dummyReference.EncodeToPNG());
                // }
            }
            AssetDatabase.Refresh();
            EditorBuildSettings.scenes = allScenes.ToArray();

            Lightmapping.BakeMultipleScenes(allScenePaths.ToArray());
#else
            Debug.LogWarning("Please install the Graphics Test Framework for render tests to work.");
#endif
        }