Exemplo n.º 1
0
 private static void BakeLightmap()
 {
     LightmapEditorSettings.maxAtlasHeight = 512;
     LightmapEditorSettings.maxAtlasSize   = 512;
     Lightmapping.Clear();
     Lightmapping.Bake();
 }
Exemplo n.º 2
0
 static void Init256()
 {
     LightmapEditorSettings.maxAtlasHeight = 256;
     LightmapEditorSettings.maxAtlasWidth  = 256;
     Lightmapping.Clear();
     Lightmapping.Bake();
 }
Exemplo n.º 3
0
 public static void ClearLightmappingData()
 {
     Debug.Log("Clear Lighting Data Asset ...");
     Lightmapping.ClearLightingDataAsset();
     Lightmapping.Clear();
     Debug.Log("Clear Lighting Data Asset Successfully!");
 }
    public IEnumerator TiledBaking_GPU_1k_lightmap_4_tiles_1_Empty_Tile()
    {
        EditorSceneManager.OpenScene("Assets/Tests/Editor/Tests_Unit_Editmode/ThreePlanes.unity", OpenSceneMode.Single);
        yield return(null);

        LightingSettings lightingSettings = null;

        Lightmapping.TryGetLightingSettings(out lightingSettings);

        Assert.That(lightingSettings, !Is.EqualTo(null), "LightingSettings is null");

        lightingSettings.tiledBaking = LightingSettings.TiledBaking.Quarter;

        Lightmapping.Clear();
        Lightmapping.Bake();

        LightmapConvergence lc = Lightmapping.GetLightmapConvergence(0);

        Assert.That(lc.GetTileCount(), Is.EqualTo(4), "Max tiling pass num should be 4");

        while (Lightmapping.isRunning)
        {
            yield return(null);
        }

        Lightmapping.Clear();
        Lightmapping.ClearLightingDataAsset();
    }
Exemplo n.º 5
0
    public IEnumerator BakingWithATrousFiltering_DoesNotFallback()
    {
        EditorSceneManager.OpenScene("Assets/Tests/Editor/Tests_Unit_Editmode/BakeATrous.unity", OpenSceneMode.Single);
        yield return(null);

        LightingSettings lightingSettings = null;

        Lightmapping.TryGetLightingSettings(out lightingSettings);

        Assert.That(lightingSettings, !Is.EqualTo(null), "LightingSettings is null");

        lightingSettings.lightmapper        = LightingSettings.Lightmapper.ProgressiveGPU;
        lightingSettings.mixedBakeMode      = MixedLightingMode.IndirectOnly;
        lightingSettings.directionalityMode = LightmapsMode.NonDirectional;

        // Activate A-Trous filtering
        lightingSettings.filterTypeIndirect = LightingSettings.FilterType.ATrous;

        Lightmapping.Clear();
        Lightmapping.Bake();

        // Check that we did not fallback to CPULM
        Assert.AreEqual(lightingSettings.lightmapper, LightingSettings.Lightmapper.ProgressiveGPU);

        Lightmapping.Clear();
        Lightmapping.ClearLightingDataAsset();
    }
Exemplo n.º 6
0
 public static void testBuildLightMap()
 {
     LightmapEditorSettings.maxAtlasHeight = 512;
     LightmapEditorSettings.maxAtlasWidth  = 512;
     Lightmapping.Clear();
     Lightmapping.Bake();
 }
    public IEnumerator TiledBaking_GPU_1k_lightmap_4_tiles()
    {
        EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Single);
        yield return(null);

        LightingSettings lightingSettings = null;

        Lightmapping.TryGetLightingSettings(out lightingSettings);

        Assert.That(lightingSettings, !Is.EqualTo(null), "LightingSettings is null");

        lightingSettings.tiledBaking        = LightingSettings.TiledBaking.Quarter;
        lightingSettings.lightmapResolution = 100;
        lightingSettings.lightmapMaxSize    = 1024;

        Lightmapping.Clear();
        Lightmapping.Bake();

        LightmapConvergence lc = Lightmapping.GetLightmapConvergence(0);

        Assert.That(lc.GetTileCount(), Is.EqualTo(4), "Max tiling pass num should be 4");

        while (Lightmapping.isRunning)
        {
            yield return(null);
        }

        Lightmapping.Clear();
        Lightmapping.ClearLightingDataAsset();
    }
