# One-to-Many Spectral Upsampling of Reflectances and Transmittances

L. Belcour, Pascal Barla, Gaël Guennebaud

► To cite this version:

L. Belcour, Pascal Barla, Gaël Guennebaud. One-to-Many Spectral Upsampling of Reflectances and Transmittances. Computer Graphics Forum, 2023, 42 (4), 10.1111/cgf.14886. hal-04174001

HAL Id: hal-04174001

https://inria.hal.science/hal-04174001

Submitted on 31 Jul 2023

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# One-to-Many Spectral Upsampling of Reflectances and Transmittances

L. Belcour¹, P. Barla² and G. Guennebaud²

¹Intel Corporation

²INRIA, Bordeaux

<figure><img src="image_2.png" /><figcaption>**Figure 1:** Surprising color changes may occur due to the path length travelled by light through some materials. This is shown in (a) with the Usambara effect observed in tourmaline: the same gem appears green or red depending on path length, due to a specific transmission spectrum (see inset). We introduce a method for finding such non-generic spectra. This requires to perform one-to-many spectral upsampling (b), which generates multiple spectra with a unique controllable color at a given path length, but varying colors at further lengths. The chromaticity of each spectrum as a function of path lengths is shown in (c).</figcaption></figure>

## Abstract

Spectral rendering is essential for the production of physically-plausible synthetic images, but requires to introduce several changes in the content generation pipeline. In particular, the authoring of spectral material properties (e.g., albedo maps, indices of refraction, transmittance coefficients) raises new problems. While a large panel of computer graphics methods exists to upsample a RGB color to a spectrum, they all provide a one-to-one mapping. This limits the ability to control interesting color changes such as the Usambara effect or metameric spectra. In this work, we introduce a one-to-many mapping in which we show how we can explore the set of all spectra reproducing a given input color. We apply this method to different colour changing effects such as vathochromism – the change of color with depth, and metamerism.

## 1. Introduction

Spectral rendering has been increasingly used in recent years, due to raising expectations in photo-realism in cinematography [FHL*18], or to applications that require predictive results such as in architecture. However, the generation of spectral material properties presents a challenge for artists and designers [WLA*22]. To ease the edition of reflectance and transmittance spectra, several spectral upsampling methods have been introduced in computer

graphics [Pee93, Smi99, OYH18, MY19, JH19, GGDG22, Jen21]. They produce spectra from colors, ensuring that physical bounds are achieved (e.g., reflectances must lie in the [0, 1] range). All of these methods are restricted to produce a *one-to-one* conversion: one RGB triplet converts to a single spectrum.

This limitation restricts the possibilities that spectral rendering offers. Indeed, unlike RGB materials, spectral materials offer the possibility to produce subtle color effects, such as metamerism –
a change of color due to different illuminants [WFD*21]. In the optics community, Metameric blacks [Wys58, FM05] have been introduced to explore the space of metamers. In this approach, metameric spectra achieving a given desired color are sampled from a null-space in the target color space. Unfortunately, this requires to manipulate physical constraints in a high dimensional null-space, which significantly complicates artistic control. Most importantly, this null-space approach is not easily adapted to deal with non-linear color changes, such as those observed in the Usambara effect (see Figure 1 (a)) – a surprising change of color due to the path length travelled by light in tourmaline gems.

In this paper, we introduce a novel *one-to-many* approach that enables artists to design non-generic spectra with controlled color effects. The key idea is to build reflectance or transmittance spectra using a small set of basis functions forming a partition of unity (PU), and to express them in chromaticity space. We primarily target non-linear effects: our representation allows us to find many spectra that achieve a same target chromaticity at a unit optical depth, while providing control over the chromaticities at further depths. This is shown in Figure 1(b,c) for a pair of spectra.

A key observation on which we elaborate in Section 3 is that a PU spectral representation is linked to generalized barycentric coordinates in chromaticity space. As demonstrated in Section 4, exploring all the possible barycentric coordinates reconstructing the same target chromaticity point is equivalent to exploring the space of all spectra producing the same chromaticity when integrated with respect to color matching functions of the human visual system. We then use this geometric analogy for the design of the PU basis in Section 5, where we show how to strike a balance between spectral smoothness and color expressivity.

With our one-to-many spectral upsampling approach, we are able to generalize the Usambara effect to any non-generic spectrum that exhibits changes of color with depth, which we suggest to call *vathochromism*, derived from ancient Greek *vathos* (depth) and *chroma* (colour).† We show in Section 6.1 how to build a parametric system in which a user can pick spectra with specific constraints (such as reproducing two given chroma for different optical depths). The same representation also provides control over metamerism, as shown in Section 6.2. We further discuss the differences with Metameric Blacks in Section 7.

# 2. Previous Work

## 2.1. Color changes in Nature

Many different kinds of natural materials exhibit changes of color, depending on the angle of view (goniochromism), on temperature (thermochromism) or exposition to light (photochromism) for instance. In all those cases, the reflected or transmitted spectrum is itself changed either due to an alteration of the material itself, or to viewing conditions. In this paper, we are instead interested in materials that exhibit color changes despite the fact that their spectral reflectance or transmittance does *not* change.

**Metamerism.** A common example of such materials are those that change color with a change of illumination, called metamers. Two metameric materials can look the same under one illuminant, but will differ when lit by another illuminant. This is explained by the fact that the human visual system integrates the product of light and material on photo-receptors, which is a many-to-one mapping. Another related example of the impact of the illuminant on the appearance of objects is the *Alexandrite effect* [GS82]. Alexandrite gems are known to change from green when lit by sunlight to red when lit by candle light. This particular effect has been used in computer graphics by Bergner et al. [BDM09] for visualization purposes.

**Usambara effect.** The Usambara effect was first described for a particular tourmaline found in the Umba valley in Tanzania [LSH99]. It was described as a change of color (from green to red) with an increase of the optical depth of the material. It was later found that other materials (such as topaz and amber) depicted such behaviour [BJIA12, LSW14]. In this work, we use the term *vathochromism* for such changes of color with depth.

## 2.2. Computing Metamers in Optics

**Metameric blacks** One way to generate a pair of metameric spectra is to add to a first spectrum a spectral curve that corresponds to a black color (i.e., a zero triplet) in the target color space [Wys58]. From the point of view of linear algebra, a metamer is then a point in the null-space of the color space matrix [TN72, CK82]. While this formalism permits the generation of arbitrary metamers, it requires to track hard constraints: a reflectance spectrum must take its values in the [0, 1] range. With finely-discretized spectra, those constraints generate a convex hull of valid spectra in a high dimensional space. Alternate methods can avoid this dimensionality issue by using a blending of measured spectra [FM05, Sch76]. However, this comes at a cost: each reconstructed spectrum is necessarily within the convex hull of the measured spectra. In particular, one can only reproduce luminance within this convex hull.

