using System; namespace UnityEngine.Rendering.HighDefinition { /// Utilities for . public static class CameraSettingsUtilities { /// Applies to . /// Camera to update. /// Settings to apply. public static void ApplySettings(this Camera cam, CameraSettings settings) { var add = cam.GetComponent() ?? cam.gameObject.AddComponent(); // FrameSettings add.defaultFrameSettings = settings.defaultFrameSettings; add.renderingPathCustomFrameSettings = settings.renderingPathCustomFrameSettings; add.renderingPathCustomFrameSettingsOverrideMask = settings.renderingPathCustomFrameSettingsOverrideMask; // Frustum cam.nearClipPlane = settings.frustum.nearClipPlane; cam.farClipPlane = settings.frustum.farClipPlane; cam.fieldOfView = settings.frustum.fieldOfView; cam.aspect = settings.frustum.aspect; cam.projectionMatrix = settings.frustum.GetUsedProjectionMatrix(); // Culling cam.useOcclusionCulling = settings.culling.useOcclusionCulling; cam.cullingMask = settings.culling.cullingMask; cam.overrideSceneCullingMask = settings.culling.sceneCullingMaskOverride; // Buffer clearing add.clearColorMode = settings.bufferClearing.clearColorMode; add.backgroundColorHDR = settings.bufferClearing.backgroundColorHDR; add.clearDepth = settings.bufferClearing.clearDepth; // Volumes add.volumeLayerMask = settings.volumes.layerMask; add.volumeAnchorOverride = settings.volumes.anchorOverride; // HD Specific add.customRenderingSettings = settings.customRenderingSettings; add.flipYMode = settings.flipYMode; add.invertFaceCulling = settings.invertFaceCulling; add.probeCustomFixedExposure = settings.probeRangeCompressionFactor; } /// Applies to . /// Camera to update. /// Settings to apply. public static void ApplySettings(this Camera cam, CameraPositionSettings settings) { // Position cam.transform.position = settings.position; cam.transform.rotation = settings.rotation; cam.worldToCameraMatrix = settings.GetUsedWorldToCameraMatrix(); } } }