// [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");
            }
        }
        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
        }