**Applications** Metameric Blacks have been successfully used for camera calibration [AL07], reflectance acquisition [MF06, ZB07, LF20], or printing [MMA11]. However, this approach is too limiting for the artistic control of spectral assets, which is our main focus in this work. Furthermore, working with discretized spectra has the additional drawback that spectral maxima are limited to occur at spectral bin locations, potentially preventing interesting effects.

## 2.3. Spectral Representations in Computer Graphics

**Spectral upsampling.** In computer graphics, the use of a spectral renderer requires to convert between colors and spectra [FHL*18, WLA*22]. Usually, the aim is to convert RGB textures (such as albedo maps, environment maps) to spectral textures with one spectral curve per texel – a *one-to-one mapping* [Pee93, Smi99, OYH18, MY19, JH19, GGDG22, Jen21, TWF22]. The difference between those approaches mostly resides in how spectra are built. For instance, [Smi99] and [MSHD15] optimize smooth spectra, [Pee93] and [OYH18] use a database to project colors, while [JH19] build a parametric family of spectra. All these methods ensure that the resulting upsampled spectra are physically-plausible: they remain in the [0, 1] range along the spectral dimension.

<footnote>† We reserve the usage of the term “Usambara effect” for the typical green-to-red color shift observed in Tourmaline gemstones.</footnote>
**Spectral Compression.** The storage of spectral curves raises additional difficulties. Parametric models (such as the one of [JH19]) limit storage requirements, even allowing for on-the-fly conversion of RGB assets. However, they severely restrict the family of spectra that can be represented. An alternative is to decompose spectra using moments [PMHD19]. With this approach, it is possible to reconstruct a large family of spectra while keeping memory requirements in check. The storage of spectra is orthogonal to our work, as we could choose to use any compression method to store the spectra produced by our approach.

**Fluorescence.** Spectra defined in the visible range can be extended to incorporate fluorescence effects [Gla95]. While it requires dedicated rendering algorithms [MFW18], it expands the range of achievable appearances [JWH*19]. While compact representations for fluorescent spectra have been recently introduced in computer graphics (e.g., [HFW21]), we restrict our approach to spectra in the visible range and put fluorescence aside.

## 2.4. Scope of this Work

Our goal is to extend the computer graphics toolbox with a one-to-many spectral upsampling method tailored to reflectance and transmittance. Contrary to previous work in optics, we do not rely on convex combinations of measured spectra, since our focus is on the artistic control of color-changing effects, for vathochromism and metamerism alike. As described in the next section, we overcome the difficulties raised by the null-space approach of Metameric Blacks by relying on a spectral Partition of Unity.

## 3. Spectral Partition of Unity

In this section, we use a Partition of Unity to define a space of smooth spectra and show how these spectra are related to generalized barycentric coordinates in chromaticity space.

**Partition of Unity.** A Partition of Unity (PU) is a set of K basis functions $B_k: U \to \mathbb{R}$ with $k \in [0, K-1]$ such that:

$$ \sum_k B_k(x) = 1, \forall x \in U. \qquad (1) $$

We can use a weighted sum of these basis functions to reconstruct or approximate functions. A notable property of a PU is that bounded weights yield bounded reconstructed functions:

$$ \forall k \in [0, K-1], w_k \in [0, 1] \Rightarrow f(x) = \sum_k w_k B_k(x) \in [0, 1]. \quad (2) $$

<figure><img src="image_3.png" /><figcaption>**Figure 2:** Left: An example set of K = 5 Partition of Unity (PU) basis functions of degree 2 with regularly spaced knots. Right: CIE sensitivity functions $\bar{x}(\lambda)$, $\bar{y}(\lambda)$ and $\bar{z}(\lambda)$ in red, green and blue.</figcaption></figure>

**Reconstructing Transmission Spectra.** We use a PU created from non-uniform B-splines to produce reflectance or transmittance spectra. The input domain is the set of visible wavelengths $U = [U_0, U_1] = [385nm, 700nm]$. The energy conservation constraint on reflectance and transmittance spectra is readily met through Equation 2. We will discuss the choice of the number K of B-spline basis functions, their degree and the positions of their knots later in Section 5. In this section, for the purpose of illustration, we rely on K = 5 bases of degree 2 and uniformly spaced knots with knots at the boundaries of U having a multiplicity of 3, as shown in Figure 2(left). We also work with the sRGB color space.

**Geometric interpretation** When intergrated with respect to the CIE sensitivity functions $\bar{x}(\lambda)$, $\bar{y}(\lambda)$ and $\bar{z}(\lambda)$ shown in Figure 2(right), each basis function corresponds to a XYZ color:

$$ \mathbf{B}_k = \begin{bmatrix} B_{k,X} \\ B_{k,Y} \\ B_{k,Z} \end{bmatrix} = \int B_k(\lambda) s(\lambda) d\lambda, \quad (3) $$

with $s(\lambda) = [\bar{x}(\lambda), \bar{y}(\lambda), \bar{z}(\lambda)]^\top$. Due to the linearity of reconstruction, a weighted sum of PU basis functions yields a XYZ color that is a weighted sum of basis XYZ colors:

$$ \mathbf{F} = \begin{bmatrix} F_X \\ F_Y \\ F_Z \end{bmatrix} = \int f(\lambda) d\lambda = \sum_k w_k \mathbf{B}_k. \quad (4) $$

$\mathbf{F}$ may then be converted to the xyY color space. Using Equation 4, we directly obtain its luminance $F_Y = \sum_k w_k B_{k,Y}$. Its chromaticity $\mathbf{c}$ is slightly more complicated. If we write $|F| = F_X + F_Y + F_Z$ and similarly $|B_k| = B_{k,X} + B_{k,Y} + B_{k,Z}$, it is given by:

$$ \mathbf{c} = \frac{[F_X, F_Y]^\top}{|F|} = \frac{\sum_k w_k [B_{k,X}, B_{k,Y}]^\top}{\sum_l w_l |B_l|}. $$

which may be rewritten as:

$$ \mathbf{c} = \sum_k a_k \mathbf{b}_k, \quad (5) $$

$$ a_k = \frac{w_k |B_k|}{\sum_l w_l |B_l|}. \quad (6) $$

where the $\mathbf{b}_k = \frac{[B_{k,X}, B_{k,Y}]^\top}{|B_k|}$ denote basis chromaticities.

