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();
    }
Beispiel #2
0
    public void GPULM_BakeSceneWithOnlyBlackLight_DoesNotFallbackToCPU()
    {
        // Open the initial scene
        EditorSceneManager.OpenScene("Assets/Tests/Editor/Tests_Unit_Editmode/GPU-Rebake.unity");

        // Clear baked data and cache
        clearAll();

        // VerifySettings are correct
        SetupLightingSettings();

        // Get the settings to be able to check for a fallback to CPU
        LightingSettings lightingSettings = null;

        Lightmapping.TryGetLightingSettings(out lightingSettings);
        Assert.IsTrue(lightingSettings != null, "Lighting settings are available.");

        // Get the light
        Light light = GameObject.Find("Directional Light").GetComponent <Light>();

        Assert.IsNotNull(light);

        // Set the light color
        light.color = Color.black;

        // Bake the scene GI
        Lightmapping.Bake();

        Assert.IsTrue(lightingSettings.lightmapper == LightingSettings.Lightmapper.ProgressiveGPU, "Using GPU Lightmapper after initial bake.");

        clearAll();
    }
    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();
    }
Beispiel #4
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();
    }
Beispiel #5
0
 private static SceneProcessResult OnProcess(Scene scene)
 {
     if (!Lightmapping.TryGetLightingSettings(out _))
     {
         return(SceneProcessResult.NOT_CHANGE);
     }
     Lightmapping.lightingSettings = null;
     return(SceneProcessResult.CHANGE);
 }
Beispiel #6
0
    protected static void SetupLightingSettings()
    {
        LightingSettings lightingSettings = null;

        Lightmapping.TryGetLightingSettings(out lightingSettings);
        Assert.IsTrue(lightingSettings != null, "Lighting settings are available.");
        lightingSettings.lightmapper    = LightingSettings.Lightmapper.ProgressiveGPU;
        lightingSettings.prioritizeView = true;
        Assert.IsTrue(lightingSettings.lightmapper == LightingSettings.Lightmapper.ProgressiveGPU, "Using GPU Lightmapper.");
        Assert.IsTrue(lightingSettings.prioritizeView, "Using Progressive.");
    }
    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();
    }
    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"));
    }
    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();
    }
    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();
    }