A lot of weird things happen when I scan the screen that way, moreso directly to the LCD without any case glass on top of it. It was the best I can do. So I had to do tricks in order to grab the data much closely. I had someone who tried to find RGB gamut by clipping black and white’s values to 0-1, except the white being scaled to D65 ones (0.9504,1,1.0889) to reveal. It looks odd to the primary colors as I stated previously, as the blue color on the SP when scaling XYZ has the blue color go way past even rec 2020 which looks unrealistic to what I saw on the SP 001 screen. So my better solution that rally solved all three LCDs constantly is to instead use the RGB values from the HCFR (under Rec 709 Gamma 2.2 and exported from csv) to have the black and white be scaled 0-1. HCFR’s RGB data are stored linearly than actual post-gamma correction. I used the black data from the primary page as I scan the whole primaries just after the greyscale, as when I finish the white color, the colormunki photo somehow is slightly bright on the lens when it just scanned a bright color on a very dim space, but it still samples the white, black, red, green, blue, yellow, cyan, and magenta consistently with very low deviations.
Regardless, it does sample the luminance of the greyscale consistently, as I have that banding issue on the real display too. All I did was to only scale the Y value to 0-1 for the primaries to find its xy values which worked out well. Yeah I scaled it to D65 that way, but the warm white color is pretty much how the GBC looks. Not sure about the dark blacks tho, as that’s another issue I have yet to find out to see its full contrast ratio. But yeah, any instrument can scan color primaries including with inactive subpixels, which even the emission LCD displays has that treatment to both my Colormunki Photo and Display. It was why when I mentioned that about the NDS that it also shows same level of saturation when it’s done that way when comparing the shader with the real display. Of course you can still preserve the white color temperature just by scaling the RGB value down to 1 together instead of each individually, and have your own white values preserve its color temperature while the black one is clipped. It’s the way how to read the chc data’s full input color from its black to white to see how it looks.
The color primaries are solved that way to fully see the colorspace of the LCD. The greyscale can easily be read by its Y value scaled. I even take data from RGB to put onto GIMP before I apply gamma correction and remove saturation after clipping black and white swatches, and get the same luminance results. The problem the screen shows when scanned that way is it somehow scans the gamma at its brightest, so a really bright gamma when it comes out that way. It could be due to how pixels in those reflective displays work on how it perceives the light in order to be lit on different degrees than typical LCDs. It also has different gamma depending on what angle the light shoots to the screen from top, middle, or bottom. Left and Right angle doesn’t matter, but upper angle makes the screen with higher gamma and reverse applies too on lower angle. I ended up using the GBC test suite to use pure black and white horizontal stripes on the motion blur page to check each swatch to find out its gamma by squinting my eyes to blend the horizontal square to see if it blends, and that’s how I find the gamma for it, which I just simply tone the gamma on the scanned gamma inside GIMP and that’s how I figured how its gamma pretty much matched on the whole thing. Even the GBA’s data did the same thing except with a darker gamma by default when scaling the Y value to see how it looks. It has a reverse effect on the gamma works on the GBA by light angle, mostly because of how GBA layout is BGR than GBC using RGB, so the whole screen is rotated 180* angle since the subpixels literally is also rotated. It’s also a gamma I have to solve, except I somehow poorly scanned the greyscale as I haven’t opened the case yet, but I did with the SP as it was easier. It somehow reads the luminance better like almost 5 nits, so figuring the gamma is less of a hassle. Except the very dark colors have a blue tint, which I don’t know why. Tho it concerns me if I left the frontlit on, but it seem impossible since I took out the frontlit glass layer out when I scanned the screen directly, so it wouldn’t shoot lights on the whole screen. Although because of higher read nits than GBC or GBA, the gamma seems to look more closer to the screen overall, and despite the tint on the blacks, clipping it with the whites to find its colorspace still completely matched with the screen.
As of finding out the color temps, I can still solve it by simply scaling the white to D65 on either RGB or XYZ to find the color temps of each swatches. I put them in GIMP and was able to use LCh Color to blend them together, except the SP due to blue tint on darker colors. For GBC and GBA, it was pretty easy, as I just blend them to the gamma ramp to see how it looks. It seem to match the middle and brighter greys quite well, but the darker and the black swatches looks too saturated for how it looks compared to the rest of the greyscale. What I did was play with the averages for GBA gamma by adjusting its RGB gamma each. I was able to have the middle colors match that way while the darker colors blend to the black color pretty good, if not better and matches much more closely to the GBA screen.
So at the end, I really find the greyscale and gamma pretty difficult to solve, but possible based on those experience I did, and still in wip for a scaled look. I spent a week solving the whole situation on the greyscale, with both ups and downs of course.
As for the next steps, the test suite can measure RGB gradients, but I do have issues when opening up the GBC case as I put a new one that makes the battery metal pad tighter so it’s harder to remove. But overall, I can easily solve the color primaries by RGB scaling, and greyscale color temps by RGB or XYZ scaling, and luminance by Y scaling alone. Although I can rescan the GBA without the case someday while trying to average the swatches by multiple data on black swatches to get better reading.
Also, vectors are implictly column vectors in shaders, but they will be treated as row vectors if it results in a possible matrix multiplication where a column vector multiplication would not be possible.