Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 가상 바이트
- 작업 집합
- Private Bytes
- 개인 바이트
- Windows Build
- URP로 변경
- 메모리 누수
- Rim Light
- AppSW
- Virtual Byte
- working set
- Specular
- 벡터
- ColorGradingLutPass
- Cell Look
- Toon Shader
- Three(Two) Tone Shading
- 프로그래밍 기초
- 3d
- 게임 수학
- Cartoon Rendering
- Cell Shader
- URP
- VR
- ASW(Application SpaceWarp)
- C언어
- OculusMotionVectorPass
Archives
- Today
- Total
WinCNT
Color Grading 본문
Color Grading(색 보정), 다른 말로는 Color Correction
같은 렌더링 화면이라도 연산 부하가 거의 없이 조절할 수 있다
https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/PostProcessEffects/ColorGrading/
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 |