Exemplo n.º 8
0
 static void Init512()
 {
     LightmapEditorSettings.maxAtlasHeight = 512;
     LightmapEditorSettings.maxAtlasWidth  = 512;
     Lightmapping.Clear();
     Lightmapping.Bake();
 }
Exemplo n.º 9
0
 static void Init1024()
 {
     LightmapEditorSettings.maxAtlasHeight = 1024;
     LightmapEditorSettings.maxAtlasWidth  = 1024;
     Lightmapping.Clear();
     Lightmapping.Bake();
 }
Exemplo n.º 10
0
        void DrawBakeButton()
        {
            GUILayout.FlexibleSpace();

            EditorGUILayout.BeginHorizontal();
            EditorGUI.BeginDisabledGroup(Lightmapping.isRunning);
            if (GUILayout.Button("Load All Scenes In Set", GUILayout.ExpandWidth(true)))
            {
                LoadScenesInBakingSet(GetCurrentBakingSet());
            }
            if (GUILayout.Button("Clear Loaded Scenes Data"))
            {
                Lightmapping.Clear();
            }
            EditorGUI.EndDisabledGroup();
            if (Lightmapping.isRunning)
            {
                if (GUILayout.Button("Cancel", GUILayout.ExpandWidth(true)))
                {
                    Lightmapping.Cancel();
                }
            }
            else
            {
                if (ButtonWithDropdownList(k_GenerateLighting, k_BakeOptionsText, BakeButtonCallback))
                {
                    BakeButtonCallback(0);
                }
            }
            EditorGUILayout.EndHorizontal();
        }
 void Bake()
 {
     LightmapEditorSettings.maxAtlasHeight = maxAtlasHeight;
     LightmapEditorSettings.maxAtlasWidth  = maxAtlasWidth;
     Lightmapping.Clear();
     Lightmapping.Bake();
 }
Exemplo n.º 12
0
 public static void ClearBakedData()
 {
     if (EditorUtility.DisplayDialog("Clear Baked Data", "Really clear baked lightmaps?", "Yes", "Cancel"))
     {
         Lightmapping.Clear();
         GenerateLightmapUVs();
     }
 }
    public void Setup()
    {
#if UNITY_EDITOR
        // Search for "InitTestSceneXXXXXXXX" generated by test runner and save the path in the EditorPrefs
        for (int i = 0; i < EditorSceneManagement.EditorSceneManager.sceneCount; ++i)
        {
            Scene scene = EditorSceneManagement.EditorSceneManager.GetSceneAt(i);
            if (scene.name.StartsWith("InitTestScene"))
            {
                EditorPrefs.SetString("InitTestScene", scene.path);
                break;
            }
        }

        string scenesWithAutoLightMap = "";

        // For each scene in the build settings, force build of the lightmaps if it has "DoLightmap" label.
        foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
        {
            SceneAsset sceneAsset = AssetDatabase.LoadAssetAtPath <SceneAsset>(scene.path);
            var        labels     = new System.Collections.Generic.List <string>(AssetDatabase.GetLabels(sceneAsset));

            if (labels.Contains("DoLightmap"))
            {
                EditorSceneManagement.EditorSceneManager.OpenScene(scene.path, EditorSceneManagement.OpenSceneMode.Single);

                Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.OnDemand;
                EditorSceneManagement.EditorSceneManager.SaveOpenScenes();

                Lightmapping.Clear();
                Lightmapping.Bake();

                scenesWithAutoLightMap += scene.path + ";";

                EditorSceneManagement.EditorSceneManager.SaveOpenScenes();

                Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.Iterative;
                EditorSceneManagement.EditorSceneManager.SaveOpenScenes();

                EditorSceneManagement.EditorSceneManager.NewScene(EditorSceneManagement.NewSceneSetup.EmptyScene);
            }
        }

        EditorPrefs.SetString("ScenesWithAutoLightMap", scenesWithAutoLightMap);

        // Re-open testrunner scene
        string initTestSceneString = EditorPrefs.GetString("InitTestScene");
        if (!string.IsNullOrEmpty(initTestSceneString))
        {
            EditorSceneManagement.EditorSceneManager.OpenScene(initTestSceneString, EditorSceneManagement.OpenSceneMode.Single);
        }
#endif
    }