Our key observation is thus that the chromaticity $\mathbf{c}$ of a spectrum given by a vector $\mathbf{w}$ of basis coefficients is obtained as a linear combination of basis chromaticities $\mathbf{b}_k$ where the weights $a_k$ correspond to homogeneous barycentric coordinates. This is illustrated in Figure 3, where the basis chromaticities $\mathbf{b}_k$ form a gamut of colors achievable through a given choice of basis functions $B_k(\lambda)$. Depending on that choice, the gamut may only partially overlap the sRGB gamut: this means that there is no $\mathbf{w}$ that can achieve a chromaticity outside the basis gamut. A vector $\mathbf{w}$ with only two non-zero contiguous coefficients yields a unique chromaticity point on the gamut boundary, since then only a contiguous pair of barycentric coordinates is non-zero. However, in all other cases, there will be multiple coefficient vectors $\mathbf{w}$ that map to the same chromaticity point $\mathbf{c}$. This is because for $K > 3$, the set of $a_k$ describes generalized barycentric coordinates of $\mathbf{c}$, and is thus not unique. In the next section, we show how to invert this many-to-one mapping.
<figure><img src="image_4.png" /><figcaption>**Figure 3:** A PU basis $B_k(\lambda)$ defines a gamut in chromaticity space ((a) orange polygon) where each vertex $\mathbf{b}_k$ is a basis element. Any point outside that gamut (e.g., the black cross) is not achievable with the chosen basis, even though it might be inside the sRGB gamut (blue triangle). A spectrum defined by two non-null contiguous basis coefficients (e.g., plain red curve in (b) with individual PU contributions in dashed) yields a chromaticity on the basis gamut boundary (red point). More general spectra (e.g., blue curve in (b)) yield a chromaticity inside the basis gamut (blue point in (a)).</figcaption></figure>

## 4. One-to-many mapping

Our goal in this section is to find the equivalence class of basis coefficients $\mathbf{w}$ that yields a target chromaticity $\mathbf{c}$ and luminance $F_Y$. We do this in two stages: we first find the set of generalized barycentric coordinates that achieves the target chromaticity $\mathbf{c}$; then we show how this maps to an equivalence class of basis coefficients, a subset of which achieves the target luminance $F_Y$.

### 4.1. Achieving chromaticity

A first condition is that $\mathbf{c}$ must lie inside the basis gamut or on its boundary. The target chromaticity may then be expressed in terms of generalized homogeneous barycentric coordinates, using:

$$ \begin{bmatrix} 1 & 1 & \cdots & 1 \\ b_{0,x} & b_{1,x} & \cdots & b_{K-1,x} \\ b_{0,y} & b_{1,y} & \cdots & b_{K-1,y} \end{bmatrix} \begin{bmatrix} a_0 \\ a_1 \\ \cdots \\ a_{K-1} \end{bmatrix} = \begin{bmatrix} 1 \\ c_x \\ c_y \end{bmatrix}, \quad (7) $$

with $\mathbf{b}_k = [b_{k,x}, b_{k,y}]^\top$ and $\mathbf{c} = [c_x, c_y]^\top$.

Since $\mathbf{c}$ is in the basis gamut, there is at least one triplet of bases whose chromaticity coordinates define a triangle that contains $\mathbf{c}$. Let's assume that these basis are the first three (one can always re-order the bases to yield such a configuration). One solution to Equation 7 is then $[a_0, a_1, a_2, 0, \dots, 0]^\top = [\mathbf{a}_T^\top, 0]^\top$, with $\mathbf{a}_T$ the vector of triangular barycentric coordinates. Other solutions may then be obtained by adding perturbations to that vector, which may be written $[a_0 - \Delta a_0, a_1 - \Delta a_1, a_2 - \Delta a_2, a_3, \dots, a_{K-1}]^\top = [[\mathbf{a}_T - \Delta \mathbf{a}]^\top, \mathbf{a}_F^\top]^\top$, where $\mathbf{a}_F$ is a (K-3)D vector of barycentric coordinates that represent degrees of freedom to navigate the space of solutions, and $\Delta \mathbf{a}$ is a 3D offset vector used to preserve the homogeneous barycentric coordinate constraint.

Let us now rewrite Equation 7 with the following matrix form: $[T F] \mathbf{a} = [1, \mathbf{c}^\top]^\top$, where $T$ (resp. $F$) is the matrix corresponding to the first 3 (resp. last $K-3$) columns of the left hand side matrix, and $\mathbf{a}$ is the vector of generalized barycentric coordinates. Since we also have $T \mathbf{a}_T = [1, \mathbf{c}^\top]^\top$, it follows that:

$$ T \Delta \mathbf{a} = F \mathbf{a}_F. \quad (8) $$

Now in order to navigate the space of solutions, we need bounds on $\mathbf{a}_F$. Because all its coefficients are barycentric coordinates, we already know that $0 \le \mathbf{a}_F \le \mathbf{1}$, with the lower bound trivially corresponding to a zero offset vector (see Equation 8). The upper bound is not a sufficient condition since we must also make sure that $0 \le \mathbf{a}_T - \Delta \mathbf{a} \le \mathbf{1}$, or in terms of the offset vector: $\mathbf{a}_T - \mathbf{1} \le \Delta \mathbf{a} \le \mathbf{a}_T$. Using Equation 8 yields the following vector inequality:

$$ \mathbf{a}_T - \mathbf{1} \le M \mathbf{a}_F \le \mathbf{a}_T, \quad (9) $$

where $M = T^{-1}F$ is a $3 \times (K-4)$ matrix. Note that since $M$ may contain negative coefficients, the lower bound in Equation 9 may end up being used to define the upper bound on $\mathbf{a}_F$.

We rely on an iterative approach to characterize the whole set of solutions by considering each coefficient of $\mathbf{a}_F$ in turn. Let us start with $a_3$, and assume that $a_{4,K-1} = 0$. Equation 9 now becomes $\mathbf{a}_T - \mathbf{1} \le \mathbf{m}_0 a_3 \le \mathbf{a}_T$, with $\mathbf{m}_0 = [m_{00}, m_{10}, m_{20}]^\top$ the first column of $M$. The constraints on offsets are then met by navigating $a_3$ in the $[0, a_3^{\max}]$ interval, with the upper bound given by:

$$ a_3^{\max} = \min_{i \in \{0,1,2\}} \frac{a_i + H(m_{i0}) - 1}{m_{i0}}. \quad (10) $$

The Heaviside function $H(m)$ is used to take the sign of each matrix component into account: when $m \le 0$ (resp. $m > 0$), the lower (resp. upper) bound is considered. Having chosen the $n-1$ first coefficients of $\mathbf{a}_F$, the upper bound for the $n$th coefficient – assuming the remaining ones are zero – is obtained with a similar formula:

$$ a_{3+n}^{\max} = \min_{i \in \{0,1,2\}} \frac{a_i + H(m_{in}) - 1 - \sum_{l=0}^{n-1} m_{il} a_{3+l}}{m_{in}}. \quad (11) $$

In the general case, a valid solution $\forall n \in [0..K-4]$ must ensure:

$$ a_{3+n} \le \min_{i \in \{0,1,2\}} \frac{a_i + H(m_{in}) - 1 - \sum_{l \ne n} m_{il} a_{3+l}}{m_{in}}. \quad (12) $$

