您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
191 行
7.9 KiB
191 行
7.9 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using Unity.Collections;
|
|
using UnityEngine.Scripting.APIUpdating;
|
|
|
|
namespace UnityEngine.Rendering.Universal
|
|
{
|
|
[MovedFrom("UnityEngine.Rendering.LWRP")] public enum MixedLightingSetup
|
|
{
|
|
None,
|
|
ShadowMask,
|
|
Subtractive,
|
|
};
|
|
|
|
[MovedFrom("UnityEngine.Rendering.LWRP")] public struct RenderingData
|
|
{
|
|
public CullingResults cullResults;
|
|
public CameraData cameraData;
|
|
public LightData lightData;
|
|
public ShadowData shadowData;
|
|
public PostProcessingData postProcessingData;
|
|
public bool supportsDynamicBatching;
|
|
public PerObjectData perObjectData;
|
|
public bool killAlphaInFinalBlit;
|
|
}
|
|
|
|
[MovedFrom("UnityEngine.Rendering.LWRP")] public struct LightData
|
|
{
|
|
public int mainLightIndex;
|
|
public int additionalLightsCount;
|
|
public int maxPerObjectAdditionalLightsCount;
|
|
public NativeArray<VisibleLight> visibleLights;
|
|
public bool shadeAdditionalLightsPerVertex;
|
|
public bool supportsMixedLighting;
|
|
}
|
|
|
|
[MovedFrom("UnityEngine.Rendering.LWRP")] public struct CameraData
|
|
{
|
|
public Camera camera;
|
|
public RenderTextureDescriptor cameraTargetDescriptor;
|
|
public float renderScale;
|
|
public bool isSceneViewCamera;
|
|
public bool isDefaultViewport;
|
|
public bool isHdrEnabled;
|
|
public bool requiresDepthTexture;
|
|
public bool requiresOpaqueTexture;
|
|
|
|
public SortingCriteria defaultOpaqueSortFlags;
|
|
|
|
public bool isStereoEnabled;
|
|
|
|
public float maxShadowDistance;
|
|
public bool postProcessEnabled;
|
|
|
|
#if POST_PROCESSING_STACK_2_0_0_OR_NEWER
|
|
[Obsolete("The use of the Post-processing Stack V2 is deprecated in the Universal Render Pipeline. Use the builtin post-processing effects instead.")]
|
|
public UnityEngine.Rendering.PostProcessing.PostProcessLayer postProcessLayer;
|
|
#endif
|
|
|
|
public IEnumerator<Action<RenderTargetIdentifier, CommandBuffer>> captureActions;
|
|
|
|
public LayerMask volumeLayerMask;
|
|
public Transform volumeTrigger;
|
|
|
|
public bool isStopNaNEnabled;
|
|
public bool isDitheringEnabled;
|
|
public AntialiasingMode antialiasing;
|
|
public AntialiasingQuality antialiasingQuality;
|
|
}
|
|
|
|
[MovedFrom("UnityEngine.Rendering.LWRP")] public struct ShadowData
|
|
{
|
|
public bool supportsMainLightShadows;
|
|
public bool requiresScreenSpaceShadowResolve;
|
|
public int mainLightShadowmapWidth;
|
|
public int mainLightShadowmapHeight;
|
|
public int mainLightShadowCascadesCount;
|
|
public Vector3 mainLightShadowCascadesSplit;
|
|
public bool supportsAdditionalLightShadows;
|
|
public int additionalLightsShadowmapWidth;
|
|
public int additionalLightsShadowmapHeight;
|
|
public bool supportsSoftShadows;
|
|
public int shadowmapDepthBufferBits;
|
|
public List<Vector4> bias;
|
|
}
|
|
|
|
public struct PostProcessingData
|
|
{
|
|
public ColorGradingMode gradingMode;
|
|
public int lutSize;
|
|
}
|
|
|
|
public static class ShaderKeywordStrings
|
|
{
|
|
public static readonly string MainLightShadows = "_MAIN_LIGHT_SHADOWS";
|
|
public static readonly string MainLightShadowCascades = "_MAIN_LIGHT_SHADOWS_CASCADE";
|
|
public static readonly string AdditionalLightsVertex = "_ADDITIONAL_LIGHTS_VERTEX";
|
|
public static readonly string AdditionalLightsPixel = "_ADDITIONAL_LIGHTS";
|
|
public static readonly string AdditionalLightShadows = "_ADDITIONAL_LIGHT_SHADOWS";
|
|
public static readonly string SoftShadows = "_SHADOWS_SOFT";
|
|
public static readonly string MixedLightingSubtractive = "_MIXED_LIGHTING_SUBTRACTIVE";
|
|
|
|
public static readonly string DepthNoMsaa = "_DEPTH_NO_MSAA";
|
|
public static readonly string DepthMsaa2 = "_DEPTH_MSAA_2";
|
|
public static readonly string DepthMsaa4 = "_DEPTH_MSAA_4";
|
|
|
|
public static readonly string LinearToSRGBConversion = "_LINEAR_TO_SRGB_CONVERSION";
|
|
public static readonly string KillAlpha = "_KILL_ALPHA";
|
|
|
|
public static readonly string SmaaLow = "_SMAA_PRESET_LOW";
|
|
public static readonly string SmaaMedium = "_SMAA_PRESET_MEDIUM";
|
|
public static readonly string SmaaHigh = "_SMAA_PRESET_HIGH";
|
|
public static readonly string PaniniGeneric = "_GENERIC";
|
|
public static readonly string PaniniUnitDistance = "_UNIT_DISTANCE";
|
|
public static readonly string BloomLQ = "_BLOOM_LQ";
|
|
public static readonly string BloomHQ = "_BLOOM_HQ";
|
|
public static readonly string BloomLQDirt = "_BLOOM_LQ_DIRT";
|
|
public static readonly string BloomHQDirt = "_BLOOM_HQ_DIRT";
|
|
public static readonly string UseRGBM = "_USE_RGBM";
|
|
public static readonly string Distortion = "_DISTORTION";
|
|
public static readonly string ChromaticAberration = "_CHROMATIC_ABERRATION";
|
|
public static readonly string HDRGrading = "_HDR_GRADING";
|
|
public static readonly string TonemapACES = "_TONEMAP_ACES";
|
|
public static readonly string TonemapNeutral = "_TONEMAP_NEUTRAL";
|
|
public static readonly string FilmGrain = "_FILM_GRAIN";
|
|
public static readonly string Fxaa = "_FXAA";
|
|
public static readonly string Dithering = "_DITHERING";
|
|
|
|
public static readonly string HighQualitySampling = "_HIGH_QUALITY_SAMPLING";
|
|
}
|
|
|
|
public sealed partial class UniversalRenderPipeline
|
|
{
|
|
static List<Vector4> m_ShadowBiasData = new List<Vector4>();
|
|
|
|
public static bool IsStereoEnabled(Camera camera)
|
|
{
|
|
if (camera == null)
|
|
throw new ArgumentNullException("camera");
|
|
|
|
bool isGameCamera = camera.cameraType == CameraType.Game || camera.cameraType == CameraType.VR;
|
|
return XRGraphics.enabled && isGameCamera && (camera.stereoTargetEye == StereoTargetEyeMask.Both);
|
|
}
|
|
|
|
void SortCameras(Camera[] cameras)
|
|
{
|
|
Array.Sort(cameras, (lhs, rhs) => (int)(lhs.depth - rhs.depth));
|
|
}
|
|
|
|
static RenderTextureDescriptor CreateRenderTextureDescriptor(Camera camera, float renderScale,
|
|
bool isStereoEnabled, bool isHdrEnabled, int msaaSamples, bool needsAlpha)
|
|
{
|
|
RenderTextureDescriptor desc;
|
|
RenderTextureFormat renderTextureFormatDefault = RenderTextureFormat.Default;
|
|
|
|
if (isStereoEnabled)
|
|
{
|
|
desc = XRGraphics.eyeTextureDesc;
|
|
renderTextureFormatDefault = desc.colorFormat;
|
|
}
|
|
else
|
|
{
|
|
desc = new RenderTextureDescriptor(camera.pixelWidth, camera.pixelHeight);
|
|
desc.width = (int)((float)desc.width * renderScale);
|
|
desc.height = (int)((float)desc.height * renderScale);
|
|
}
|
|
|
|
bool use32BitHDR = !needsAlpha && RenderingUtils.SupportsRenderTextureFormat(RenderTextureFormat.RGB111110Float);
|
|
RenderTextureFormat hdrFormat = (use32BitHDR) ? RenderTextureFormat.RGB111110Float : RenderTextureFormat.DefaultHDR;
|
|
if (camera.targetTexture != null)
|
|
{
|
|
desc.colorFormat = camera.targetTexture.descriptor.colorFormat;
|
|
desc.depthBufferBits = camera.targetTexture.descriptor.depthBufferBits;
|
|
desc.msaaSamples = camera.targetTexture.descriptor.msaaSamples;
|
|
desc.sRGB = camera.targetTexture.descriptor.sRGB;
|
|
}
|
|
else
|
|
{
|
|
desc.colorFormat = isHdrEnabled ? hdrFormat : renderTextureFormatDefault;
|
|
desc.depthBufferBits = 32;
|
|
desc.msaaSamples = msaaSamples;
|
|
desc.sRGB = (QualitySettings.activeColorSpace == ColorSpace.Linear);
|
|
}
|
|
|
|
desc.enableRandomWrite = false;
|
|
desc.bindMS = false;
|
|
desc.useDynamicScale = camera.allowDynamicResolution;
|
|
return desc;
|
|
}
|
|
}
|
|
}
|