Exemplo n.º 14
0
        void ProcessMaps()
        {
            var currentScene = EditorSceneManager.GetActiveScene().path;
            var buildScenes  = new List <EditorBuildSettingsScene>(EditorBuildSettings.scenes);

            buildScenes.Clear();
            try
            {
                foreach (var item in AssetDatabase.FindAssets("t:" + typeof(SceneAsset).Name))
                {
                    EditorUtility.DisplayProgressBar("Loading scenes", string.Empty, 5);
                    var asset = AssetDatabase.GUIDToAssetPath(item);
                    if (string.IsNullOrEmpty(asset))
                    {
                        continue;
                    }
                    buildScenes.Add(new EditorBuildSettingsScene(asset, true));
                }
            }
            finally
            {
                EditorUtility.ClearProgressBar();
            }
            try
            {
                EditorBuildSettings.scenes = buildScenes.ToArray();
                for (int i = 0; i < buildScenes.Count; i++)
                {
                    EditorUtility.DisplayProgressBar("Processing scene", buildScenes[i].path, Mathf.Clamp01((float)i / buildScenes.Count));
                    var scene = EditorSceneManager.OpenScene(buildScenes[i].path, OpenSceneMode.Single);
                    EditorSceneManager.SetActiveScene(scene);
                    foreach (var actor in FindObjectsOfType <Actor>())
                    {
                        actor.transform.position = actor.Location;
                        EditorUtility.SetDirty(actor);
                    }
                    RenderSettings.skybox                = null;
                    RenderSettings.ambientMode           = UnityEngine.Rendering.AmbientMode.Flat;
                    RenderSettings.defaultReflectionMode = UnityEngine.Rendering.DefaultReflectionMode.Custom;
                    Lightmapping.bakedGI    = false;
                    Lightmapping.realtimeGI = false;
                    Lightmapping.Clear();
                    EditorSceneManager.MarkSceneDirty(scene);
                    EditorSceneManager.SaveScene(scene);
                }
            }
            finally
            {
                EditorUtility.ClearProgressBar();
            }
            EditorSceneManager.OpenScene(currentScene, OpenSceneMode.Single);
        }
Exemplo n.º 15
0
 void bakeAllScenes()
 {
     scenesToBake = ReadNames();
     //m_baking = true;
     for (int i = 1; i < scenesToBake.Length; i++)
     {
         EditorApplication.OpenScene(scenesToBake[i]);
         setUpScene();
         Lightmapping.Clear();
         Lightmapping.Bake();
         EditorApplication.SaveScene(scenesToBake[i]);
     }
 }
