3 ms·
In VFX for film, color is a huge issue too. What companies mostly do is to try to use a 'linear-to-light' color-space internally, pre-linearizing turned-over fo
by danwills 5y ago
In VFX for film, color is a huge issue too. What companies mostly do is to try to use a 'linear-to-light' color-space internally, pre-linearizing turned-over footage before working with it, and then post-transforming the final composites either back to the original colour space, or something similar. Doing this allows images to be freely filtered, resized, defocused, color-corrected etc whilst within the pipeline without it creating incorrect results because of non-linear color.
Kinda seems like it might be quite nice in a web/css world to be able to similarly work in some kind of fairly neutral 'linear' color-space in the code, and let the platform and hardware translate that as well as it can?
- joshu 5y agoAny good tutorials or beginner articles about this?
- krono 5y agoSomeone posted this cool little tool[1][2] on Reddit a while back (no affiliation). It colour grades an image you upload based on a scene you select from their gallery. Not really what you asked for but it helped me understand how massive of an impact colour grading can have on how you perceive a scene. 1 https://match.color.io/ https://match.color.io/ 2 https://v.redd.it/113ksxlphgz61/DASH_720.mp4 https://v.redd.it/113ksxlphgz61/DASH_720.mp4
- scq 5y agoThis article covers things really well: http://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/ http://blog.johnnovak.net/2016/09/21/what-every-coder-should...
- danwills 5y agoI found this: https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-24-importance-being-linear https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-... This is about working with linear-to-light values on GPUs however the issues in VFX are largely the same.
- Cullinet 5y agoA Web OpenEXR you mean? https://en.m.wikipedia.org/wiki/OpenEXR https://en.m.wikipedia.org/wiki/OpenEXR
- danwills 5y agoYeah totally! Some of the ideas from openEXR seem like they could help a lot here! Of course there's nothing stopping ppl from storing not-linear pixel values in whatever color space you like in an exr file, but at least the format can do a reasonable job of recording metadata about this, so that it can still hopefully still be linearized on load. I think it's worth noting here that linearizing-after-load is often not good enough, since the renderer most often has already automatically filtered (think MIP pyramid/etc) the texture values by the time you get hold of them. You always want the values in a linear color space (gamma=1.0) during filtering. Some renderers try to support this so you can load a jpeg without thinking about it too hard but myself I would prefer to include an explicit linearization step for extra control and peace of mind. You may end up wanting to use a specific LUT to linearize with for example, and the errors that creep in if gamma is not 1.0 can be quite subtle and hard to put your finger on, but can really sap photorealism in a nasty way.
- scq 5y agoThis is also how modern game engines work. Textures are converted to linear space and all rendering is done in linear space before being converted to sRGB for display at the end. Not doing so results in weird looking shading, which has a very 90s/early 2000s feel about it.