Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: A little WebGL gamma calibration ditty (Read 7910 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

A little WebGL gamma calibration ditty

I've had an ongoing interest in accurate display calibration, and mucked around in WebGL a few days ago and wrote an app which displays some zone plates in red/green/blue/white. This seems to me to be a much easier to see and more sensitive way of calibrating display gamma than the usual "ramp" image you normally see, and because the rendering algorithm is right there in the source code, the signal processing is absolutely transparent. If you find this useful lemme know and I'll upload it to some more permanent location like googlecode or something.

http://files.audiamorous.net/webgl-gamma/index.html

A WebGL-enabled browser is required - on Windows, this limits you to the Chrome Canary build, possible with the "--enable-webgl --enable-accelerated-2d-canvas" command-line flags, or the Firefox 4 beta (which IIRC may require further configuration in about:config for enabling WebGL).

A little WebGL gamma calibration ditty

Reply #1
Slowly dragging the window edge in Canary 9.0.576.0 causes the graphic to scale by -1px, which causes interpolation across the whole graphic and throws off the intended Moiré pattern.

Screenshots to illustrate the difference:
Intended
Messed Up

At the moment, I'm using a CRT. Is it still helpful if I continued testing?

I'd rather not install the Firefox 4 beta, because its settings somehow bite an existing profile.

A little WebGL gamma calibration ditty

Reply #2
Yeah, I noticed those sorts of resizing issues in Canary. Usually they go away when you hover or click over the canvas area.

I rewrote the app in the 2D Canvas API, which should work with pretty much anything but IE now, although it is *noticeably* slower on my machine:

http://files.audiamorous.net/web-gamma/index.html

I would not recommend using a CRT with this - the phosphor bloom is likely to really screw with the calibration - but if you do have one, only calibrate against the squares in the 2nd and 5th columns (out of 6). These have the lowest horizontal frequency content and so are least compromised by any distortion in the analog display connection.

A little WebGL gamma calibration ditty

Reply #3
I just updated the web-gamma/ app with a "scale" parameter (visible in the advanced options). This is basically a pixel-doubling approach which should proportionally reduce the effect of CRT phosphor bloom on the calibration process. No guarantees though.

A little WebGL gamma calibration ditty

Reply #4
Quote
but if you do have one, only calibrate against the squares in the 2nd and 5th columns (out of 6).


Well, then if your doodad is to be believed, my monitor is hunkydory. Not bad for a 6+ year old CRT tweaked by eye.

Unfortunately, I have next week off, so I can't test it on my work's IPS monitor. Maybe I can coerce some friends into visiting the page. Should be interesting though, because the lighting conditions between my home and work are entirely different, and I already apply a big dollop of brightness correction to the work monitor. Without it, all pixels below 10% just become fully black. After my correction, it checks out on some calibration pages I found.

Quote
I rewrote the app in the 2D Canvas API, which should work with pretty much anything but IE now, although it is *noticeably* slower on my machine:


The WebGL version loads up slower on Canary, but it responds to setting changes almost immediately. The Web version responds in about a third of a second, so it's not a real problem.

The scale factor does reduce the anomalous circles, and confirm that my monitor is in good order— at least as far as the grey point is concerned.

A little WebGL gamma calibration ditty

Reply #5
That your CRT "kinda" nails the calibration tests does not really surprise me all that much - my NEC Multisync 77F does really well out of the box too, and it was a bottom-of-the-barrel sort of deal (I paid $130 for it back in 2003). sRGB, and display gamma curves in general, were originally designed to model CRT characteristics for particular manufacturers, so it seems very expected that CRTs manufactured in the post-sRGB era would be capable of matching gamma 2.2 fairly well.

I have one (*quite* expensive, and A-list brand) LCD which, while it has had a stellar service record, has blur/sharpness controls on the digital inputs which are *not bypassable*. Pisses me off a very great deal. My Dell 2405 - purchased back in the stone ages in 2004, when $800 was a steal for a 24" LCD - is stellar in comparison.

For some added fun, click the "advanced" checkbox and try these:
  • Set "color maximum magnitude" to 2^-5 or below and alternate between sRGB and gamma 2.2 settings. See which one your monitor likes the most.
  • Click on the "fade to color complement" checkbox. This is a really good acid test to use if you've had to really aggressively tune the per-channel gamma settings: if the overall color profile isn't perfectly grey, the gamma is getting skewed.
  • Set gamma to 1.0 and save the canvas to a PNG in Firefox (this can't be done nearly as easily in Chrome). Have your dirty way with the image in the GIMP to simulate various image distortions.


 

A little WebGL gamma calibration ditty

Reply #6
Currently viewing in a HP LP2065, which is an S-IPS with a fairly significant correction for environment light and its own darkness. In Catalyst's controls, I basically tweaked the displayed curve to remain as straight as possible while shifting its black point upwards. The Photoshop equivalent would be to put a value of ~20 in the Output field of the Curves dialog.

It should be clear that this monitor's gamma is somewhat messed up in its current state. Still a fine monitor, though.