Exemplo n.º 16
0
    public IEnumerator ActivateDirectLighting_DuringABake_DoesNotFallback()
    {
        EditorSceneManager.OpenScene("Assets/Tests/Editor/Tests_Unit_Editmode/BakeRestartScene.unity", OpenSceneMode.Single);
        yield return(null);

        LightingSettings lightingSettings = null;

        Lightmapping.TryGetLightingSettings(out lightingSettings);

        Assert.That(lightingSettings, !Is.EqualTo(null), "LightingSettings is null");

        lightingSettings.lightmapper        = LightingSettings.Lightmapper.ProgressiveGPU;
        lightingSettings.mixedBakeMode      = MixedLightingMode.IndirectOnly;
        lightingSettings.directionalityMode = LightmapsMode.NonDirectional;

        GameObject dirLightGO = GameObject.FindGameObjectsWithTag("TheLight")[0];

        dirLightGO.SetActive(false);
        Light light = dirLightGO.GetComponent(typeof(Light)) as Light;

        light.lightmapBakeType = LightmapBakeType.Baked;

        Lightmapping.Clear();
        Lightmapping.BakeAsync();

        foreach (bool b in RunABake(0.2f))
        {
            yield return(null);
        }

        // Make sure it is still baking before we
        // switch the light on and restart the bake
        Assert.IsTrue(Lightmapping.isBaking);

        // Activate the light, cause the bake to restart
        dirLightGO.SetActive(true);

        foreach (bool b in RunABake(0.2f))
        {
            yield return(null);
        }

        // Check that baking is still running
        Assert.IsTrue(Lightmapping.isBaking);
        // Check that we did not fallback to CPULM
        Assert.AreEqual(lightingSettings.lightmapper, LightingSettings.Lightmapper.ProgressiveGPU);

        Lightmapping.Cancel();
        Lightmapping.Clear();
        Lightmapping.ClearLightingDataAsset();
    }
    static void LightmapSaverEditorSimplePasses() {
        LightmapSaver[] dataHolders = GameObject.FindObjectsOfType<LightmapSaver>();
        for(int i = 0; i < dataHolders.Length; i++)
        {
            var holder = dataHolders[i];
            GameObject root = holder.gameObject;
            LightmapSaver pSaver = root.GetComponentInParent<LightmapSaver>();
            if(null != pSaver && pSaver.gameObject != root)
            {
                EditorUtility.DisplayDialog("错误", string.Format("游戏物体{0}的父节点{1}包含有 LightmapSaver 组件,这是不允许的。", root.gameObject.name, pSaver.gameObject.name),"确定");
                return;
            }
            var cSaver = root.GetComponentInChildren<LightmapSaver>();
            if(null != cSaver && cSaver.gameObject != root)
            {
                EditorUtility.DisplayDialog("错误", string.Format("游戏物体{0}的子节点{1}包含有 LightmapSaver 组件,这是不允许的。", root.gameObject.name, cSaver.gameObject.name), "确定");
                return;
            }

            Lightmapping.Clear();
            Lightmapping.Bake();//开始烘焙

            var renderers = root.GetComponentsInChildren<Renderer>(true);

            holder.RendererData = new LightmapSaver.LightmapRendererData[renderers.Length];
            for (int j = 0; j < renderers.Length; j++)
            {
                var renderer = renderers[j];
                holder.RendererData[j] = new LightmapSaver.LightmapRendererData();
                Debug.Log(renderer.gameObject.name);
                if (renderer.lightmapIndex == -1) continue;
                var rendererData = holder.RendererData[j];
                rendererData.renderer = renderer;
                rendererData.lightmapIndex = renderer.lightmapIndex;
                rendererData.lightmapScaleOffset = renderer.lightmapScaleOffset;
            }
            if(LightmapSettings.lightmaps.Length > 0)
            {
                holder.lightmapColor = LightmapSettings.lightmaps[0].lightmapColor;
                holder.lightmapDir = LightmapSettings.lightmaps[0].lightmapDir;
            }
            else
            {
                EditorUtility.DisplayDialog("烘焙失败", "没有成功生成光照贴图。", "确定");
                return;
            }
        }
        EditorUtility.DisplayDialog("烘焙成功", "烘焙已经完成。", "确定");
    }
Exemplo n.º 18
0
    void OpenBakeAndSave()
    {
        fileName = "Assets/Scenes/Levels/" + levelNames[levelIndex] + ".unity";

        EditorSceneManager.OpenScene(fileName);

        Lightmapping.Clear();

        //  LightmapEditorSettings.maxAtlasHeight = 4096;
        //  LightmapEditorSettings.maxAtlasWidth = 4096;

        Lightmapping.BakeAsync();

        startedBaking = true;
    }
Exemplo n.º 19
0
    // [MenuItem("Tool/BakeLightMap", priority = 1001)]
    public static void BakeLightMap(Lightmapping.OnCompletedFunction complete)
    {
        string tempPath = MapScenePath + "/Map";

        if (Directory.Exists(tempPath))
        {
            Directory.Delete(tempPath, true);
            AssetDatabase.Refresh();
        }
        //Debug.Log("giWorkflowMode :" + Lightmapping.giWorkflowMode);
        Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.OnDemand;
        Lightmapping.completed      = complete;
        Lightmapping.Clear();
        Lightmapping.Bake();
    }
