using UnityEngine; using System.Collections.Generic; #if UPPipeline using UnityEngine.Rendering.Universal; #endif using Gaia.Pipeline; namespace Gaia.Pipeline.URP { public static class GaiaURPRuntimeUtils { /// /// Configures reflections to LWRP /// public static void ConfigureReflectionProbes() { ReflectionProbe[] reflectionProbes = Object.FindObjectsOfType(); if (reflectionProbes != null) { foreach(ReflectionProbe probe in reflectionProbes) { if (probe.resolution > 512) { Debug.Log(probe.name + " This probes resolution is quite high and could cause performance issues in Lightweight Pipeline. Recommend lowing the resolution if you're targeting mobile platform"); } } } } /// /// Configures and setup the terrain /// /// public static void ConfigureTerrain(UnityPipelineProfile profile) { Terrain[] terrains = Terrain.activeTerrains; if (terrains != null) { foreach (Terrain terrain in terrains) { #if !UNITY_2019_2_OR_NEWER terrain.materialType = Terrain.MaterialType.Custom; #endif terrain.materialTemplate = profile.m_universalTerrainMaterial; } } } #if UPPipeline /// /// Sets the shadow distance in URP /// /// /// public static void SetShadowDistance(UniversalRenderPipelineAsset pipelineAsset, GaiaLightingProfileValues profileValues) { if (pipelineAsset == null || profileValues == null) { return; } pipelineAsset.shadowDistance = profileValues.m_shadowDistance; } /// /// Gets or creates UP camera data /// /// /// public static UniversalAdditionalCameraData GetUPCameraData(Camera camera) { if (camera == null) { return null; } UniversalAdditionalCameraData cameraData = camera.gameObject.GetComponent(); if (cameraData == null) { cameraData = camera.gameObject.AddComponent(); } return cameraData; } /// /// Clears URP camera data in the scene /// /// public static void ClearUPCameraData(UniversalAdditionalCameraData[] cameraDatas) { if (cameraDatas.Length < 1) { return; } foreach (var data in cameraDatas) { GameObject.DestroyImmediate(data); } } /// /// Gets or creates UP Light data /// /// /// public static UniversalAdditionalLightData GetUPLightData(Light light) { if (light == null) { return null; } UniversalAdditionalLightData lightData = light.GetComponent(); if (lightData == null) { lightData = light.gameObject.AddComponent(); } return lightData; } /// /// Clears URP light data in the scene /// /// public static void ClearUPLightData(UniversalAdditionalLightData[] lightDatas) { if (lightDatas.Length < 1) { return; } foreach (var data in lightDatas) { GameObject.DestroyImmediate(data); } } #endif } }