For each vector $\mathbf{a}_F$, the offset vector is computed by $\Delta \mathbf{a} = M \mathbf{a}_F$, which yields a generalized homogeneous coordinates vector $\mathbf{a}$ that achieves the target chromaticity $\mathbf{c}$. Figure 4 illustrates that process. A triangle that encloses $\mathbf{c}$ is first selected; then the space of degrees of freedom $\mathbf{a}_F$ is sampled randomly to yield a family of spectra.

### 4.2. Achieving luminance

Given a vector of generalized barycentric coordinates $\mathbf{a}$, we now need to invert Equation 6 to retrieve basis coefficients $\mathbf{w}$. Since any pair of basis coordinates $(a_i, a_j)$ is related by an equation of the form $a_i w_j |B_j| = a_j w_i |B_i|$, the corresponding basis coefficients span a KD line. If we pick an arbitrary non-zero barycentric coordinate – say $a_0$ – then $\mathbf{w}$ may be expressed as a function of $w_0$:

$$ \mathbf{w}(w_0) = \begin{bmatrix} 1 \\ \frac{a_1|B_0|}{a_0|B_1|} \\ \vdots \\ \frac{a_{K-1}|B_0|}{a_0|B_{K-1}|} \end{bmatrix}, \quad w_0 = L w_0, \quad w_0 \in (0, w_0^{\max}], \quad (13) $$

where the upper bound $w_0^{\max} = \min\{1, \frac{a_0|B_1|}{a_1|B_0|}, \dots, \frac{a_0|B_{K-1}|}{a_{K-1}|B_0|}\}$ is set to ensure that $0 \le \mathbf{w} \le \mathbf{1}$.
<figure><img src="image_5.png" /><figcaption>**Figure 4: One-to-many mapping.** The target color is given by its chromaticity **c** = [0.41, 0.42]ᵀ and luminance F<sub>Y</sub> = 0.57. Left: a triangle (in green) enclosing the target chromaticity **c** (black dot) is picked among the basis gamut (in orange). Middle: the remaining two basis constitute degrees of freedom, which are randomly sampled using our iterative procedure based on barycentric coordinates. Observe the presence of boundaries in this barycentric space, which are required to keep basis coefficients in the [0, 1] range. Right: the equivalence class of spectra achieving **c** are retrieved from the degrees of freedom (we use matching colors). Transparent barycentric samples (middle) and spectra (right) indicate that the target luminance F<sub>Y</sub> is not achieved. The solution of maximum luminance in the equivalence class is shown with a green diamond in barycentric space (middle), and its spectrum is drawn in green (right).</figcaption></figure>

The KD line of solutions may now be restricted to a single solution by the target luminance constraint, which we write $\mathbf{w}(w_0)^\top \mathbf{B}_y = F_y$, with $\mathbf{B}_y = [B_{0,Y}, \dots, B_{K-1,Y}]^\top$ the vector of Y coefficients of basis colors.

Using Equation 13, the value of $w_0$ that potentially achieves the target luminance $F_Y$ is:

$$w_0^* = \frac{F_Y}{L^\top \mathbf{B}_y}. \qquad (14)$$

$F_Y$ is effectively achieved if and only if $w_0^* \le w_0^{\max}$. For that reason only a (possibly empty) subset of barycentric coordinates **a** permits to achieve the target luminance. This is shown in Figure 4: only fully-opaque barycentric samples and their associated spectra achieve $F_Y$ in practice.

However, this subset may be enlarged. Indeed, relying on the bounded property of PU (Equation 2) remains conservative: in some instances, we may use basis coefficients greater than 1 and still obtain energy-conserving spectra. This means that $\mathbf{w}$ may be scaled in post process to increase the luminance of the reconstructed spectrum. Assuming that $F_Y$ is not achieved (i.e., $\mathbf{w}(w_0^{\max})^\top \mathbf{B}_Y < F_Y$), we may thus obtain a closer solution in terms of luminance by using:

$$W(\mathbf{w}) = \frac{\mathbf{w}(w_0^{\max})}{\max\left(f^{\max}, \frac{\mathbf{w}(w_0^{\max})^\top \mathbf{B}_Y}{F_Y}\right)}, \qquad (15)$$

where $f^{\max} = \max_{\lambda} f(\lambda)$, and $1/f^{\max}$ represents the margin by which the spectrum $f(\lambda)$ is allowed to be scaled.

Finally, it would be useful to know a priori whether there exists at least one vector $\mathbf{w}$ of basis coefficients that achieves both the target chromaticity and luminance. A conservative solution is to rely on the vector $\bar{\mathbf{w}}$ that maximizes luminance under the constraint

given by Equation 7, then to check whether $W(\bar{\mathbf{w}})^\top \mathbf{B}_y \ge F_Y$. The vector $\bar{\mathbf{w}}$ is found by solving the following linear programming problem:

$$\bar{\mathbf{w}} = \max_{\mathbf{w}} \mathbf{w}^\top \mathbf{B}_y, \qquad (16)$$

$$\text{subject to} \quad \mathbf{0} \le \bar{\mathbf{w}} \le \mathbf{1} \qquad (17)$$

$$\text{and} \quad A \bar{\mathbf{w}} = \mathbf{0}, \qquad (18)$$

where A is obtained by rewriting Equation 7 in terms of $\mathbf{w}$:

$$A = [T \ F] \operatorname{diag}(|\mathbf{B}|)^\top - |\mathbf{B}|^\top \begin{bmatrix} 1 \\ \mathbf{c} \end{bmatrix}, \qquad (19)$$

where we have used $\mathbf{a} = \frac{\operatorname{diag}(|\mathbf{B}|)^\top \mathbf{w}}{|\mathbf{B}|^\top \mathbf{w}}$ and $|\mathbf{B}| = [|B_0|, \dots, |B_{K-1}|]^\top$. An exact solution could be obtained by replacing $\bar{\mathbf{w}}$ by $W(\bar{\mathbf{w}})$ in Equation 17, at the cost of a more expensive computation time.

Once we have found $\bar{\mathbf{w}}$ (green spectrum in Figure 4), it is trivial to retrieve the corresponding barycentric coordinates $\bar{\mathbf{a}}$ and degrees of freedom $\bar{\mathbf{a}}_F$ (green diamond in Figure 4). We use $\bar{\mathbf{w}}$ by default during editing (see the supplemental video).

## 5. Basis design