Exemplo n.º 20
0
        void DrawBakeButton()
        {
            GUILayout.FlexibleSpace();

            EditorGUILayout.BeginHorizontal();
            EditorGUI.BeginDisabledGroup(Lightmapping.isRunning);
            if (GUILayout.Button("Load All Scenes In Set", GUILayout.ExpandWidth(true)))
            {
                LoadScenesInBakingSet(GetCurrentBakingSet());
            }
            if (GUILayout.Button("Clear Loaded Scenes Data"))
            {
                Lightmapping.Clear();
            }
            EditorGUI.EndDisabledGroup();
            if (Lightmapping.isRunning)
            {
                if (GUILayout.Button("Cancel", GUILayout.ExpandWidth(true)))
                {
                    Lightmapping.Cancel();
                }
            }
            else
            {
                if (GUILayout.Button("Generate Lighting", "DropDownButton", GUILayout.ExpandWidth(true)))
                {
                    var menu = new GenericMenu();
                    menu.AddItem(new GUIContent("Bake the set"), false, () =>
                    {
                        ProbeGIBaking.isBakingOnlyActiveScene = false;
                        BakeLightingForSet(GetCurrentBakingSet());
                    });
                    menu.AddItem(new GUIContent("Bake loaded scenes"), false, () =>
                    {
                        ProbeGIBaking.isBakingOnlyActiveScene = false;
                        Lightmapping.BakeAsync();
                    });
                    menu.AddItem(new GUIContent("Bake active scene"), false, () =>
                    {
                        ProbeGIBaking.isBakingOnlyActiveScene = true;
                        Lightmapping.BakeAsync();
                    });
                    menu.ShowAsContext();
                }
            }
            EditorGUILayout.EndHorizontal();
        }
Exemplo n.º 21
0
 static EditorHotkeysTracker()
 {
     SceneView.onSceneGUIDelegate += view =>
     {
         var e = Event.current;
         if (e != null && e.keyCode != KeyCode.None)
         {
             if (e.keyCode == KeyCode.B && e.shift)
             {
                 if (!Lightmapping.isRunning)
                 {
                     Lightmapping.BakeAsync();
                 }
             }
             if (e.keyCode == KeyCode.C && e.shift)
             {
                 if (Lightmapping.isRunning)
                 {
                     Lightmapping.Cancel();
                 }
             }
             if (e.keyCode == KeyCode.E && e.shift)
             {
                 if (!Lightmapping.isRunning)
                 {
                     Lightmapping.Clear();
                 }
             }
             if (e.keyCode == KeyCode.H && e.shift)
             {
                 EditorPrefs.SetInt(PlayerSettings.productName + SceneManager.GetActiveScene().name + "FirstTime", 0);
             }
             if (e.keyCode == KeyCode.F && e.alt && e.control)
             {
                 EditorApplication.ExecuteMenuItem("GameObject/Move To View");
             }
             if (e.keyCode == KeyCode.F && e.shift)
             {
                 EditorApplication.ExecuteMenuItem("Window/Lighting/Settings");
             }
             if (e.keyCode == KeyCode.E && e.shift)
             {
                 EditorApplication.ExecuteMenuItem("Lighting/Lighting Box");
             }
         }
     };
 }
Exemplo n.º 22
0
        //界面
        void OnGUI()
        {
            GUILayout.Label("BakeSettings");
            Width  = EditorGUILayout.IntField("MaxAtlasWidth:", Width);
            Height = EditorGUILayout.IntField("MaxAtlasHeight:", Height);

            if (GUILayout.Button("Bake"))
            {
                LightmapEditorSettings.maxAtlasWidth  = Width;
                LightmapEditorSettings.maxAtlasHeight = Height;

                Lightmapping.Clear();
                Lightmapping.Bake();

                Debuger.Log("烘培完成");
            }
        }
