WinCNT

Color Grading 본문

게임 프로그래밍(학습 내용 정리)/게임 수학

Color Grading

WinCNT_SSS 2022. 7. 12. 21:02

Color Grading(색 보정), 다른 말로는 Color Correction

같은 렌더링 화면이라도 연산 부하가 거의 없이 조절할 수 있다

https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/PostProcessEffects/ColorGrading/

 

Color Grading and Filmic Tonemapper

Tonemapping and color correction effects for adjusting scene colors.

docs.unrealengine.com

Color Grading의 원리

룩 업 테이블(Look Up Table)

Color Grading Look Up Table 데이터는 아트팀이 툴을 이용해서 만든다

 

FEffector 등의 툴(포토샵으로도 가능)에 렌더링한 화면을 캡처해서 레이어에 두고

색 보정을 하면 Color Grading Look Up Table이 만들어진다(무슨 말이지?)

3D Texture 활용

 

픽셀의 RGB 값을 UVW 좌표로 읽어서 룩 업 테이블의 색으로 치환한다

용도

시간, 공간에 따른 톤 변화를 나타할 때 유용하다

연산 부하가 적으며, 아트의 의도대로 색을 잘 보정할 수 있다

Color Grading Code

sampler2D imagePlane;
sampler3D lutSrc;
sampler3D lutDst;
float fAlpha;

float3 lutSize = float3(16,16,16);

float4 ps_main( float2 texCoord  : TEXCOORD0 ) : COLOR
{
    float4 c, c0, c1;
    float3 rawColor = tex2D(imagePlane, texCoord).rgb;
    
    // Half Pixel 때문에 들어간 코드
    float3 scale = (lutSize - 1.0) / lutSize;
    float3 offset = 1.0 / (2.0 * lutSize);
    
    c0.rgb = tex3D(lutSrc, scale * rawColor + offset);
    c1.rgb = tex3D(lutDst, scale * rawColor + offset);
    c.rgb = lerp( c0.rgb, c1.rgb, fAlpha );
    c.a = 1.0;
    return c;
}

 

SSS

'게임 프로그래밍(학습 내용 정리) > 게임 수학' 카테고리의 다른 글

Tonemapping Operator  (0) 2022.07.26
SSAO(Screen Space Ambient Occlusion)  (0) 2022.07.12
Texture Technique  (0) 2022.07.12
Illusion  (0) 2022.06.28
Edge Detect Filter  (0) 2022.06.28