Until now, we have relied on a small number of basis functions ($K=5$) for illustration purposes. Increasing the number $K$ of bases has the effect of increasing the size of the equivalence class. As shown in Figure 5, this is due to the basis gamut, which encompasses a larger area of the chromaticity diagrams when $K$ is increased. This has two effects on the expressivity of a given basis. First, any chromaticity in a given RGB gamut (we consider sRGB and Adobe Wide Gamut RGB in the following) can be achieved when it is encompassed by the basis gamut. Increasing the number
<figure><img src="image_6.png" /><figcaption>**Figure 5: Basis gamut w.r.t. K.** For the same chromaticity constraint (green dot, top row), we display randomly generated spectra (bottom row) when increasing the numbers of basis functions (from left to right $K = \{5, 7, 9, 11\}$). We compare the basis gamut to both sRGB (blue) and Adobe Wide Gamut RGB (light blue).</figcaption></figure>

of bases extends the latter as shown in Figure 5 (top row). Second, chromaticities on the gamut boundary map to a single pair of non-zero barycentric coordinates; hence a basis gamut larger than the chosen RGB gamut ensures to avoid these singular equivalence classes.

However, increasing the number $K$ of bases cannot be done without limits, since plausible reflectance and transmittance spectra should be smooth. In addition, a smaller number of bases might be desirable for memory considerations.

In this section, from the geometric interpretation of previous sections, we design a set of PU basis functions that finds a tradeoff between expressivity and smoothness constraints. We keep degree of 2 throughout as there is no need to ensure $C^2$ (or higher) continuity, and low degree splines prevent us from over-fitting issues.

**Knots warping** Besides increasing $K$, we may also control the position of basis knots. To this end, we use a two-parameter family of warping functions to alter the uniform distribution of knots along the $U = [U_0, U_1]$ interval. We use a warping function $C_{s,p} : [0, 1] \to [0, 1]$ introduced by [His20]:

$$C_{s,p}(x) = \begin{cases} \frac{x^c}{p^{c-1}} & \text{if } x \in [0, p], \\ 1 - \frac{(1-x)^c}{(1-p)^{c-1}} & \text{otherwise,} \end{cases} \quad (20)$$

with $c = \frac{2}{1+s} - 1$. The two parameters $(s, p) \in [0, 1]^2$ control the strength of warping and the position where most of the warping occurs. A sequence of warped knots $\{\kappa_k\}$ is then produced using $\kappa_k = U_0 + C_{s,t}(u_k)(U_1 - U_0)$, where the $u_k$ form a uniform sequence of values in the $[0, 1]$ range. Even though a set of $K$ B-spline basis functions of order 2 requires $K + 3$ knots, we ignore the first and last two since the boundary knots have a multiplicity of 3. Hence we obtain $K - 1$ knots, with $\kappa_0 = U_0$ and $\kappa_{K-1} = U_1$ as desired.

Figure 6 shows the effect of knots warping on $K = 7$ basis functions and the corresponding basis gamut, demonstrating that knots warping helps achieve a wider gamut without having to increase the number $K$ of basis functions. The figure also shows that modifying the first and last two knots to be outside of the $U$ interval has a negligible effect on the basis gamut, which is due to the small values of color matching functions around these boundaries (see Figure 2(left)). We choose to offset these boundary knots by

<figure><img src="image_7.png" /><figcaption>**Figure 6: Knots warping.** Warping basis knots alters the basis gamut, here for a set of $K = 7$ basis functions. We assign to each basis a color to clearly locate it in chromaticity space. A strong warping (second column) tends to widen the gamut considerably, but results in one very narrow basis function. Adjusting the position parameter $p$ (third column) achieves an even wider gamut with a smaller strength parameter $s$, which results in less narrow bases and permits to capture most of the XYZ space. Displacing the boundary knots outside of the spectral interval $U$ (last column) has a negligible effect on the basis gamut, even though pairs of basis functions at boundaries are significantly modified.</figcaption></figure>

100nm outside of $U$, which produces more physically-plausible results when observed outside of the visible range since the reconstructed spectra then gently fade to zero outside of $U$.

**Expressivity-smoothness trade-offs** We need to devise metrics to quantify the degree of expressivity of a set of basis functions, as well as the smoothness of the spectra it is able to produce, depending on the positions of its knots and the number $K$ of bases.

An expressive basis requires a wide gamut that encompasses the chosen RGB gamut as much as possible. We thus rely on what we call the excess area $A$, which is the signed area between the basis and sRGB gamuts, normalized by the area between the horseshoe-shaped chromaticity gamut and the RGB gamut. This area is computed by tesselating the region between the RGB and basis gamuts into quads (see Figure 7(left)).

Basis smoothness is directly related to the smoothness of individual basis functions, which depends on both the number $K$ of bases and their knots $\{\kappa_k\}$. We compute the smoothness of a basis set as $S = \min_k \text{FWHM}_k$, where $\text{FWHM}_k$ is the full width at half maximum of the $k$th basis.

As shown in Figure 7, for $K = 7$ bases and a sRGB spectrum, the excess area $A$ and smoothness $S$ criteria evolve differently as a function of $(s, p)$, the parameters of the knots warping function. How this pair of criteria is balanced is arbitrary. In this paper, we usually first pick a number $K$ of basis functions, and then brute-force find the warping parameters that maximize $A$ under the constraint that $S < 20\text{nm}$. We indicate such a $(s, p)$ pair for $K = 7$ in Figure 7 by a black cross.
<figure><img src="image_8.png" /><figcaption>Figure 7: Warping optimisation. Top row: the excess area A is computed by tesselating the region between the RGB and basis gamuts into quads (left) and adding their signed areas (positive in green, negative in red, mixed in gray). We computed A for several values of the (s, p) warping parameters (middle) as well as a smoothness criterion S (right). Bottom row: our (s(K), p(K)) trade-offs for various numbers K of basis functions, and two example basis gamuts before (orange) and after (green) warping. We plot (s(7), p(7)) = (0.66, 0.39) with black crosses in criteria maps.</figcaption></figure>

# 6. Applications

We now present application scenarios where we use our one-to-many mapping to find spectra with interesting visual appearance. Unless otherwise specified, we use warped basis functions with (s, p) parameters determined as described in the previous section.

## 6.1. Reproducing Vathochromism

Figure 1 demonstrates a reproduction of the Usambara effect using our approach. We use $K = 11$ warped basis functions and sample the equivalence class of spectra that achieves the target chromaticity $c = [0.38, 0.45]^T$ and luminance $F_y = 0.46$. All such spectra are considered as transmittance spectra at a unit optical depth, which is related to the extinction coefficient $\sigma_t$ of a medium by $T_1(\lambda) = e^{-\sigma_t(\lambda)}$. The Beer-Lambert-Bouguer law at increasing depths $d$ is then given by $T_d(\lambda) = T_1(\lambda)^d$. For each sample of the equivalence class, we then integrate the corresponding $T_d$ over color matching functions and plot the resulting transmittance curve in the chromaticity diagram. A pair of examples is shown in Figure 1(c), where we have picked two instances of the class that reproduce the Usambara effect – here with an orange color at large optical depths. For rendering, we need to specify $\sigma_a$ and $\sigma_s$, the absorption and scattering coefficients. In Figure 1(b), we use $\sigma_s(\lambda) = T_1(\lambda)$ to achieve the target color on single scattering, which yields $\sigma_a(\lambda) = -\log T_1(\lambda) - T_1(\lambda)$.