Exemplo n.º 23
0
    public IEnumerator Export_Training_Data_With_AO_And_Tiled_Baking_On()
    {
        EditorSceneManager.OpenScene("Assets/Tests/Editor/Tests_Unit_Editmode/ExtractTrainingDataScene.unity", OpenSceneMode.Single);
        yield return(null);

        LightingSettings lightingSettings = null;

        Lightmapping.TryGetLightingSettings(out lightingSettings);

        Assert.That(lightingSettings, !Is.EqualTo(null), "LightingSettings is null");

        lightingSettings.tiledBaking        = LightingSettings.TiledBaking.Quarter;
        lightingSettings.exportTrainingData = false;
        lightingSettings.ao = true;

        Lightmapping.Clear();
        Lightmapping.Bake();

        while (Lightmapping.isRunning)
        {
            yield return(null);
        }

        Assert.That(!System.IO.Directory.Exists("Assets/TrainingData/Lightmap-0"));
        Assert.That(!System.IO.File.Exists("Assets/TrainingData/Lightmap-0/indirect.exr"));

        Lightmapping.Clear();
        Lightmapping.ClearLightingDataAsset();
        lightingSettings.exportTrainingData = true;
        Lightmapping.Bake();

        while (Lightmapping.isRunning)
        {
            yield return(null);
        }

        Assert.That(System.IO.Directory.Exists("Assets/TrainingData/Lightmap-0"));
        Assert.That(System.IO.File.Exists("Assets/TrainingData/Lightmap-0/indirect.exr"));
        Assert.That(System.IO.File.Exists("Assets/TrainingData/Lightmap-0/ambient_occlusion.exr"));

        Lightmapping.Clear();
        Lightmapping.ClearLightingDataAsset();

        System.IO.Directory.Delete("Assets/TrainingData", true);
        Assert.That(!System.IO.Directory.Exists("Assets/TrainingData"));
    }
Exemplo n.º 24
0
    public IEnumerator ActivateAO_DuringABake_DoesNotFallback()
    {
        EditorSceneManager.OpenScene("Assets/Tests/Editor/Tests_Unit_Editmode/BakeRestartScene.unity", OpenSceneMode.Single);
        yield return(null);

        LightingSettings lightingSettings = null;

        Lightmapping.TryGetLightingSettings(out lightingSettings);

        Assert.That(lightingSettings, !Is.EqualTo(null), "LightingSettings is null");

        lightingSettings.lightmapper = LightingSettings.Lightmapper.ProgressiveGPU;
        GameObject dirLightGO = GameObject.FindGameObjectsWithTag("TheLight")[0];

        dirLightGO.SetActive(false);
        lightingSettings.ao = false;

        Lightmapping.Clear();
        Lightmapping.BakeAsync();

        foreach (bool b in RunABake(0.2f))
        {
            yield return(null);
        }

        // Make sure it is still baking before we
        // switch the AO on and restart the bake
        Assert.IsTrue(Lightmapping.isBaking);

        // Switch AO on, cause the bake to restart
        lightingSettings.ao = true;

        foreach (bool b in RunABake(0.2f))
        {
            yield return(null);
        }

        // Check that baking is still running
        Assert.IsTrue(Lightmapping.isBaking);
        // Check that we did not fallback to CPULM
        Assert.AreEqual(lightingSettings.lightmapper, LightingSettings.Lightmapper.ProgressiveGPU);

        Lightmapping.Cancel();
        Lightmapping.Clear();
        Lightmapping.ClearLightingDataAsset();
    }
Exemplo n.º 25
0
        public override void Execute(BuildContext context)
        {
            SceneSetup[] cacheSceneSetup = EditorSceneManager.GetSceneManagerSetup();

            SceneSetup[] setup = scenes.Select(path => new SceneSetup {
                path = path, isLoaded = true, isSubScene = false
            }).ToArray();
            setup[0].isActive = true;

            EditorSceneManager.RestoreSceneManagerSetup(setup);

            if (ClearBeforeBake)
            {
                Lightmapping.Clear();
            }
            Lightmapping.Bake();

            EditorSceneManager.RestoreSceneManagerSetup(cacheSceneSetup);
        }
