Hacker News new | ask | show | jobs
by XaspR8d 2290 days ago
It's not conceptually that different from YUV[1], the color spaces used by PAL television and most JPEG images. I can't speak to the Jaguar, but both of those decisions were motivated by the desire to completely separate the luminance/brightness dimension from the 2 color dimensions. For PAL this was to maintain compatibility with black and white televisions during the slow adoption of color, for JPEG it's a compression trick since the chroma channels can be downscaled more than the grayscale without humans noticing as readily.

In any case I'd argue the ability to reason about this space is a bit more natural than RGB (and a bit less than HSV) too.

But I'm sure there were some other specific requirements they were trying to satisfy...

[1] - https://en.wikipedia.org/wiki/YUV

3 comments

YCbCr (often called YUV for... reasons) and 4:2:0 chroma subsampling (half the vertical resolution for each plane of color information as for the brightness) are still the dominant color encoding used for digital video, HDTV, Blu-ray, etc.

The "CRY" model used by the Jaguar is fairly different than (though as you say, related conceptually in its separation of brightness/darkness information, of course). I think it basically just arose from a combination of big focus on smooth shading while keeping the color values workably small and fast to calculate on.

It is fundamentally different than YUV (PAL)/YIQ (NTSC). In those systems, the IQ/UV regions are monotonic. In the Jaguar color space, axes have different meanings depending on which quadrant you're in. In the (-1,-1),(0,0),(1,-1) triangle the vertical dimension appears to have no effect.

When Nintendo natively used the YIQ color space for the NES, that makes sense, because it simplified the hardware, because it's the color space used by NTSC. It's not apparent to me that there's an easy way to convert this non monotonic color space into YUV/YIQ.

Thanks for the explanation and the link! I'd imagine it would make shading a little more computationally quick, now that you mention separating color from brightness.