**Parameterizing the equivalence class** In the previous example, randomly sampling the equivalence class and then picking spectra that achieve the desired effects only provides indirect control over achieved colors at an optical depth $d > 1$. For some applications, a more direct control might be desired. Unfortunately, depending on the choice of basis, not all color appearance choices can

be achieved. We provide a more direct control by parametrizing the equivalence class for the specific case of vathochromic transmittance spectra, which we illustrate on a series of unit tests in Figure 8. The main idea is to pick an a priori set of representative spectra from the equivalence class, order them in chromaticity space, and interpolate them to navigate through a subset of relevant spectra. We use spectra formed by all triangles that contain the target chromaticity c, which naturally tend to result in distinct color appearance since they only rely on three basis functions. We then sample their transmittance curves at an arbitrary optical depth, and order the representative spectra in clockwise order around the equiluminant point $E = (\frac{1}{3}, \frac{1}{3})$ according to chromaticity samples, as illustrated in Figure 8(left). As demonstrated in the accompanying video, when the user specifies a hue, we interpolate among the two closest transmittance curves in the chromaticity diagram.

**Unit tests** The remainder of Figure 8 shows a test scene composed of a slab of homogeneous transparent and scattering medium, lit by two white point light sources: one behind and one in front‡. As in Figure 1, the absorption and scattering coefficients are determined from $T_1(\lambda)$ for each of the seven representative spectra of the equivalence class to render test images. The optical depth of light paths coming from behind is typically short, and exhibits the target chromaticity c for all tests as expected. Light paths that come from the light in front instead need to be scattered to reemerge toward the camera and exhibit target hues at greater optical depths.

**Vathochromic reflectance** Vathochromic effects may also occur with reflectance spectra, due to inter-reflections on shiny (typically metallic) materials. Figure 9 illustrates this effect on a crumpled paper model. We use $K = 9$ warped basis functions. In this case, the target chromaticity $c = [0.4, 0.43]^T$ and luminance $F_y = 0.59$ control the reflectance at normal incidence $R_0$ after a single scattering event. We then use the parametrization shown in Figure 8(left) to span the equivalence class of reflectance spectra, using Schlick’s reflectance model [Sch94] to compute $R_0(\lambda)^d$ at normal incidence and the corresponding reflectance curves at discrete orders $d$ of inter-reflection. This allows us to quickly find three different spectra that yield the same appearance in direct lighting, but exhibit the desired targeted hues in inter-reflections.

## 6.2. Reproducing Metamerism

Our one-to-many sampler also permits the exploration of the space of metameric spectra. Instead of directly using the PU to build a basis gamut in chromaticity space, we premultiply each element of the partition of unity with a target illuminant $I(\lambda)$:

$$B_k^I(\lambda) = B_k(\lambda)I(\lambda). \qquad (21)$$

This defines a different gamut in chromaticity space per illuminant:

$$\mathbf{b}_k^I = \frac{[B_{k,X}^I, B_{k,Y}^I]^T}{|B_k^I|}. \qquad (22)$$

<footnote>‡ Such scenes are typically long to converge in a spectral path tracer. We will provide more converged results in a final version of the paper.</footnote>
Now, given a choice of illuminant – say *D65*, we sample the equivalence class that achieves a target chromaticity *c*<sup>*D65*</sup>, yielding a set of vectors {*w*<sup>*D65*</sup>} of basis coefficients. When these vectors are used with the basis functions premultiplied by another illuminant – say *F2*, they yield different chromaticities since **b**<sub>*k*</sub><sup>*F2*</sup> ≠ **b**<sub>*k*</sub><sup>*D65*</sup>.

**Unit tests** Metameric patches are shown in Figure 10, where a same achromatic color in *D65* is shown to correspond to a variety of different chromaticities in *F2*, using *K* = 7 non-warped basis functions. Each sample of the *D65* equivalence class thus yields an element of the palette achievable through metamerism. The greenish trend in the color palette is due to the choice of illuminant *F2*.

**Hidden patterns and images** If we assign two different spectra from a metameric palette to two different regions of a surface, we obtain the result shown in Figure 11, where the use **c** = [0.32, 0.25]<sup>†</sup> and *F*<sub>*y*</sub> = 0.8. Here the spectrum controls the spectral diffuse albedo of a Lambertian material. The pattern is thus hidden under *D65* illumination, but revealed under *F2*. Note that for rendering, we use the original basis functions *B*<sub>*k*</sub>(*λ*), not the premultiplied ones. A similar effect can be obtained with hidden images, as shown in Figure 12. Here we take a gray-level picture as input, and blend 8 spectra of increasing luminance from the metameric palette of Figure 10 to reproduce luminance gradients. Compared to the tool of [BDM09], our approach has two advantages: 1) their tool finds a single optimal metameric spectrum while we obtain a whole metameric palette; 2) they do not impose smoothness constraints on reflectance spectra while ours are smooth by design.

## 6.3. Performance

As shown in the supplemental video, and although the prototype is implemented as a mono-threaded Python script, our upsampling method runs in real-time for artistic design. We measured timings for an increasing number of basis elements *K* on an Intel i3-6100 CPU at 3.70GHz. We report that our method runs at 4.9ms for *K* = 5, 13.1ms for *K* = 7, 19.3ms for *K* = 9, and 27ms for *K* = 11.

Note that using the Metameric Blacks construction [Wys58] requires to track a number of constraints equals to twice the number of bins of a discretized spectra. In the literature, 31 bins are commonly used. We measured that generating the convex hull for a binning of 21 bins already takes 6.3s on average per spectra when using the scipy's interface to the qhull library (with default parameters and double precision)§.

## 7. Discussion and future work

We have introduced a novel method to upsample a color to an equivalence class of spectra through a well-defined one-to-many mapping. It provides another reason to move to spectral rendering besides the production of more photorealistic rendering results: the exploration of new visual effects as well as the imitation of those found in nature (gem stones, oils, etc). We have focused in particular on the generation of vathochromic effects, both in transmission and reflection, generalizing the intriguing Usambara effect. We

have also shown how our approach applies to metameric effects. We now discuss its specificities.

**Differences with Metameric Blacks** The main difference with previous work in optics resides in the way reflectance spectra are represented. Methods that rely on discretized spectra (e.g., [Wys58, CK82]) require a small number of spectral bins to be computationally tractable, as discussed in Sections 2 and 6.3 and result in unrealistic spectra (Figure 14). Another difference lies in the ease with which metameric sets may be explored. In our approach, an artist can quickly pick an achievable chromaticity (in the basis gamut), for which a maximum achievable luminance is readily provided through $\overline{\mathbf{w}}$ (Equation 16). In contrast, with the metameric blacks approach, when a target color results in an empty metameric set, users have to go through trial and error to find a color for which at least one spectrum exists.