Exemplo n.º 26
0
    /// <summary>
    /// クリアする
    /// </summary>
    void DoClear()
    {
        Lightmapping.ClearLightingDataAsset();
        Lightmapping.Clear();

        var instance = (LightmapSettingsPrefab)target;
        var go       = instance.gameObject;

        instance.baked            = default(bool);
        instance.unityVersion     = default(string);
        instance.lightmaps        = default(SerializableLightmapData[]);
        instance.lightmapsMode    = default(LightmapsMode);
        instance.lightProbes      = default(LightProbes);
        instance.reflectionProbes = default(Cubemap[]);
        instance.renderers        = default(SerializableRenderer[]);
        instance.SetupLightmap();

        DoApply(go);
    }
    public override void OnInspectorGUI()
    {
        var holder = target as LightmapHolder;

        if (holder.renderers != null && holder.scales != null)
        {
            EditorGUILayout.LabelField($"{holder.renderers.Length} renderers in {holder.scales.Length} indices");
        }
        if (GUILayout.Button("Clear Lightmaps"))
        {
            ClearHolder(holder);

            Lightmapping.Clear();
        }
        if (Lightmapping.isRunning)
        {
            EditorGUILayout.LabelField("Baking...");
        }
        else
        {
            if (GUILayout.Button("Bake"))
            {
                ClearHolder(holder);
                LightmapEditorSettings.maxAtlasSize  = MAX_SIZE;
                LightmapEditorSettings.filteringMode = LightmapEditorSettings.FilterMode.Auto;
                LightmapEditorSettings.lightmapper   = LightmapEditorSettings.Lightmapper.ProgressiveGPU;

                Lightmapping.BakeAsync();
            }
            if (GUILayout.Button("Combine Lightmaps"))
            {
                ClearHolder(holder);
                try
                {
                    Combine(holder);
                }
                finally
                {
                    EditorUtility.ClearProgressBar();
                }
            }
        }
    }
Exemplo n.º 28
0
 static void _Light()
 {
     SceneViewTools.ShowWindowButton(UnityTypes.UnityEditor_LightingWindow, "Lighting", EditorIcon.lighting);
     SceneViewTools.ShowWindowButton(UnityTypes.UnityEditor_LightingExplorerWindow, "Light Explorer", EditorIcon.lighting);
     if (Lightmapping.isRunning)
     {
         if (SceneViewTools.ShowSideButton("Cancel", EditorIcon.lighting))
         {
             Lightmapping.Cancel();
         }
     }
     else
     {
         if (SceneViewTools.ShowSideButton("Generate Lighting", EditorIcon.lighting))
         {
             Lightmapping.ClearLightingDataAsset();
             Lightmapping.Clear();
             Lightmapping.BakeAsync();
         }
     }
 }
Exemplo n.º 29
0
        /// <inheritdoc />
        protected override IEnumerator OnExecute(JobContext context)
        {
            _initialWorkflowMode = Lightmapping.giWorkflowMode;

            Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.OnDemand;

            if (ClearFirst)
            {
                Lightmapping.Clear();
            }

            IsSuccess = Lightmapping.BakeAsync();

            while (Lightmapping.isRunning)
            {
                yield return(null);
            }

            Lightmapping.giWorkflowMode = _initialWorkflowMode;

            LightingDataAssetPath = AssetDatabase.GetAssetPath(Lightmapping.lightingDataAsset);
        }
Exemplo n.º 30
0
    public IEnumerator Extract_AO_With_Tiled_Baking_On()
    {
        EditorSceneManager.OpenScene("Assets/Tests/Editor/Tests_Unit_Editmode/AOTestScene.unity", OpenSceneMode.Single);
        yield return(null);

        LightingSettings lightingSettings = null;

        Lightmapping.TryGetLightingSettings(out lightingSettings);

        Assert.That(lightingSettings, !Is.EqualTo(null), "LightingSettings is null");

        lightingSettings.tiledBaking = LightingSettings.TiledBaking.Quarter;
        lightingSettings.extractAO   = false;

        Lightmapping.Clear();
        Lightmapping.Bake();

        while (Lightmapping.isRunning)
        {
            yield return(null);
        }
        Assert.That(!System.IO.File.Exists("Assets/Tests/Editor/Tests_Unit_Editmode/AOTestScene/Lightmap-0_ao.exr"));

        Lightmapping.Clear();
        Lightmapping.ClearLightingDataAsset();
        lightingSettings.extractAO = true;
        Lightmapping.Bake();

        while (Lightmapping.isRunning)
        {
            yield return(null);
        }

        Assert.That(System.IO.File.Exists("Assets/Tests/Editor/Tests_Unit_Editmode/AOTestScene/Lightmap-0_ao.exr"));

        Lightmapping.Clear();
        Lightmapping.ClearLightingDataAsset();
    }