A game about forced loneliness, made by TACStudios
at master 178 lines 13 kB view raw
1using NUnit.Framework; 2 3namespace UnityEngine.Rendering.Tests 4{ 5 class LightUnitTests 6 { 7 GameObject go; 8 const float epsilon = 0.001f; 9 10 [SetUp] 11 public void Setup() 12 { 13 GameObject go = new GameObject("Light", typeof(Light)); 14 } 15 16 [TearDown] 17 public void TearDown() 18 { 19 GameObject.Destroy(go); 20 } 21 22 [Test] 23 public void LightUnitSupport() 24 { 25 // Directional and box lights should only support Lux 26 LightType t = LightType.Directional; 27 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lumen)); 28 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Candela)); 29 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lux)); 30 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Nits)); 31 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Ev100)); 32 t = LightType.Box; 33 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lumen)); 34 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Candela)); 35 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lux)); 36 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Nits)); 37 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Ev100)); 38 // Point lights should only support Lumen, Candela, Lux, EV100 39 t = LightType.Point; 40 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lumen)); 41 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Candela)); 42 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lux)); 43 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Nits)); 44 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Ev100)); 45 // Spot lights should only support Lumen, Candela, Lux, EV100 46 t = LightType.Spot; 47 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lumen)); 48 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Candela)); 49 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lux)); 50 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Nits)); 51 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Ev100)); 52 // Area lights should only support Lumen, Nits, EV100 53 t = LightType.Rectangle; 54 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lumen)); 55 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Candela)); 56 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lux)); 57 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Nits)); 58 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Ev100)); 59 t = LightType.Disc; 60 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lumen)); 61 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Candela)); 62 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lux)); 63 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Nits)); 64 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Ev100)); 65 t = LightType.Tube; 66 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lumen)); 67 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Candela)); 68 Assert.False(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Lux)); 69 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Nits)); 70 Assert.True(LightUnitUtils.IsLightUnitSupported(t, LightUnit.Ev100)); 71 } 72 73 [Test] 74 public void DirectionalAndBoxLightUnitConversion() 75 { 76 Light l = GameObject.FindAnyObjectByType<Light>().GetComponent<Light>(); 77 78 l.type = LightType.Directional; 79 Assert.AreEqual(3f, LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Lux)); 80 81 l.type = LightType.Box; 82 Assert.AreEqual(3f, LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Lux)); 83 } 84 85 [Test] 86 public void PointLightUnitConversion() 87 { 88 // Point light 89 Light l = GameObject.FindAnyObjectByType<Light>().GetComponent<Light>(); 90 91 l.type = LightType.Point; 92 l.luxAtDistance = 3f; 93 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Candela), Is.EqualTo(3f).Within(epsilon)); 94 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Candela), Is.EqualTo(0.238732412f).Within(epsilon)); 95 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Lumen), Is.EqualTo(37.6991119f).Within(epsilon)); 96 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Lux), Is.EqualTo(0.0265258234f).Within(epsilon)); 97 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Lumen), Is.EqualTo(339.292023f).Within(epsilon)); 98 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Ev100), Is.EqualTo(0.933466434f).Within(epsilon)); 99 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Lumen), Is.EqualTo(12.566371f).Within(epsilon)); 100 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Lux), Is.EqualTo(0.333333343f).Within(epsilon)); 101 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Candela), Is.EqualTo(27.0f).Within(epsilon)); 102 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Ev100), Is.EqualTo(4.58496237f).Within(epsilon)); 103 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Candela), Is.EqualTo(1f).Within(epsilon)); 104 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Ev100), Is.EqualTo(7.75488758f).Within(epsilon)); 105 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Lux), Is.EqualTo(0.111111112f).Within(epsilon)); 106 } 107 108 [Test] 109 public void SpotLightUnitConversion() 110 { 111 Light l = GameObject.FindAnyObjectByType<Light>().GetComponent<Light>(); 112 113 l.type = LightType.Spot; 114 l.enableSpotReflector = false; 115 l.luxAtDistance = 3f; 116 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Candela), Is.EqualTo(3f).Within(epsilon)); 117 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Candela), Is.EqualTo(0.238732412f).Within(epsilon)); 118 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Lumen), Is.EqualTo(37.6991119f).Within(epsilon)); 119 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Lux), Is.EqualTo(0.0265258234f).Within(epsilon)); 120 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Lumen), Is.EqualTo(339.292023f).Within(epsilon)); 121 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Ev100), Is.EqualTo(0.933466434f).Within(epsilon)); 122 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Lumen), Is.EqualTo(12.566371f).Within(epsilon)); 123 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Lux), Is.EqualTo(0.333333343f).Within(epsilon)); 124 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Candela), Is.EqualTo(27.0f).Within(epsilon)); 125 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Ev100), Is.EqualTo(4.58496237f).Within(epsilon)); 126 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Candela), Is.EqualTo(1f).Within(epsilon)); 127 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Ev100), Is.EqualTo(7.75488758f).Within(epsilon)); 128 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Lux), Is.EqualTo(0.111111112f).Within(epsilon)); 129 130 l.enableSpotReflector = true; 131 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Candela), Is.EqualTo(3f).Within(epsilon)); 132 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Candela), Is.EqualTo(14.0125141f).Within(epsilon)); 133 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Lumen), Is.EqualTo(0.642283022f).Within(epsilon)); 134 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Lux), Is.EqualTo(1.55694604f).Within(epsilon)); 135 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Lumen), Is.EqualTo(5.78054714f).Within(epsilon)); 136 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Ev100), Is.EqualTo(6.80864382f).Within(epsilon)); 137 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Lumen), Is.EqualTo(0.214094341f).Within(epsilon)); 138 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Lux), Is.EqualTo(0.333333343f).Within(epsilon)); 139 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Candela), Is.EqualTo(27.0f).Within(epsilon)); 140 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Candela, LightUnit.Ev100), Is.EqualTo(4.58496237f).Within(epsilon)); 141 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Candela), Is.EqualTo(1f).Within(epsilon)); 142 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lux, LightUnit.Ev100), Is.EqualTo(7.75488758f).Within(epsilon)); 143 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Lux), Is.EqualTo(0.111111112f).Within(epsilon)); 144 } 145 146 [Test] 147 public void AreaLightUnitConversion() 148 { 149 Light l = GameObject.FindAnyObjectByType<Light>().GetComponent<Light>(); 150 151 l.areaSize = new Vector2(4f, 5f); 152 153 l.type = LightType.Rectangle; 154 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Nits), Is.EqualTo(0.0477464795f).Within(epsilon)); 155 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Nits, LightUnit.Lumen), Is.EqualTo(188.495575f).Within(epsilon)); 156 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Ev100), Is.EqualTo(-1.38846159f).Within(epsilon)); 157 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Lumen), Is.EqualTo(62.8318558f).Within(epsilon)); 158 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Nits, LightUnit.Ev100), Is.EqualTo(4.58496237f).Within(epsilon)); 159 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Nits), Is.EqualTo(1f).Within(epsilon)); 160 161 l.type = LightType.Disc; 162 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Nits), Is.EqualTo(0.0189977214f).Within(epsilon)); 163 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Nits, LightUnit.Lumen), Is.EqualTo(473.741028f).Within(epsilon)); 164 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Ev100), Is.EqualTo(-2.71802998f).Within(epsilon)); 165 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Lumen), Is.EqualTo(157.913681f).Within(epsilon)); 166 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Nits, LightUnit.Ev100), Is.EqualTo(4.58496237f).Within(epsilon)); 167 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Nits), Is.EqualTo(1f).Within(epsilon)); 168 169 l.type = LightType.Tube; 170 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Nits), Is.EqualTo(0.0596831031f).Within(epsilon)); 171 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Nits, LightUnit.Lumen), Is.EqualTo(150.796448f).Within(epsilon)); 172 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Lumen, LightUnit.Ev100), Is.EqualTo(-1.06653357f).Within(epsilon)); 173 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Lumen), Is.EqualTo(50.2654839f).Within(epsilon)); 174 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Nits, LightUnit.Ev100), Is.EqualTo(4.58496237f).Within(epsilon)); 175 Assert.That(LightUnitUtils.ConvertIntensity(l, 3f, LightUnit.Ev100, LightUnit.Nits), Is.EqualTo(1f).Within(epsilon)); 176 } 177 } 178}