New Primaries module

Maybe this can help?

3 Likes

Yes, this is a good reference. Same principle, different application. Thank you @agriggio.

@Tamas_Papp: you could have a look at section 2 of that paper. I will refer to its notation in the following.

Let the r subscripted primaries be the working space primaries (+ whitepoint). And let the m subscripted primaries be the ones chosen by the user, by rotating and scaling the working primaries in 2D in the xy plane (this is very mundane 2D geometry, it is literally just rotations, scaling and projecting the rotated primary to the gamut triangle edge with a line intersection).

Then, the resulting matrix, as used by this module, is

\mathbf{A} = \mathbf{N}_{RGB}^{-1} \mathbf{M}_{RGB}
3 Likes

Fwiw, this is exactly how it’s done in art too (colour → channel mixer → primaries correction)

Best

2 Likes

@agriggio: thank you, this has been extremely helpful.

@flannelhead: now I understand how a transformation matrix is derived from (x,y) coordinates for R, G, B, W, both for the working space and the anoter set. What is not clear to me how these map to the 8 sliders.

Specifically, does tint hue and tint purity move the whitepoint, with hue determining the direction and purity the magnitude?

Do rotations and scaling apply to the \overline{W'R'} etc (the vector from the new whitepoint) or \overline{WR'} etc (that from the old whitepoint?)

(Of course, all of this can wait until January).

Hello,
Apology for the self-promotion (delete if inappropriate) but I recently implemented the same concept in Nuke with a handy plot visualisation that perhaps should help understand what is happening (check the end of the video) ?

Note the rotation implementation is more naive than described by flannelhead as it is not bound to the source gamut, and this does not implement a purity option even though it could be used to reproduce the purity slider behaviour.

Also taking the opportunity to thanks everyone involve in the making of this feature as it was great to have as a reference to build and experiment in other software !

6 Likes

Yes. The zero angle is anchored at the red primary of the work space.

All rotations are with respect to the old whitepoint.

Hope you had some nice moments while discovering the concepts behind this process :slight_smile:

Great to have you here Liam. Yes, the video is very helpful, thanks for making that.

2 Likes