195 {
196 rgba t(0.0, 0.0, 0.0);
197
198 if (wl >= 380.0 && wl <= 440.0)
199 {
200 t.r = -1.0 * (wl - 440.0) / (440.0 - 380.0);
201 t.b = 1.0;
202 }
203 else if (wl >= 440.0 && wl <= 490.0)
204 {
205 t.g = (wl - 440.0) / (490.0 - 440.0);
206 t.b = 1.0;
207 }
208 else if (wl >= 490.0 && wl <= 510.0)
209 {
210 t.g = 1.0;
211 t.b = -1.0 * (wl - 510.0) / (510.0 - 490.0);
212 }
213 else if (wl >= 510.0 && wl <= 580.0)
214 {
215 t.r = (wl - 510.0) / (580.0 - 510.0);
216 t.g = 1.0;
217 }
218 else if (wl >= 580.0 && wl <= 645.0)
219 {
220 t.r = 1.0;
221 t.g = -1.0 * (wl - 645.0) / (645.0 - 580.0);
222 }
223 else if (wl >= 645.0 && wl <= 780.0)
224 {
225 t.r = 1.0;
226 }
227
228 double s = 1.0;
229 if (wl > 700.0) s = 0.3 + 0.7 * (780.0 - wl) / (780.0 - 700.0);
230 else if (wl < 420.0) s = 0.3 + 0.7 * (wl - 380.0) / (420.0 - 380.0);
231
232 t.r =
pow(t.r * s, gamma);
233 t.g =
pow(t.g * s, gamma);
234 t.b =
pow(t.b * s, gamma);
235 return t;
236 }
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC half pow(const half &a, const half &b)
Definition Half.h:477
rgba()
Definition agg_color_rgba.h:57