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) { TerrainHelper.SetTerrainMaterial(profile.m_universalTerrainMaterial, "Setup Default URP Terrain Shader?", "Do you want to set up the default Unity URP terrain shader on your existing terrains? This is recommended if you do not use any alternative terrain shader.", "Yes", "No"); } #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; #if UNITY_EDITOR UnityEditor.EditorUtility.SetDirty(pipelineAsset); #endif } /// /// 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 } }