GPU Gems1 - 22 颜色控制(Color Controls)
這章將在游戲中圖像處理的討論,擴展到技術和藝術上控制顏色的方法和應用,包括將圖像從一些的色彩空間中移入移出,以及快速地給任何2D或3D場景加上精美的色調。
色彩校正(Color Correction)是幾乎所有印刷和膠片成像應用的一部分。色彩校正可用于將彩色圖像從一個色彩空間移動到另一個色彩空間。
我們在電視、雜志和電影中剪刀的大部分圖像,都經過了非常小心的彩色校正和控制。對于這個過程的理解,可以幫助開發(fā)者在實時應用程序中得到同樣華美的視覺效果。
色彩校正通常有兩種做法:一是各個通道的校正,分別是改變紅色、綠色和藍色各成分;二是混色操作,基于紅、綠、藍各個成分的同時操作,得到每個通道的輸出值。
色彩校正的機理可以簡潔而容易地在一個shader中描述。重要的是,美術和程序員使用的普通工具就能有效地控制他們。在這章中,運用Photoshop創(chuàng)建控制資源,然后通過像素shader應用到實時程序中(敲重點)。
在Photoshop中提供了一些基于通道校正的工具。如級別(levels)和曲線(Curves)工具。
其中曲線是仿制了化學中的交叉處理(cross-processing)外觀,確切地說,就是在C41化合物中處理E6叫絕所產生的假顏色外觀。這樣的處理已在印刷、電影和電視領域使用多年。
重新創(chuàng)建交叉處理效果的Photoshop曲線?
偽交叉處理 (a)原始圖 (b)曲線調節(jié)之后?
首先制作紋理
?
RGB灰度范圍和調節(jié)后的RGB梯度?
然后可以使用下面幾行shader代碼運用于輸出顏色,使用色彩校正紋理映射,可以隨意地用曲線工具重新創(chuàng)建任何色彩變化:
float3 InColor = tex2D(inSampler, IN.UV).xyz; float3 OutColor; OutColor.r = tex1D(ColorCorrMap, InColor.r).r; OutColor.g = tex1D(ColorCorrMap, InColor.g).g; OutColor.b = tex1D(ColorCorrMap, InColor.b).b;?也就是說,使用每個原始的紅、綠和藍像素的灰度值,確定在梯度紋理中我們尋找的相關位置,然后由梯度紋理本身定義對新顏色的重映射,即由復雜曲線調節(jié)所定義的新顏色,如下圖。
?
?可以通過把輸入RGB值乘上一個矩陣進行不同彩色空間之間的轉換。
float4 colorCubePS(vertexOutput IN,sampler2D ColorTex,float3x3 RGBxform) : COLOR {float3 texColor = tex2D(ColorTex, IN.UV);float3 result = mul(RGBxform, texColor);return float4(result, 1.0); } DCC工具所做的彩色立方體變換預覽?
?
關鍵詞提煉】
顏色控制(Color Controls)
色彩校正(Color Correction)
基于通道的顏色校正(Channel-Based Color Correction)
灰度變換(Grayscale Conversion)
色彩空間變換(Color-Space Conversions)
圖像處理(Image Processing)
總結
以上是生活随笔為你收集整理的GPU Gems1 - 22 颜色控制(Color Controls)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GPU Gems1 - 23 景深技术综
- 下一篇: GPU Gems1 - 25 用纹理贴图