추천중입니다.
닫기 블로그로 보내기


설정된 블로그가 없습니다.

블로그 설정하기

슬라이드를 블로그에 보내는 중입니다.
Color Control
0
06260
cagetu 2010.01.11 09:42:05
KASA 발표자료
마가린 바르기bookmarkr.netmetagsWzd.com네이버에 북마크하기다음에 북마크하기HanRSS에 북마크하기이올린에 북마크하기Pumfit에 글 올리기News2.0에 투고하기del.icio.us에 북마크하기
TAG
URL Copy_btn
EMBED Copy_btn
작성자가 등록한 다른 큐
댓글을 작성하기 위해서는 먼저 로그인 하셔야 합니다.
현재 댓글의 수는 0 개 입니다.
Page 0: Page 1: Conversion Color Space & Filtering 발표자 : 이창희 cagetu79@gmail.com cagetu@egloos.com Twitter.com/cagetu Page 2: 알아볼 것들 • 색상 보정 – Channel-Based Color Correction • Level • Curves – Grayscale Conversions – Linear Color Space • 특수 효과 – – – – – Image sharpening through extrapolation Photo Filter Grain Filter Motion Blur Radial Blur Page 3: Channel-Based Color Correction • Levels – Photoshop에서의 Levels command – Gamma, contrast, 전체 이미지의 dynamic range를 수정하거나 독립적으로 채널 색상에 대한 속성들을 조정할 수 있다. [3] • Curves – 생략 Page 4: Grayscale Conversion • RGB를 grayscale로 변환 • Luminance 값 – {0.222, 0.707, 0.071} 은 ITU Rec709 라고 불리는 국제 산업 색상 표준에 따름. [3] Page 5: sRGB 칼라 공간 • 우리가 사용하는 대부분의 디지털 이미지 장비들(디지털 카메라, 모니터, 프린터…)은 표준 non-linear 색 공간이 sRGB를 사용하도록 정해져 있다. 따라서 사진이나 그림 파일들도 그에 맞추어진 형태로 저장된다. • 보통 이미지를 합성(필터링, 블랜딩, 셰이딩…)할 때, 우 리는 색 공간이 linear하다고 생각하지만, 실제 저장된 파 일은 sRGB에 맞춰져 있기 때문에, 연산 전에 먼저 linearize 해줘야 정확한 칼라 연산이 가능해진다고 할 수 있다. 모니터 역시 sRGB에 맞춰져 있기 때문에, 연산 후 sRGB 색 공간으로 변환해줘야 한다. Page 6: sRGB 읽기 • Read sRGB – 텍셀을 fetch할 때, sRGB -> linear – DX10에서는 텍스쳐를 GPU쪽으로 로딩할 때, linear space로 자동 변환되게 할 수 있다. • 변환될 때, 내부적으로 8bit->12 or 16bit로 저장 • 텍스쳐 필터링도 linear space에서 처리 – DX9에서는 로딩 타임이 아닌 텍셀을 fetch할 때 linear space로 변환 • 필터링은 non-linear space에서 하기 때문에, 미묘하게 색이 변함. – 컬러 이미지 외에 선형적인 데이터(노말맵, 스펙맵 등) 은 이미 linear space 에 있기 때문에 따로 처리 할 필 요 없음 Page 7: sRGB 쓰기 • Write sRGB – FrameBuffer에 출력할 때, linear -> sRGB – 블랜딩 모드에서는 프레임 버퍼에서 src를 가져올 때, sRGB -> linear 변환한 결과를 블렌딩 후 sRGB로 변 환 • DX10 이상은 하드웨어적으로 지원 • DX9 에서는 직접 처리 [4] : 비정상적인 출력 :일반적인 alpha blend 공식 주어진 linear space color GPU에 주어졌을 때, 랜더 타겟 색상은 sRGB 공간에서 Blend 수행 전후, 우리가 원하는 GPU 처리 Page 8: sRGB 쓰기 – 알파 블랜딩 - 대부분 D3D9 GPU들은 sRGB 공간으 로 변환 후, blend. 이는 shader 계산이 linear공간에서 되고, sRGB 공간에서 블 랜딩 계산이 수행 => 치명적인 문제 발생 -하드웨어 color –space conversion이 발 생하기 전에, 셰이더 내부에서 알파를 계 산(premultiplied alpha)하면, 위와 같은 공식을 얻을 수 있다. -실제로는 이상하게 보이지만, automatic conversion을 사용하는 것보다는 shader 에서 convert하는 것이, nonpremultipled 경우에서 보다 더 나빠 보이 지 않도록 처리한다. [5] Page 9: Premultipled Alpha • Co = CsAs + (1-As)Cd – RederState • AlphaBlendEnable: True • SrcBlend: One • DestBlend : InvSrcAlpha • 셰이더 내에서, 최종 색상에 미리 계산 – Output.rgb *= Output.a; Page 10: sRGB (Cont’) • Post-Processing을 작업할 때 에는 – 처음 텍셀을 sRGB->linear 변환을 해주고, 마지막 Step의 마지막 Pass에서 linear->sRGB 변환을 해줘야 한다. [2] Page 11: sRGB 기타 이슈 • • Filtering – sRGB 공간에서의 필터링은 그렇게 나쁘지는 않다. MIP-map – Linear 공간에서 계산하기 위해서, 대부분의 library들이 gamma-correct MIP 생 성을 지원(NVTextureTools, D3DX) • DCC – Artist들이 DCC app에서 vertex color를 칠한다면, 이것은 대부분 마치 sRGB 공 간에 보여질 것이며, linear space로 변환될 필요가 있다. • Lighting information – HDR format : linear – LDR format : sRGB 공간 • 처리해야할 필요가 있는 Gamma-correct rendering pipeline으로 전환의 visual side-effect가 존재. 추후 지속적인 관심이 필요. [5] Page 12: Selective Color Correction • Color range based on Euclidian distance – ColorRange = saturate(1 - length( src - col.xyz) ); • Color correction done in CMYK color space [8] – c = lerp( c, clamp(c + dst_c, -1, 1), ColorRange); • Finally blend between original and correct color – Orig =lerp( Orig, CMYKtoRGB( c), ColorRange); Page 13: Image Sharpening • Image sharpening through extrapolation • Simply lerp between low-res blurred image with original image by a ratio bigger than 1 • Sharp = lerp(blurred, orig, bigger than 1 ratio) Page 14: 적용 사례 Page 15: Photo Filter • Blend entire image into a different color mood [6] • Artist defines “mood color” – cMood = lerp(0, cMood, saturate( fLum * 2.0 ) ); – cMood = lerp(cMood, 1, saturate( fLum - 0.5 ) * 2.0 ); • Final color is a blend between mood color and backbuffer based on luminance and user ratio – final= lerp(cScreen, cMood , saturate( fLum * fRatio)); • Luminance? – float4 luminance = {0.299f, 0.587f, 0.114f, 0.0f}; – 무슨 Color Standard라고 하는데…?! Page 16: Photo Filter • Photoshop의 photo Filter • 색상 온도 적용 – 따뜻한 느낌?! Page 17: Grain Filter • 영화 Film과 같은 느낌 • 콘솔 게임에서 많이 사용 Page 18: Left 4 Dead 2 Page 19: 적용!! Page 20: Grain Filter (Cont’) • 재미있는 사실은 TV와 영화가 발전할 수록 noise를 제거하기 위한 노력 [11] – Film VS Digital – HDTV Page 21: Motion Blur • Camera Motion Blur(CMB) • Object Motion Blur(OMB) Page 22: Radial Blur • Radial Blur – Zoom • 극적인 효과 – FPS!!! Page 23: 결론 • “현재 게임들에서 보여주는 퀄리티의 비밀(?)을 찾아보자”에서 출발. – “lighting + shadow + 후보정”이 출력되는 화면을 결정하지 않을까? 하 는 의문에서, ColorControl 정리 • 이제 게임은 3D Rendering 기법에 추가적으로, “Digital Image 기법 ”이라는 익숙하지만(디지털 카메라가 보편화 되었으므로), 게임에서 는 중요하게 생각하지만은 않았던 작업 과정이 이미 많이 적용됨. • 출시하는 콘솔 게임을 보면서, “WoW~ 어떻게, 저런 색감과 영화 같 은, 선명도를 낼 수 있지?!”하면서, 내가 만든 이미지는 왜 다를까? 에 대해서 한번 고민해 볼 필요가 있음. • Uncharted2가 보여주는 HD급의 선명도와 풍부한 색감, 화질에 대 한 비밀을 찾는 것이 목표!!! Page 24: Reference [1]http://www.w3.org/Graphics/Color/sRGB [2]GPUGems3. 24절. The Importance of Being Linear [3]GPUGems1. 22절. Color Controls [4]Premultiplied alpha [5]Adventures with Gamma-Correct Rendering [6]A bit more Deferred - CryEngine, Martin Mittring, Triangle Game Conference 2009.ppt [7]Ford + et al, “Colour Space Conversions”, 1998 [8]Green, “OpenGL Shader Tricks”, 2003 [9]http://wiki.gamedev.net/index.php/D3DBook:Useful_Effect_Snippet s [10]http://www.gamerendering.com/category/specialeffects/page/2/ [11]http://www.psu.com/forums/showthread.php?t=55880 [12]RenderMonkey – Screen Space Effects [13]http://jufoot.egloos.com/1960058 Page 25: