using System;
using Cpp2IlInjected;

namespace UnityEngine.PostProcessing
{
	// Token: 0x020005B9 RID: 1465
	[Token(Token = "0x20005B9")]
	[Serializable]
	public class ScreenSpaceReflectionModel : PostProcessingModel
	{
		// Token: 0x17000385 RID: 901
		// (get) Token: 0x0600309C RID: 12444 RVA: 0x000020D3 File Offset: 0x000002D3
		// (set) Token: 0x0600309D RID: 12445 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000385")]
		public ScreenSpaceReflectionModel.Settings settings
		{
			[Token(Token = "0x600309C")]
			[Address(RVA = "0x5178B0", Offset = "0x5168B0", VA = "0x1805178B0")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
			[Token(Token = "0x600309D")]
			[Address(RVA = "0x5178E0", Offset = "0x5168E0", VA = "0x1805178E0")]
			set
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x0600309E RID: 12446 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600309E")]
		[Address(RVA = "0x517820", Offset = "0x516820", VA = "0x180517820", Slot = "4")]
		public override void Reset()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600309F RID: 12447 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600309F")]
		[Address(RVA = "0x517860", Offset = "0x516860", VA = "0x180517860")]
		public ScreenSpaceReflectionModel()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0400398B RID: 14731
		[FieldOffset(Offset = "0x18")]
		[Token(Token = "0x400398B")]
		[SerializeField]
		private ScreenSpaceReflectionModel.Settings m_Settings;

		// Token: 0x020005BA RID: 1466
		[Token(Token = "0x20005BA")]
		public enum SSRResolution
		{
			// Token: 0x0400398D RID: 14733
			[Token(Token = "0x400398D")]
			High,
			// Token: 0x0400398E RID: 14734
			[Token(Token = "0x400398E")]
			Low = 2
		}

		// Token: 0x020005BB RID: 1467
		[Token(Token = "0x20005BB")]
		public enum SSRReflectionBlendType
		{
			// Token: 0x04003990 RID: 14736
			[Token(Token = "0x4003990")]
			PhysicallyBased,
			// Token: 0x04003991 RID: 14737
			[Token(Token = "0x4003991")]
			Additive
		}

		// Token: 0x020005BC RID: 1468
		[Token(Token = "0x20005BC")]
		[Serializable]
		public struct IntensitySettings
		{
			// Token: 0x04003992 RID: 14738
			[FieldOffset(Offset = "0x0")]
			[Token(Token = "0x4003992")]
			[Tooltip("Nonphysical multiplier for the SSR reflections. 1.0 is physically based.")]
			[Range(0f, 0f)]
			public float reflectionMultiplier;

			// Token: 0x04003993 RID: 14739
			[FieldOffset(Offset = "0x4")]
			[Token(Token = "0x4003993")]
			[Tooltip("How far away from the maxDistance to begin fading SSR.")]
			[Range(0f, 1000f)]
			public float fadeDistance;

			// Token: 0x04003994 RID: 14740
			[FieldOffset(Offset = "0x8")]
			[Token(Token = "0x4003994")]
			[Tooltip("Amplify Fresnel fade out. Increase if floor reflections look good close to the surface and bad farther 'under' the floor.")]
			[Range(0f, 1f)]
			public float fresnelFade;

			// Token: 0x04003995 RID: 14741
			[FieldOffset(Offset = "0xC")]
			[Token(Token = "0x4003995")]
			[Tooltip("Higher values correspond to a faster Fresnel fade as the reflection changes from the grazing angle.")]
			[Range(0.1f, 10f)]
			public float fresnelFadePower;
		}

		// Token: 0x020005BD RID: 1469
		[Token(Token = "0x20005BD")]
		[Serializable]
		public struct ReflectionSettings
		{
			// Token: 0x04003996 RID: 14742
			[FieldOffset(Offset = "0x0")]
			[Token(Token = "0x4003996")]
			[Tooltip("How the reflections are blended into the render.")]
			public ScreenSpaceReflectionModel.SSRReflectionBlendType blendType;

			// Token: 0x04003997 RID: 14743
			[FieldOffset(Offset = "0x4")]
			[Token(Token = "0x4003997")]
			[Tooltip("Half resolution SSRR is much faster, but less accurate.")]
			public ScreenSpaceReflectionModel.SSRResolution reflectionQuality;

			// Token: 0x04003998 RID: 14744
			[FieldOffset(Offset = "0x8")]
			[Token(Token = "0x4003998")]
			[Tooltip("Maximum reflection distance in world units.")]
			[Range(0.1f, 300f)]
			public float maxDistance;

			// Token: 0x04003999 RID: 14745
			[FieldOffset(Offset = "0xC")]
			[Token(Token = "0x4003999")]
			[Tooltip("Max raytracing length.")]
			[Range(16f, 1024f)]
			public int iterationCount;

			// Token: 0x0400399A RID: 14746
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x400399A")]
			[Range(1f, 16f)]
			[Tooltip("Log base 2 of ray tracing coarse step size. Higher traces farther, lower gives better quality silhouettes.")]
			public int stepSize;

			// Token: 0x0400399B RID: 14747
			[FieldOffset(Offset = "0x14")]
			[Token(Token = "0x400399B")]
			[Tooltip("Typical thickness of columns, walls, furniture, and other objects that reflection rays might pass behind.")]
			[Range(0.01f, 10f)]
			public float widthModifier;

			// Token: 0x0400399C RID: 14748
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x400399C")]
			[Range(0.1f, 8f)]
			[Tooltip("Blurriness of reflections.")]
			public float reflectionBlur;

			// Token: 0x0400399D RID: 14749
			[FieldOffset(Offset = "0x1C")]
			[Token(Token = "0x400399D")]
			[Tooltip("Disable for a performance gain in scenes where most glossy objects are horizontal, like floors, water, and tables. Leave on for scenes with glossy vertical objects.")]
			public bool reflectBackfaces;
		}

		// Token: 0x020005BE RID: 1470
		[Token(Token = "0x20005BE")]
		[Serializable]
		public struct ScreenEdgeMask
		{
			// Token: 0x0400399E RID: 14750
			[FieldOffset(Offset = "0x0")]
			[Token(Token = "0x400399E")]
			[Range(0f, 1f)]
			[Tooltip("Higher = fade out SSRR near the edge of the screen so that reflections don't pop under camera motion.")]
			public float intensity;
		}

		// Token: 0x020005BF RID: 1471
		[Token(Token = "0x20005BF")]
		[Serializable]
		public struct Settings
		{
			// Token: 0x17000386 RID: 902
			// (get) Token: 0x060030A0 RID: 12448 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x17000386")]
			public static ScreenSpaceReflectionModel.Settings defaultSettings
			{
				[Token(Token = "0x60030A0")]
				[Address(RVA = "0x69D150", Offset = "0x69C150", VA = "0x18069D150")]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x0400399F RID: 14751
			[FieldOffset(Offset = "0x0")]
			[Token(Token = "0x400399F")]
			public ScreenSpaceReflectionModel.ReflectionSettings reflection;

			// Token: 0x040039A0 RID: 14752
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x40039A0")]
			public ScreenSpaceReflectionModel.IntensitySettings intensity;

			// Token: 0x040039A1 RID: 14753
			[FieldOffset(Offset = "0x30")]
			[Token(Token = "0x40039A1")]
			public ScreenSpaceReflectionModel.ScreenEdgeMask screenEdgeMask;
		}
	}
}
