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
}
}