summaryrefslogtreecommitdiff
path: root/UnityEngine.PostProcessing/AmbientOcclusionModel.cs
blob: c8fa258b1f22d002bcac4e8ffed54fb490d4592b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;

namespace UnityEngine.PostProcessing;

[Serializable]
public class AmbientOcclusionModel : PostProcessingModel
{
	public enum SampleCount
	{
		Lowest = 3,
		Low = 6,
		Medium = 10,
		High = 16
	}

	[Serializable]
	public struct Settings
	{
		[Range(0f, 4f)]
		[Tooltip("Degree of darkness produced by the effect.")]
		public float intensity;

		[Min(0.0001f)]
		[Tooltip("Radius of sample points, which affects extent of darkened areas.")]
		public float radius;

		[Tooltip("Number of sample points, which affects quality and performance.")]
		public SampleCount sampleCount;

		[Tooltip("Halves the resolution of the effect to increase performance at the cost of visual quality.")]
		public bool downsampling;

		[Tooltip("Forces compatibility with Forward rendered objects when working with the Deferred rendering path.")]
		public bool forceForwardCompatibility;

		[Tooltip("Enables the ambient-only mode in that the effect only affects ambient lighting. This mode is only available with the Deferred rendering path and HDR rendering.")]
		public bool ambientOnly;

		[Tooltip("Toggles the use of a higher precision depth texture with the forward rendering path (may impact performances). Has no effect with the deferred rendering path.")]
		public bool highPrecision;

		public static Settings defaultSettings
		{
			get
			{
				Settings result = default(Settings);
				result.intensity = 1f;
				result.radius = 0.3f;
				result.sampleCount = SampleCount.Medium;
				result.downsampling = true;
				result.forceForwardCompatibility = false;
				result.ambientOnly = false;
				result.highPrecision = false;
				return result;
			}
		}
	}

	[SerializeField]
	private Settings m_Settings = Settings.defaultSettings;

	public Settings settings
	{
		get
		{
			return m_Settings;
		}
		set
		{
			m_Settings = value;
		}
	}

	public override void Reset()
	{
		m_Settings = Settings.defaultSettings;
	}
}