An alternative is to rely on measured spectra, such as in the work of Finlayson and Morovic [FM05]. Similar to Schmitt [Sch76], they reconstruct metamers using barycentric coordinates in the space of spectra. That is, from a set of *K* measured spectra $s_k(\lambda)$ they reconstruct $r(\lambda) = \sum w_k s_k(\lambda)$ where $w_k$ are positive weights with $\sum w_k = 1$ (Equation (27) in their paper). This imposes that $r(\lambda)$ is in the convex hull of the $s_k(\lambda)$. Our method only imposes validity constraints, $w_k \in [0, 1]$. Therefore, we can always reconstruct perfect blacks ($r(\lambda) = 0, \forall \lambda$), perfect whites ($r(\lambda) = 1, \forall \lambda$), and achieve any target luminance *Y*. On the other hand, their method trivially yields physically-realistic spectra, whereas ours is more adapted to artistic exploration.

**Limitations** An inherent limitation of spectral asset creation, already pointed out by MacAdam [Mac35b, Mac35a], is that one needs to trade saturation for luminance. Indeed, saturated spectra necessarily have narrow bands, and our approach is no different in this respect. This limitation might explain the difficulty to create visually-noticeable vathochromic effects in microfacet models to control the color of the multiple scattering term (see Figure 13).

A direction of improvement for our method lies in the design of techniques to navigate through equivalence classes. In particular, it would be useful to give an analytical description of bounds imposed by the target luminance $F_y$ (i.e., the boundary between opaque and transparent points in Figure 4(middle)).

Last, even though the spectra generated by our approach are physically-plausible, they are not physically-realistic by design. Real spectra obey physical rules of their own. For instance, the real and imaginary parts of refractive indices are bound by the Kramers-Kronig relations. It would thus be interesting to establish connections with physical models of spectra. In this respect, having a large equivalence class from which to pick spectra closest to physically-realistic ones could be an advantage.

**Future work** Our method could be used to reproduce and study a number of interesting optical phenomena. The Alexandrite effect, an instance of metamerism, is one famous example: with our approach, we could investigate whether other spectra could potentially create similar effects. Interesting applications could be found in ecology, where the illuminant plays a crucial role in defin-

<footnote>§ We do not count occurrences where the algorithm fails to find a solution.</footnote>
<figure><img src="image_9.png" /><figcaption>**Figure 8: Parametrization and unit tests.** We use our parametrization based on representative spectra to navigate through equivalence classes of transmittance spectra. The resulting spectra (colored by their hue at a large depth) are used for both absorption and scattering coefficients for a slab of homogeneous medium. The slab is lit by a point light source in front, and another from behind to distinguish first-order scattering (top row) from high-order scattering (bottom row). We scaled the medium to highlight $d = 10$ optical depth points (colored dots in the chromaticity diagram).</figcaption></figure>

<figure><img src="image_10.png" /><figcaption>**Figure 9: Vathochromic reflectance.** Multiple scattering has the same effect as a change in optical depth: it saturates the reflectance spectrum with a power law. Only this time, the exponents are integers. We use our vathochromic spectra as the $R_0$ component of a Schlick Fresnel in a microfacet model. While single scattering produces the same appearance, multiple scattering depicts a change in tint that we control (from green to yellow).</figcaption></figure>

ing habitats. For instance, we could study how families of spectra are affected by lighting at different depths under water or under a dense foliage. We would also like to explore the extension of vathochromism to take into account fluorescence effects, which abound in nature. Finally, we have only considered normal human color vision through the use of CIE sensitivity functions. A captivating direction of future work would be to experiment with sensitivity functions adapted to color blindness, or even to animal vision.

<figure><img src="image_11.png" /><figcaption>**Figure 10: Metameric palette.** We use our method to generate 32 spectra that produce the same achromatic color $F_Y = 0.8$ under a D65 (black dot and middle column) but provide a variety of colors under a F2 illuminant (blue dots and right column). We evaluate the accessible variability of metameric spectra under such a D65</figcaption></figure>

<figure><img src="image_12.png" /><figcaption>**Figure 11: Metameric pattern.** We use a binary texture (inset, right) to drive the use of one of two metameric spectra that both appear purple under a D65 illuminant, but differ in color under a F2 illuminant.</figcaption></figure>

## References

[AL07] ALSAM A., LENZ R.: Calibrating color cameras using metameric blacks. *JOSA A* 24, 1 (2007), 11–17. 2

[BDM09] BERGNER S., DREW M. S., MÖLLER T.: A tool to create illuminant and reflectance spectra for light-driven graphics and visualization. *ACM Transactions on Graphics* (TOG) 28, 1 (2009), 1–11. 2

[BJIA12] BONVENTI JR W., ISOTANI S., ALBUQUERQUE A. R. P.: Color dependence on thickness in topaz crystal from Brazil. *Advances in Condensed Matter Physics* 2012 (2012). 2

[CK82] COHEN J. B., KAPPAUF W. E.: Metameric color stimuli, fundamental metamers, and Wyszecki's metameric blacks. *The American journal of psychology* (1982), 537–564. 2, 8

[FHL*18] FASCIONE L., HANIKA J., LEONE M., DROSKE M., SCHWARZHAUPT J., DAVIDOVIČ T., WEIDLICH A., MENG J.: Manuka: A batch-shading architecture for spectral path tracing in movie production. *ACM Transactions on Graphics* (TOG) 37, 3 (2018), 1–18. 1, 2

[FM05] FINLAYSON G. D., MOROVIC P.: Metamer sets. *JOSA A* 22, 5
<figure><img src="image_13.png" /><figcaption>**Figure 12:** *Metameric image.* In this example, we produce a dense set of metamер spectra to hide the photograph of a cat (inset, right) under D65 lighting. For each pixel, we blend 8 spectra using the target image's gray level. Blending factors are computed as a smooth Partition of Unity on [0, 1].</figcaption></figure>

<figure><img src="image_14.png" /><figcaption>**Figure 13:** *Limitations.* We use vathochromic spectra for Fresnel reflectance to control the color of multiple scattering within micro-facet models [HHdD16]. The left and right spheres are rendered using single and multiple scattering respectively, with a roughness $\alpha=0.99$. The insets show three samples from the equivalence class. Above some luminance value (left), it is difficult to achieve a variety of colors in the generated spectra. Reducing the target luminance (right) produces slightly more diverse spectra.</figcaption></figure>

(2005), 810–819. 2, 8

