Notes of Tone Mapping
About tone mapping
- "A CLOSER LOOK AT TONE MAPPING" by MJP
Filmic Tone Mapping
"Drago’s Adaptive Logarithmic" Eurographics 2003
S-curve
- "Mike Day: An efficient and user-friendly tone mapping operator" 2012
- "Real-World Measurements for Call of Duty: Advanced Warfare" SIGGRAPH 2015
Tone Mapping : Graphics Rants
UE4
Unity5
- Tone Mapping @ Unity
Notes of auto exposure in games
UE4
- Eye Adaptation @ UE4
- "Next-gen Mobile Rendering" GDC 2014
Others
- "Advanced Lighting R&D at Ready At Dawn Studios" SIGGRAPH 2015
- "Automatic Exposure" Krzysztof Narkowicz
- "Perceptual Eects in Real-time Tone Mapping" 2005
- "Automatic Exposure Correction of Consumer Photographs" 2015
- "Real-World Measurements for Call of Duty: Advanced Warfare" SIGGRAPH 2015
- "METAL GEAR SOLID V: THE PHANTOM PAIN" at CGWORLD 2015/10
- "Fast GPU Histogram Analysis for Scene Post-Processing" GDC 2009
- "Practical Implementation of High Dynamic Range Rendering" GDC 2004
@PadraicHennessy
- Implementing a Physically Based Camera: Understanding Exposure
- Implementing a Physically Based Camera: Manual Exposure
- Implementing a Physically Based Camera: Automatic Exposure
Notes of toy camera filter
- Fred's ImageMagick Scripts : toycamera
- Uncovering Toy Cameras and Polaroid Vintage Effects (With Photoshop Tutorials)
- Using Toy camera mode : PhotoStyle
Notes of Gaussian Blur
- "An investigation of fast real-time GPU-based image blur algorithms" Intel
- "Quick Gaussian Filtering" Real-Time Rendering
- Optimizing Gaussian blurs on mobile GPU
- "Faster Gaussian Blur in GLSL" xissburg
- "Optimizing Gaussian blurs on a mobile GPU" Sunset Lake Software
- "Gaussian Blur Shader (GLSL)" 3-Blog
- "mattdesl/lwjgl-basics" Lesson 5 Blurs
Notes of colorimetry in Japanese
- 人間が見える光の波長の範囲 : 380nm-830nm
- V(λ) : CIE Photometric curve
CIE rgb 等色関数
- λr = 645.2 nm, λg = 525.3 nm, λb = 444.4 nm
- Qλ = r(λ) R + g(λ) G + b(λ) B
- × : 波長によっては負の値を取ってしまう
CIE XYZ 等色関数
// XYZ to xyz x = X / ( X + Y + Z ); y = Y / ( X + Y + Z ); z = Z / ( X + Y + Z ) = 1 - x - y;
// xyY to XYZ X = ( x / y ) * Y; Y = L; Z = ( z / y ) * Y = ( ( 1 - x - y ) / y ) * Y;
// sRGB(D65) to XYZ X = 0.4124 * r + 0.3576 * g + 0.1805 * b; Y = 0.2126 * r + 0.7152 * g + 0.0722 * b; Z = 0.0193 * r + 0.1192 * g + 0.9505 * b;
// XYZ to sRGB(D65) r = 3.2405 * X + ( - 1.5371 ) * Y + ( - 0.4985 ) * Z; g = ( - 0.9693 ) * X + 1.8760 * Y + 0.0416 * Z; b = 0.0556 * X + ( - 0.2040 ) * Y + 1.0572 * Z;
// sRGB(D65) to xyY X = 0.4124 * r + 0.3576 * g + 0.1805 * b; Y = 0.2126 * r + 0.7152 * g + 0.0722 * b; Z = 0.0193 * r + 0.1192 * g + 0.9505 * b; x = X / ( X + Y + Z ); y = Y / ( X + Y + Z );
// xyY to sRGB(D65) X = ( x / y ) * Y; Z = ( ( 1 - x - y ) / y ) * Y; r = 3.2405 * X + ( - 1.5371 ) * Y + ( - 0.4985 ) * Z; g = ( - 0.9693 ) * X + 1.8760 * Y + 0.0416 * Z; b = 0.0556 * X + ( - 0.2040 ) * Y + 1.0572 * Z;
Y Cb Cr
// RGB to Y Cb Cr Y = 0.299 * r + 0.587 * g + 0.114 * b; cb = - 0.168 * r + ( - 0.333 ) * g + 0.498 * b; cr = 0.498 * r + ( - 0.417 ) * g + ( - 0.081 ) * b;
// Y Cb Cr to RGB r = 1.000 * Y + 0.000 * cb + 1.397 * cr; g = 1.000 * Y + ( - 0.343 ) * cb + ( - 0.711 ) * cr; b = 1.000 * Y + 1.765 * cb + 0.0000 * cr;
Lab
- a 色かぶり : a > 0 で赤, a < 0 で緑
- b ホワイトバランス : b < 0 で 青, b > 0 で黄
- a, b 値の範囲は -128-127 とかが一般的
Lights
- CIE D65 (6504 K ), D55 (5503 K), D75 (7504 K)
- K <-> choromaticity coordinates (xy)a