Tristimulus values (X, Y, Z) are the dot product of the incoming spectral radiance (L) and the spectral sensitivity curves (x, y, z) of the three cone cell types:
X = dot(L, x)
Y = dot(L, y)
Z = dot(L, z)
The spectrum of the light reflected from a surface (Lᵣ) is the pointwise product of the incoming spectral radiance (L) and the spectral reflectance curve of the surface (R):
Lᵣ = L * R
What RGB rendering does, is it replaces this equation (for x, y, z):
X = dot(Lᵣ, x) = dot(L * R, x) (eq I)
with this (for x, y, z):
X = dot(L, x) * dot(R, x) (eq II)
Which are not equal in the general case. On the other hand, they
are equal up to a scaling factor if L is a constant function, since in that case:
dot(L * R, x) = C * dot(R, x) (from eq I)
dot(L, x) * dot(R, x) = D * dot(R, x) (from eq II)
where C and D are scaling factors that depend solely on L. The interpretation of this is that as long as the light source has a sufficiently flat spectrum (like sunlight!), the difference between spectral rendering and RGB rendering will be negligible.