[GGDG22] GUARNERA C., GITLINA Y., DESCHAINTRE V., GHOSH A.: Spectral upsampling approaches for RGB illumination. In *Eurographics Symposium on Rendering* (2022), Eurographics Association. 1, 2

[Gla95] GLASSNER A. S.: A model for fluorescence and phosphorescence. In *Photorealistic Rendering Techniques*. Springer, 1995, pp. 60–

<figure><img src="image_15.png" /><figcaption>**Figure 14:** *Comparison with Metameric Blacks (MB).* Both our method and Metameric Blacks permit to sample all possible metamers for a target color (here $C = [0.05, 0.1, 0.01]$) in their respective equivalence class. However, MB uses a binned representation (here 21 bins) which yields unrealistic reflectance spectra.</figcaption></figure>

70. 3

[GS82] GÜBELIN E., SCHMETZER K.: Gemstones with Alexandrite effect. *Gems & Gemology* 18, 4 (1982), 197–203. 2

[HFW21] HUA Q., FICHET A., WILKIE A.: A Compact Representation for Fluorescent Spectral Data. In *Eurographics Symposium on Rendering - DL-only Track* (2021), Bousseau A., McGuire M., (Eds.), The Eurographics Association. 3

[HHdD16] HEITZ E., HANIKA J., D'EON E., DACHSBACHER C.: Multiple-scattering microfacet BSDFs with the Smith model. *ACM Transactions on Graphics* (TOG) 35, 4 (2016), 1–14. 10

[His20] HISE J.; 2020. URL: https://www.desmos.com/calculator/3zhzwbfrxd. 6

[Jen21] JENDERSIE J.: Ray Tracing Gems II: Next Generation Real-Time Rendering with DXR, Vulkan, and OptiX. Apress, 2021, ch. Fast Spectral Upsampling of Volume Attenuation Coefficients, pp. 153–159. 1, 2

[JH19] JAKOB W., HANIKA J.: A low-dimensional function space for efficient spectral upsampling. In *Computer Graphics Forum* (2019), vol. 38, Wiley Online Library, pp. 147–155. 1, 2, 3

[JWH*19] JUNG A., WILKIE A., HANIKA J., JAKOB W., DACHSBACHER C.: Wide gamut spectral upsampling with fluorescence. In *Computer Graphics Forum* (2019), vol. 38, Wiley Online Library, pp. 87–96. 3

[LF20] LIN Y.-T., FINLAYSON G. D.: Physically plausible spectral reconstruction. *Sensors* 20, 21 (2020), 6399. 2

[LSH99] LIU Y., SHIGLEY J., HALVORSEN A.: Color hue change of a gem tourmaline from the umba valley, tanzania. *Journal of Gemology* 26, 6 (1999), 386–396. 2

[LSW14] LIU Y., SHI G., WANG S.: Color phenomena in blue amber. *Gems and Gemology* 50, 2 (2014), 134–140. 2

[Mac35a] MACADAM D. L.: Maximum visual efficiency of colored materials. *J. Opt. Soc. Am.* 25, 11 (Nov 1935), 361–367. 8

[Mac35b] MACADAM D. L.: The theory of the maximum visual efficiency of colored materials. *J. Opt. Soc. Am.* 25, 8 (Aug 1935), 249–252. 8

[MF06] MOROVIC P., FINLAYSON G. D.: Metamer-set-based approach to estimating surface reflectance from camera RGB. *JOSA A* 23, 8 (2006), 1814–1822. 2

[MFW18] MOJZÍK M., FICHET A., WILKIE A.: Handling fluorescence in a uni-directional spectral path tracer. In *Computer Graphics Forum* (2018), vol. 37, Wiley Online Library, pp. 77–94. 3

[MMA11] MOROVIC J., MOROVIC P., ARNABAT J.: Hans: Controlling ink-jet print attributes via neugebauer primary area coverages. *IEEE Transactions on Image Processing* 21, 2 (2011), 688–696. 2

[MSHD15] MENG J., SIMON F., HANIKA J., DACHSBACHER C.: Physically meaningful rendering using tristimulus colours. *Computer Graphics Forum* 34, 4 (2015), 31–40. 2

[MY19] MALLETT I., YUKSEL C.: Spectral Primary Decomposition for Rendering with sRGB Reflectance. In *Eurographics Symposium on Rendering - DL-only and Industry Track* (2019), The Eurographics Association. 1, 2

[OYH18] OTSU H., YAMAMOTO M., HACHISUKA T.: Reproducing spectral reflectances from tristimulus colours. In *Computer Graphics Forum* (2018), vol. 37, Wiley Online Library, pp. 370–381. 1, 2

[Pee93] PEERCY M. S.: Linear color representations for full speed spectral rendering. In *Proceedings of the 20th annual conference on Computer graphics and interactive techniques* (1993), pp. 191–198. 1, 2

[PMHD19] PETERS C., MERZBACH S., HANIKA J., DACHSBACHER C.: Using moments to represent bounded signals for spectral rendering. *ACM Transactions on Graphics* (TOG) 38, 4 (2019), 1–14. 3

[Sch76] SCHMITT F. J.: A method for the treatment of metamerism in colorimetry. *JOSA* 66, 6 (1976), 601–608. 2, 8
[Sch94] SCHLICK C. M.: An inexpensive brdf model for physically-based rendering. *Computer Graphics Forum* 13 (1994). 7

[Smi99] SMITS B.: An RGB-to-spectrum conversion for reflectances. *Journal of Graphics Tools* 4, 4 (1999), 11–22. 1, 2

[TN72] TAKAHAMA K., NAYATANI Y.: New method for generating metameric stimuli of object colors. *JOSA* 62, 12 (1972), 1516–1520. 2

[TWF22] TÓDOVÁ L., WILKIE A., FASCIONE L.: Wide gamut moment-based constrained spectral uplifting. In *Computer Graphics Forum* (2022), vol. 41, Wiley Online Library, pp. 258–272. 2

[WFD*21] WEIDLICH A., FORSYTHE A., DYER S., MANSENCAL T., HANIKA J., WILKIE A., EMROSE L., LANGLANDS A.: Spectral imaging in production: course notes Siggraph 2021. In *ACM SIGGRAPH 2021 Courses*. 2021, pp. 1–90. 2

[WLA*22] WEIDLICH A., LEGENDRE C., ALIAGA C., HERY C., AUBRY J.-M., VORBA J., SIRAGUSANO D., KIRK R.: Practical aspects of spectral data in digital content production. In *ACM SIGGRAPH 2022 Courses* (2022), SIGGRAPH '22, Association for Computing Machinery. 1, 2

[Wys58] WYSZECKI G.: Evaluation of metameric colors. *JOSA* 48, 7 (1958), 451–454. 2, 8

[ZB07] ZHAO Y., BERNS R. S.: Image-based spectral reflectance reconstruction using the matrix r method. *Color Research & Application* 32, 5 (2007), 343–351. 2