이 문서는 개인적인 공부를 위해 정리된 내용입니다. 다소 오류가 존재할 수 있습니다.
= 목차
- 광원 (Light sources)
- 물질 (Material)
- 조명처리와 셰이딩 (Lighting and Shading)
-- 반사 모델 (Reflection model)
--- 난반사 성분 (Diffuse Component)
--- 정반사 성분 (Specular Component)
--- 주변광 성분 (Ambient Component)
--- 주명 처리식 (Lighting Equation)
- 앨리어싱과 안티앨리어싱 (Aliasing And Antialiasing)
-- 샘플링과 필터링 이론 (Sampling And Filtering Theory)
-- 화면 기반 안티앨리어싱 (Screen-Based Antialiasing)
- 투명도, 알파값, 합성 (Transparency, Alpha, and Compositing)
- 안개 (Fog)
- 감마 보정 (Gamma Correction)
= 시각적 외양 (Visual Appearance)
- 3차원 모델을 렌더링 할 때, 기하학적 정확성과 시각적 현실감 표현
- 물질의 성질을 표현하기 위한 여러 기법 사용
-- 광원 적용
-- 텍스처 처리
-- 안개
-- 투명성
-- 안티앨리어싱
= 광원 (빛은 파동과 입자로 이루어짐)
- 광자(photon)가 물체에 반사되거나 표면에서 방출되어 관측자의 눈으로 들어오기 때문에 관측가능
- 광원의 3가지 유형
-- 방향광원 (directional light) → 태양광
-- 점광원 (point light)
-- 집중조명광원 (spot light) → 점광원의 변환
= 물질
- 표면의 특성을 나타냄
- 주변광 성분 (Ambient), 난반사 성분 (Diffuse), 정반사 성분 (Specular), 광택도 (Shininess), 방사성 (Emissive)
- Meterial을 가진 표면의 색상은 광원의 매개변수와 조명 처리 모델을 이용
- 색상 = 주변광 + 난반사광 + 정반사광 + 감쇄인자
= 조명 처리와 셰이딩
- 조명처리 (Lighting)
-- 물체와 광원간의 상호작용
-- 색상, 텍스처, 투명성 등이 사용
-- 화면상에 보여지는 물체의 시각적 외양을 결정하는데 기여
- 셰이딩 (Shading)
-- 조명효과를 수행한 후 각 픽셀의 색상을 결정하는 과정
-- 음양처리의 유형
--- 단순 셰이딩 (Flat shading) : Polygon 단위로 셰이딩
--- Gouraud 셰이딩 : Vertex 단위로 셰이딩
--- Phong 셰이딩 : Pixel 단위로 셰이딩
= 단순 셰이딩
- 하나의 평면을 한가지 색상으로만 셰이딩하는 가장 단순하고 빠른 방식
- 각 면의 법선 벡터 값이 광원과 이루는 각도(입사각(빛의각도)+표면각(면의각도))를 계산해서 표면의 밝기를 결정
- 장점 : 실행이 빠르고, 구현이 쉬움, 모델을 구성하는 면 조각들을 보고 싶을 경우 유용
- 단점 : 이미지의 현실감 부족
= Gouraud 셰이딩
- 각 폴리곤의 모서리들을 부드럽게 처리해서 곡면처럼 보이게 해주는 smooth shading 방식
- 이넞ㅂ한 다른 폴리곤의 surface normal 값과의 평균값을 계산해서 얻어진 mormal 값으로 그 해당 모서리에서의 표면 색깔을 설정하고 마찬가지로 계산된 맞은편 모서리까지의 표면 색 변화를 보간 하는 방식
- 장점 : 삼각형의 정점에서만 셰이딩하므로 단순 셰이딩 만큼 빠름 (면의 갯수와 꼭지점의 개수가 거의 같기 때문에)
- 단점
-- 렌더링 할 객체의 정밀도(면 or 꼭지점의 개수에 따라)에 따라 처리 결과가 다름
-- 각 폴리곤의 모서리 경계선 모양이 드러나 보임
-- 물체 표면의 하이라이트 부분이 어색함 : 원인은 가장 밝을 부분이 중간 면 부분에 있을 때에 이 방식은 꼭지점 기준으로 보간하기 때문에 중간 면 부분은 보간된 값으로 지정되고 결국 꼭지점보다 더 큰값이 나올수 없게됨
= Phong 셰이딩
- 인접 폴리곤의 surface normal 값과의 평균으로 그 정점의 법선 벡터 값을 구하는 것은 Gouraud 셰이딩과 같음
- 각 픽셀별로 색을 계산
- 장점 : 부드럽게 음영 처리된 결과물을 얻을 수 있음 (Gouraud shading 보다 하이라이트 묘사가 좋음)
- 단점 : 픽셀별 조명 처리는 복잡하고 비용이 많이 듬, 계산에 소요되는 시간은 더 길어 짐
- 단, 위 단점의 경우 옛날 이야기임, 이제는 쉐이더가 나오면서 H/W에서 지원됨. 그에 따라 Gouraud shading 보다 Phong shading을 요즘에는 더욱 사용함
= 반사 모델 (Reflection Model)
- 난반사 (Diffuse) : 모든 방향으로 같은 양의 빛을 반사
- 정반사 (Specular) : 물체 표면에서 바사되는 빛의 형태 (바사의 방향성은 표면의 광택도가 영향을 주며, 거울 반사의 경우 정반사의 극단적인 경우임)
- 주변광 (Ambient) : 간접적인 조명값
= 난반사의 성분
- 물리적 실제감, 빛과 물체 표ㅕㄴ과의 상호관계와 관련 되어 있음
- 광원의 난반사 색상, 물질의 난반사 색상, 난반사 성분의 색상
= 정반사 성분
- 하이라이트(빛이 모여서 반사)를 생성함으로써 표면에 광택을 표현
-- 표면의 굴곡을 이해할 수 있도록 도움
- Half 벡터를 이용하면 반사 벡터를 계산할 필요가 없으므로 속도가 빨라짐
= 주변광 성분
- 실세계에서 물체를 직접 비추는 빛이 없더라도 다른 곳에서 반사되서 오는 간접적인 빛으로 인해 약간의 밝기를 가짐
- 간접적인 빛을 일일이 게산할 필요 없이 물체를 전체적으로 조금 밝게 해 줌으로서 비슷하 효과를 얻음
= 조명 처리식 (Lighting Equation)
- 광원이 어떻게 물체의 물성 매개변수들과 상호작용 하는지를 결정
- 화면상에서 특정 물체가 점유하고 있는 픽셀들의 색상을 결정
- 거리에 따라 감쇄됨
- 집중 조명광 (Spot light) 효과 : 중심축에서의 거리에 따라 빛의 감쇄를 적용
- 기타 global 값을 넣을 수 있음
- 광원 (Light source)이 여러 개 일 수 있음 : OpenGL은 10개 까지 지원
= 앨리어싱과 안티앨리어싱
- 100% 없앨 수 없기 때문에 디앨리어싱이라고 하지 못하고 최소화하기 때문에 안티 앨리어싱이라고 한다
= 앨리어싱 (Aliasing
- 이미지가 이산적인 픽셀들로 구성되기 때문에 나타나는 현상
- 계단 형상 (the jaggies) : edge가 계단 모양으로 보이는 시각적 결함
- Crawlies : 애니매이션에서 슬그슬금 움직이는 것 같이 보이는 현상
= 안티앨리어싱 (Anti-Aliasing)
- 앨리어싱을 제거하여 물체나 장면을 좀더 사실감 있게 표현함
= 샘플링과 필터링 이론
- 이미지 렌더링 과정 => 샘플링
-- 3차원 장면을 샘플링하여 하나의 영상 (이산적인 픽셀 배열)을 생성
-- 샘플링 과정에서 앨리어싱 발생
- 연속 신호를 균일한 간격으로 샘플링
- 샘플링한 디지털 정보는 정보의 양을 줄임
- 필터링을 함으로써 샘플링한 정보를 복원
= 부적절한 샘플링
- 시간적 앨리어싱 (Temporal Aliasing)
-- 샘플링 간격이 잘못되어 나타나는 앨리어싱 현상
-- 예로 바퀴가 시계방향으로 돌아가는 영상을 보여줄 때 샘플링 속도가 느려서 마치 바퀴가 반시계방향으로로 돌아가는 것처럼 보이게 되는 현상
- 너무 낮은 주파수로 샘플링할 때 앨리어싱 발생
-- Sampling 주파수가 너무 낮을 때 : 원래 신호보다 낮은 주파수인 것처럼 보임, 세밀한 정보를 상실
--2배의 주파수로 Sampling 할 때 : 재생된 신호가 수평선인 것처럼 보이는 경우
= Nyquist 이론
- Sample로 부터 원래 신호가 완벽하게 복원될 수 있도록 해야 함
- 이론 : Sampling될 신호의 최대 주파수 보다 2배 이상 주파수로 샘플링하면 원래 신호를 완벽하게 복원할 수 있음
-최대 주파수가 있다는 것은 원래 신호의 주파수가 제한(bandlimited)되어야 한다는 것을 의미
-- 즉, Sample들 사이에 공간이 충분히 떨어질 수 있도록 원래 신호가 부드럽게 변해야 한다
- CD가 40000 Hz인 이유 : 가청 주파수가 16~20000 Hz이기 때문에 최대치에 2배를 하였기 때문임
- 음성은 가능하지만 영상에서는 그냥 적용하기에는 무리가 있음
= 복원 (Reconstruction)
- 필터를 사용해 원래 신호로 복원
- Box filter, Tent Filter, Sinc Filter
- 필터의 면적은 항상 1이 되어야 함 : 그렇지 않을 경우 신호가 크게 보이거나 줄어 든다
= 박스 필터 (Box Filter)
- 재생된 신호가 불연속적인 계단모양이 나오기 때문에 성능이 가장 나쁜 필터, 그러나 단순하기 때문에 아직까지 사용됨
- 샘플 점과 필터의 가장 높은 점이 일치되도록 스케일 됨
- 크기조절과 위치 이동된 함수의 합은 복원된 신호가 됨
= 텐트 필터 (Tent Filter)
- 이웃한 샘플 점들 사이를 선형 보간함
- 재생된 신호가 연속적이기 때문에 Box Filter 보다는 성능이 좋다
- 그러나 샘플 점들에서 급격한 기울기 변화가 발생
= 고주파 차단 필터 (Lowpass Filter, Sinc Filter)
- 신호를 뭉개서 신호의 날카로운 특징을 제거함
- 신호의 고주파 성분(급작스럽게 변하는 부분)을 제거
- Sinc Filter를 사용하면 연속된 신호를 얻는다
-- 연속된 신호를 사용할 수 없으므로 재샘플링해야 함 : 그래서 가우시안 필터를 사용함
- 삼각함수 사용 : 그래서 가우시안 필터를 사용함
= 재샘플링 (Resampling)
- 재샘플링은 샘플링 된 신호를 확대하거나 축소하기 위해서 사용
- 재샘플링 한 후 새로운 샘플 점들은 균일하게 a만큼의 간격을 가진다고 가정
-- a > 1 이면 축소 (downsampling : 하향 샘플링)
-- a < 1 이면 확대 (upsampling : 상향 샘플링)
= 확대 (Magnification)
- 재생된 신호를 샘플 주파수를 절반으로 하여 재샘플링
- 즉, 복원된 신호를 원하는 간격만큼 재샘플링
= 축소 (Minification)
- 샘플들 간의 간격을 두 배로 하기 위해 필터 너비를 두배로 함
- 영상을 흐리게 하고 낮은 해상도로 재샘플링하는 것
= 화면 기반 안티앨리어싱
- 다각형의 edge들이 잘 샘플링되고, 필터링이 되지 않으면 눈에 띄는 결정이 생겨남
- 그림자 경계, 정반사 하이라이트 (specular highlights), 색상이 급격하게 변하는 곳 등
- Anitialiasing Schemes
-- Texture aliasing
-- Line aliasing : 화면 기반 안티앨리어싱에서 사용
= 일반적인 전략 (General Strategy)
- 한 픽셀의 색상 p를 만들어 내기 위해 샘플들에 가중치를 주어 합산하는 것
= 슈퍼 샘플링 (Super-Sampling method)
- 픽셀당 한 개 이상의 샘플을 추출하는 모든 안티앨리어싱 기법
-- 전화면 안티앨리어싱 (FSAA : Full Screen Antialiasing) : 더 높은 해상도로 장면을 렌더링하고 이웃한 샘플들을 평균하여 하나의 영상을 만듦
- 간단하나 비용이 많이 소요됨
- 2X2, 1X2, 2X1 Super sampling mehod
= 누적 버퍼 (Accumulation buffer)
- 원하는 영상과 동일한 해상도를 갖는 버퍼 사용
- 한 장면에 2X2 샘플링을 얻어 내려면
-- 화면상의 x, y축 방향으로 반 픽셀씩 이동하면서 4개 영상 생성 (반 픽셀은 물론 임의로 지정할 수 있음)
-- 서로 다른 샘플링 값을 누적 버퍼에서 합산
-- 합한 값을 4로나누어서 표시장치에 표현
- 이용
-- 모션 블러 (Motion blur) : 움직이는 물체가 흐릿하게 보이는 현상
-- 초점 심도 (Depth of field) : 카메라 초점에 맞지 않는 물체 흐리게 보임
- 문제점
-- 프레임당 여러 번 장면을 렌더링 하므로 추가적인 비용 생김
-- 실시간 렌더링에 부적합
= T-버퍼 (T-Buffer)
- 누적 버퍼의 변종
- 2, 4개 그 이상의 영상들과 Z-buffer들로 구성되며 각각 렌더링에 이용할 수 있음
- 파이프라인의 끝에는 단일 영상이나 평균된 영상을 표시하기 위해 일단의 버퍼들을 조합하는 비디오 회로가 있음
- 안티앨리어싱
-- 모든 버퍼에 데이터를 동시에 보냄
-- 각 버퍼마다 x, y offset을 개별적으로 설정 → 어느위치를 샘플링 할 것인지 결정할 수 있음
-- 각 버퍼마다 조건을 다르게 하여 병렬적으로 처리
-- 이런 이미지를 조합함으로 안티앨리어싱이 됨
- 앨리어싱을 위한 별도의 프로그래밍이 필요 없음
= 누적 버퍼, T-버퍼의 장점 (FASS와 비교)
- 샘플링 패턴이 픽셀 격자 셀 내에서 균일한 직교 패턴을 가질 필요가 없음
- 각 패스는 독립적으로 서로 다른 패턴 사용 가능
- 회전된 격자 샘플링 (RGSS : Rotated Grid Supersampling)
- 수직이나 수평인 모서리에 대해 안티앨리어싱 효과를 보여줌
- (0, 0.25), (0.5, 0), (0.75, 0.5), (0.25, 0.75)
- 1 sample, 1X2 sample, 2X1 sample, Quincurix, 2X2 grid, 2X2 RGSS, 4X4 checker, 8 rooks, 4X4 grid, 8X8 checker, 8X8 grid
= A-buffer (다중 샘플링 : multisampling)
- 주로 고화질 렌더링을 해야 하는 소프트웨어에 사용
- 픽셀당 한 개 이상의 샘플을 취함
- 각 격자 셀에서 다각형이 점유하는 개략적인 면적 계산
- 하나의 격자 셀에서 표면당 한번만 샘플 값 계산하고 그 표면 샘플들은 계산 값을 공유함
-- 샘플링 해상도 낮춤, 계산 비용 절감
-- 그러나, 텍스처나 그림자의 안티앨리어싱을 수행할 수 없음
- edge에 대한 안티앨리어싱과 투명한 물체의 렌더링에 적합
= 적용 범위 마스크 (Coverage maks)의 예
- A-buffer에서 렌더링 할 때 전체적 또는 부분적으로 점유하고 있는 각 화면 격자 셀에 대해 coverage mask 생성
-- 다각형의 한 귀퉁이가 한 픽셀에 해당하는 단일 화면 격자 셀을 점유
-- 격자 셀은 4X4 부분 격자 들로 분할
-- 다각형이 가리고 있는 셀에는 1로 표시
- 하나의 단편 (Fragment)
-- 적용 범위 마스크, 음영 값, 깊이 값, 다른 정보들을 하나의 fragment로 구성
= Matrox's A-buffer (하드웨어로 A-buffer를 구현함)
- edge 픽셀당 4X4 마스크를 사용하여 깊이 값에 따라 정렬된 fragments 목록을 저장하는 방식
-- 모든 fragments에 미리 기억 공간을 할당 해야 하는 이전의 하드웨어 구현 방법과는 다르다 - 메로리 절약
-- 투명도 (transparency)에 따른 순서 지정 기능을 수행할 만큼 충분치 않다
-- edge antialiasing에 있어서 고화질 해결 방법을 제공
= NVIDA's Quincunx
- 실시간 antialiasing 기법 → 하드웨어로 구현되었기 때문임
- HRAA (High Resolution Antialiasing)
- 각 샘플에 가중치를 동일하게 주지 않는다 (모서리 1/8 weight, 중심 1/2 weight)
- 한 픽셀에 두 샘플 값의 평균만 필요
- 결과는 두개의 샘플을 이용하는 FSAA보다 좋다
= NVIDA's Accuview shifted AA sampling pattern
- 모서리 샘플은 이웃한 4개의 픽셀에 1/4영향을 준다 : 몇 가지 오류를 발생 시킬 수 있다
- Texel 샘플의 위치를 이동시켜 전반적인 오류 감소 : 메모리 입출력 속도 유지를 위한 비용 줄임
- 대각선 앨리어싱에도 효과가 있음
= 4XS mode
- 마지막 픽셀 색상은 모든 서브 피기셀의 weighted summation으로 수행하여 재구성 된다
- 그룹 확대시 안티앨리어싱 효과가 좋음
= 감마 보정의 부족으로 인한 앨리어싱
- 다각형의 외각선이 꼬인 밧줄처럼 보임
= 통계적 샘플링 (Stochastic sampling)
- 픽셀 별로 다른 샘플링 패턴을 사용
- 반복적인 aliasing 효과를 잡음으로 바꿔주기 때문에 둔감한 인간 시각 시스템은 aliasing을 눈치채지 못함
- Jittering (Common kind of stochastic sampling)
= 지터링 (Jittering)
- 층상 샘플링 (stratified samling)의 한가지 형태
- 픽셀 영역을 동일한 면적을 가지는 n 개의 영역으로 나눔.
- 각 샘플은 이중 한 영역의 임의 위치에 놓는다 (통계적으로)
= N-rooks 샘플링
- 층상 샘플링의 다른 형태
- 샘플들은 n x n 격자사아에 놓이게 되면 한 행, 한 열당 하나의 샘플을 이용함
- 샘플들은 서브픽셀에 중심에 놓는다
- 수평이나 수직인 edge에 대해 좋은 성능을 보인다
= SuperScene
- 3DLabs : 부두 그래픽 카드 만든 회사
- 하드웨어 안티앨리어싱 기법은 한 픽셀당 jitter된 샘플 패턴을 사용
- 픽셀당 최대 16개까지 샘플을 사용할 수 있도록 한다
- 동적(Dynamic) 샘플 할당은 한 픽셀에 겹쳐 있는 물체들의 개수에 따라 결정
-- 전체적으로 필요한 메모리 소용량이 적음
= 비월 샘플링(interleaved sampling)
- AT&T 사의 Pixel Machine과 Silicon Graphics 사의 VGX, 그리고 ATI의 SMOOTHVISION
- 비월 샘플링 (interleaved sampling) 기법 사용
-- 사용자가 정의한 여러 가지 샘플링 패턴을 반복되는 패턴 내에서 섞어 쓴다
-- 모든 픽셀에 걸쳐 동일한 패턴을 사용할 때 만들어지는 aliasing 문제를 최소화
= 포아송 원반 샘플링 (Poisson disk sampling)
- 비 균일하게 분포된 점들은 최소거리를 유지하면서 떨어져 있다
- 실시간 렌더링을 위한 기법
- 가중치가 부여되지 않은 샘플들을 Gasussian 필터링 커널을 가지는 Poisson 원반 패턴상에 배열한다
= 점신적 개선을 위한 샘플링 패턴
- 샘플의 개수를 시간에 따라 늘려감으로 화질을 점진적으로 개선
- Interactive application에 유용
- 예) 장면이 변하고 있을 때 샘플링을 낮게 유지 → 시간이 지남에 따라 더 많은 샘플을 사용함으로 화질 개선
= Screen-door 투명성
- 투명효과를 주는 가장 간단한 방법
- Check 모양의 다각형을 이용한 투명도 : 다각형의 채워진 부분은 rendering 하지 못하게 하는 방법
- 단점
-- 50% transparency만 표현 가능
-- one transparent object만 표현 가능
-- use checkerboard pattern만 표현 가능
= 알파 혼합 (Alpha Blending)
- 투명한 물체와 뒤의 물체의 색을 혼합 : α 불투명도, 1 (완전 불투명) > α > 0 (완전 투명)
- 투명한 물체를 렌더링 할 때에는 정렬이 필요 : A B C 순으로 하는게 아닌 C B A 순으로 해야 함
-- 불투명한 물체 → 투명한 물체들 (back to front)
-- 투명한 면이 2개이고 α 값이 0.5 일 때에는 정렬이 필요 없음
-- 만약 정렬할 수 없을 경우 z-buffer testing 사용
- 정렬이 필요 없는 경우
-- 순서가 바뀌어도 결과영상에는 영향을 주지 않으나 자연스럽지 않음 : 결과 영상은 값이 단순히 더해진 것이기 때문
- 응용 프로그램에서 정렬 없이 투명성을 표현하는 방법 : a buffer를 이용
- 두 개 이상의 depth buffer 나 multiple passes를 이용해 투명도를 계산할 수 있음
- α는 투명도나 edge 점유율을 나타낼 때 사용
- Compositing
-- Blending together photographs or synthetic renderings of objects
-- Alpha channel을 matte라 부름
- α를 지원하는 파일 형식 : TIFF, PNG
- Chroma-keying
-- 비디오 제작시 사용
-- Blue-screen matting
-- Basic idea : assuming a particular color is transparent
-- α는 1.0이거나 0.0
= 안개 (Fog)
- 마지막 영상에 더하는 간단한 기상 효과
- 목적
-- 야외 장면의 현실감 증가
-- 물체의 거리감 증가
-- 멀리 있는 물체를 안개 속으로 사라지는 것처럼 보이게 함 (안개가 없으면 popping effect 발생
-- 하드웨어로 구현되기 때문에 추가비용이 적다
- 종류 : 선형 안개, 지수형 안개, 자승 지수형 안개
= 안개 구현시 Real-time system에서는 사용 하는 몇가지 가정
- 안개는 vertex level과 pixel level 수준에서 적용
-- Vertex level : 안개의 효과가 조명 계산의 일부로 계산되어 지고, Gouraud shading을 이용하여 색이 보간 됨
-- Pixel level : 각 pixel의 깊이로 안개가 계산됨
- 시각 축에 따른 거리를 안개 효과를 계산 하는 데 사용
-- Z-value는 비선형 : Eye-relative depth를 사용함
-- A more accurate way : Use the true distance from the viewer to the object, Radial fog
= 감마 보정
- CRT의 전자총과 스크린의 밝기의 관계 : I
- 2.5 : good average monitor value
-- 2.2 : color TV encoding 기술인 NTSC
-- 1/0.45 (2.222) : HDTV를 위한 rec. 709
-- 2.2. : 컴퓨터 시스템과 인터넷을 위한 표준색상공간
-- 1.0 : 마이크로소프트사의 표준색상공간 scRGB(sRGB64)
- CRT의 반응 곡선은 사람 눈의 빛에 대한 민감성 곡선의 역 : 비선형성
- 컴퓨터 그래픽스는 intensity 값을 선형적으로 계산
= 감마 보정이 중요한 이유
- 플랫폼간 호환성 (Cross-platform compatibility)
-- 플랫폼 호환성은 모든 영상들에 영향을 줌
-- 생산자들이 감마값 조정을 위해 택하는 방법이 다르기 때문
-- 감마 보정이 무시되면 화상이나 모델이 다른 컴퓨터에서 다르게 표시됨
- 색상 재현성 (color fidelity), 일관성 (consistency), 보간 (interpolation)
-- 색상 재현성 : 색이 어떻게 보이는가는 실제 색조에 따라 다름
-- 일관성 : 감마 보정이 없으면 intensity control이 제대로 되지 않음
-- 보간 : 밝기가 선형적으로 보이지 않음
= 감마 보정이 필요한 이유
- 디더링 (Dithering)
-- 두가지 색이 가까이 붙어서 사람의 눈에 두 색이 섞인 것처럼 보이는 것 → 칼라레이저 프린터
-- 감마 보정이 없으면 다른 색으로 보임
-- 비슷하게 screen-door transparency color 에서도 나타남
- 선분과 에지 안티앨리어싱 품질
-- 비선형성은 roping (꼬인 밧줄)을 야기시킴
- Texturing
-- 텍스처로 사용하는 영상은 감마 보정된 형태로 저장 : 텍스처를 사용할 땐 감마보정을 고려해야 함
-- Mipmap 생성도 감마 보정을 해야 함
-- Pixel shader를 위한 감마 보정도 필요
= 감마를 보정하는 방법
- Hardware solutions
-- 8비트의 색상 요소의 감마 보정된 값이 있는 lookup 테이블 이용 : 정밀도 손실 → banding, contouring 문제 발생
-- 해상도를 높이고, 큰 lookup 테이블 이용
- Practical real-time solution
-- 파이프라인에서 감마 보정
--- 각 정점에서 계산된 조명 값을 감마 보정 후 Gourund 음영 처리
--- 다단계 렌더링이나 픽셀 셰이더 렌더링 할 수 있어야 함
- 감마 보정을 무시하는 방법 → 화질을 포기하고 속도 우선
- 소프트웨어적인 처리 방법
-- Method of responding to varying monitor settings and user preferences
referece : 리얼-타임 렌더링 2판 (Real-Time Rendering), 신병석, 오경수 공역, 정보문화사
= 목차
- 광원 (Light sources)
- 물질 (Material)
- 조명처리와 셰이딩 (Lighting and Shading)
-- 반사 모델 (Reflection model)
--- 난반사 성분 (Diffuse Component)
--- 정반사 성분 (Specular Component)
--- 주변광 성분 (Ambient Component)
--- 주명 처리식 (Lighting Equation)
- 앨리어싱과 안티앨리어싱 (Aliasing And Antialiasing)
-- 샘플링과 필터링 이론 (Sampling And Filtering Theory)
-- 화면 기반 안티앨리어싱 (Screen-Based Antialiasing)
- 투명도, 알파값, 합성 (Transparency, Alpha, and Compositing)
- 안개 (Fog)
- 감마 보정 (Gamma Correction)
= 시각적 외양 (Visual Appearance)
- 3차원 모델을 렌더링 할 때, 기하학적 정확성과 시각적 현실감 표현
- 물질의 성질을 표현하기 위한 여러 기법 사용
-- 광원 적용
-- 텍스처 처리
-- 안개
-- 투명성
-- 안티앨리어싱
= 광원 (빛은 파동과 입자로 이루어짐)
- 광자(photon)가 물체에 반사되거나 표면에서 방출되어 관측자의 눈으로 들어오기 때문에 관측가능
- 광원의 3가지 유형
-- 방향광원 (directional light) → 태양광
-- 점광원 (point light)
-- 집중조명광원 (spot light) → 점광원의 변환
= 물질
- 표면의 특성을 나타냄
- 주변광 성분 (Ambient), 난반사 성분 (Diffuse), 정반사 성분 (Specular), 광택도 (Shininess), 방사성 (Emissive)
- Meterial을 가진 표면의 색상은 광원의 매개변수와 조명 처리 모델을 이용
- 색상 = 주변광 + 난반사광 + 정반사광 + 감쇄인자
= 조명 처리와 셰이딩
- 조명처리 (Lighting)
-- 물체와 광원간의 상호작용
-- 색상, 텍스처, 투명성 등이 사용
-- 화면상에 보여지는 물체의 시각적 외양을 결정하는데 기여
- 셰이딩 (Shading)
-- 조명효과를 수행한 후 각 픽셀의 색상을 결정하는 과정
-- 음양처리의 유형
--- 단순 셰이딩 (Flat shading) : Polygon 단위로 셰이딩
--- Gouraud 셰이딩 : Vertex 단위로 셰이딩
--- Phong 셰이딩 : Pixel 단위로 셰이딩
= 단순 셰이딩
- 하나의 평면을 한가지 색상으로만 셰이딩하는 가장 단순하고 빠른 방식
- 각 면의 법선 벡터 값이 광원과 이루는 각도(입사각(빛의각도)+표면각(면의각도))를 계산해서 표면의 밝기를 결정
- 장점 : 실행이 빠르고, 구현이 쉬움, 모델을 구성하는 면 조각들을 보고 싶을 경우 유용
- 단점 : 이미지의 현실감 부족
= Gouraud 셰이딩
- 각 폴리곤의 모서리들을 부드럽게 처리해서 곡면처럼 보이게 해주는 smooth shading 방식
- 이넞ㅂ한 다른 폴리곤의 surface normal 값과의 평균값을 계산해서 얻어진 mormal 값으로 그 해당 모서리에서의 표면 색깔을 설정하고 마찬가지로 계산된 맞은편 모서리까지의 표면 색 변화를 보간 하는 방식
- 장점 : 삼각형의 정점에서만 셰이딩하므로 단순 셰이딩 만큼 빠름 (면의 갯수와 꼭지점의 개수가 거의 같기 때문에)
- 단점
-- 렌더링 할 객체의 정밀도(면 or 꼭지점의 개수에 따라)에 따라 처리 결과가 다름
-- 각 폴리곤의 모서리 경계선 모양이 드러나 보임
-- 물체 표면의 하이라이트 부분이 어색함 : 원인은 가장 밝을 부분이 중간 면 부분에 있을 때에 이 방식은 꼭지점 기준으로 보간하기 때문에 중간 면 부분은 보간된 값으로 지정되고 결국 꼭지점보다 더 큰값이 나올수 없게됨
= Phong 셰이딩
- 인접 폴리곤의 surface normal 값과의 평균으로 그 정점의 법선 벡터 값을 구하는 것은 Gouraud 셰이딩과 같음
- 각 픽셀별로 색을 계산
- 장점 : 부드럽게 음영 처리된 결과물을 얻을 수 있음 (Gouraud shading 보다 하이라이트 묘사가 좋음)
- 단점 : 픽셀별 조명 처리는 복잡하고 비용이 많이 듬, 계산에 소요되는 시간은 더 길어 짐
- 단, 위 단점의 경우 옛날 이야기임, 이제는 쉐이더가 나오면서 H/W에서 지원됨. 그에 따라 Gouraud shading 보다 Phong shading을 요즘에는 더욱 사용함
= 반사 모델 (Reflection Model)
- 난반사 (Diffuse) : 모든 방향으로 같은 양의 빛을 반사
- 정반사 (Specular) : 물체 표면에서 바사되는 빛의 형태 (바사의 방향성은 표면의 광택도가 영향을 주며, 거울 반사의 경우 정반사의 극단적인 경우임)
- 주변광 (Ambient) : 간접적인 조명값
= 난반사의 성분
- 물리적 실제감, 빛과 물체 표ㅕㄴ과의 상호관계와 관련 되어 있음
- 광원의 난반사 색상, 물질의 난반사 색상, 난반사 성분의 색상
= 정반사 성분
- 하이라이트(빛이 모여서 반사)를 생성함으로써 표면에 광택을 표현
-- 표면의 굴곡을 이해할 수 있도록 도움
- Half 벡터를 이용하면 반사 벡터를 계산할 필요가 없으므로 속도가 빨라짐
= 주변광 성분
- 실세계에서 물체를 직접 비추는 빛이 없더라도 다른 곳에서 반사되서 오는 간접적인 빛으로 인해 약간의 밝기를 가짐
- 간접적인 빛을 일일이 게산할 필요 없이 물체를 전체적으로 조금 밝게 해 줌으로서 비슷하 효과를 얻음
= 조명 처리식 (Lighting Equation)
- 광원이 어떻게 물체의 물성 매개변수들과 상호작용 하는지를 결정
- 화면상에서 특정 물체가 점유하고 있는 픽셀들의 색상을 결정
- 거리에 따라 감쇄됨
- 집중 조명광 (Spot light) 효과 : 중심축에서의 거리에 따라 빛의 감쇄를 적용
- 기타 global 값을 넣을 수 있음
- 광원 (Light source)이 여러 개 일 수 있음 : OpenGL은 10개 까지 지원
= 앨리어싱과 안티앨리어싱
- 100% 없앨 수 없기 때문에 디앨리어싱이라고 하지 못하고 최소화하기 때문에 안티 앨리어싱이라고 한다
= 앨리어싱 (Aliasing
- 이미지가 이산적인 픽셀들로 구성되기 때문에 나타나는 현상
- 계단 형상 (the jaggies) : edge가 계단 모양으로 보이는 시각적 결함
- Crawlies : 애니매이션에서 슬그슬금 움직이는 것 같이 보이는 현상
= 안티앨리어싱 (Anti-Aliasing)
- 앨리어싱을 제거하여 물체나 장면을 좀더 사실감 있게 표현함
= 샘플링과 필터링 이론
- 이미지 렌더링 과정 => 샘플링
-- 3차원 장면을 샘플링하여 하나의 영상 (이산적인 픽셀 배열)을 생성
-- 샘플링 과정에서 앨리어싱 발생
- 연속 신호를 균일한 간격으로 샘플링
- 샘플링한 디지털 정보는 정보의 양을 줄임
- 필터링을 함으로써 샘플링한 정보를 복원
= 부적절한 샘플링
- 시간적 앨리어싱 (Temporal Aliasing)
-- 샘플링 간격이 잘못되어 나타나는 앨리어싱 현상
-- 예로 바퀴가 시계방향으로 돌아가는 영상을 보여줄 때 샘플링 속도가 느려서 마치 바퀴가 반시계방향으로로 돌아가는 것처럼 보이게 되는 현상
- 너무 낮은 주파수로 샘플링할 때 앨리어싱 발생
-- Sampling 주파수가 너무 낮을 때 : 원래 신호보다 낮은 주파수인 것처럼 보임, 세밀한 정보를 상실
--2배의 주파수로 Sampling 할 때 : 재생된 신호가 수평선인 것처럼 보이는 경우
= Nyquist 이론
- Sample로 부터 원래 신호가 완벽하게 복원될 수 있도록 해야 함
- 이론 : Sampling될 신호의 최대 주파수 보다 2배 이상 주파수로 샘플링하면 원래 신호를 완벽하게 복원할 수 있음
-최대 주파수가 있다는 것은 원래 신호의 주파수가 제한(bandlimited)되어야 한다는 것을 의미
-- 즉, Sample들 사이에 공간이 충분히 떨어질 수 있도록 원래 신호가 부드럽게 변해야 한다
- CD가 40000 Hz인 이유 : 가청 주파수가 16~20000 Hz이기 때문에 최대치에 2배를 하였기 때문임
- 음성은 가능하지만 영상에서는 그냥 적용하기에는 무리가 있음
= 복원 (Reconstruction)
- 필터를 사용해 원래 신호로 복원
- Box filter, Tent Filter, Sinc Filter
- 필터의 면적은 항상 1이 되어야 함 : 그렇지 않을 경우 신호가 크게 보이거나 줄어 든다
= 박스 필터 (Box Filter)
- 재생된 신호가 불연속적인 계단모양이 나오기 때문에 성능이 가장 나쁜 필터, 그러나 단순하기 때문에 아직까지 사용됨
- 샘플 점과 필터의 가장 높은 점이 일치되도록 스케일 됨
- 크기조절과 위치 이동된 함수의 합은 복원된 신호가 됨
= 텐트 필터 (Tent Filter)
- 이웃한 샘플 점들 사이를 선형 보간함
- 재생된 신호가 연속적이기 때문에 Box Filter 보다는 성능이 좋다
- 그러나 샘플 점들에서 급격한 기울기 변화가 발생
= 고주파 차단 필터 (Lowpass Filter, Sinc Filter)
- 신호를 뭉개서 신호의 날카로운 특징을 제거함
- 신호의 고주파 성분(급작스럽게 변하는 부분)을 제거
- Sinc Filter를 사용하면 연속된 신호를 얻는다
-- 연속된 신호를 사용할 수 없으므로 재샘플링해야 함 : 그래서 가우시안 필터를 사용함
- 삼각함수 사용 : 그래서 가우시안 필터를 사용함
= 재샘플링 (Resampling)
- 재샘플링은 샘플링 된 신호를 확대하거나 축소하기 위해서 사용
- 재샘플링 한 후 새로운 샘플 점들은 균일하게 a만큼의 간격을 가진다고 가정
-- a > 1 이면 축소 (downsampling : 하향 샘플링)
-- a < 1 이면 확대 (upsampling : 상향 샘플링)
= 확대 (Magnification)
- 재생된 신호를 샘플 주파수를 절반으로 하여 재샘플링
- 즉, 복원된 신호를 원하는 간격만큼 재샘플링
= 축소 (Minification)
- 샘플들 간의 간격을 두 배로 하기 위해 필터 너비를 두배로 함
- 영상을 흐리게 하고 낮은 해상도로 재샘플링하는 것
= 화면 기반 안티앨리어싱
- 다각형의 edge들이 잘 샘플링되고, 필터링이 되지 않으면 눈에 띄는 결정이 생겨남
- 그림자 경계, 정반사 하이라이트 (specular highlights), 색상이 급격하게 변하는 곳 등
- Anitialiasing Schemes
-- Texture aliasing
-- Line aliasing : 화면 기반 안티앨리어싱에서 사용
= 일반적인 전략 (General Strategy)
- 한 픽셀의 색상 p를 만들어 내기 위해 샘플들에 가중치를 주어 합산하는 것
= 슈퍼 샘플링 (Super-Sampling method)
- 픽셀당 한 개 이상의 샘플을 추출하는 모든 안티앨리어싱 기법
-- 전화면 안티앨리어싱 (FSAA : Full Screen Antialiasing) : 더 높은 해상도로 장면을 렌더링하고 이웃한 샘플들을 평균하여 하나의 영상을 만듦
- 간단하나 비용이 많이 소요됨
- 2X2, 1X2, 2X1 Super sampling mehod
= 누적 버퍼 (Accumulation buffer)
- 원하는 영상과 동일한 해상도를 갖는 버퍼 사용
- 한 장면에 2X2 샘플링을 얻어 내려면
-- 화면상의 x, y축 방향으로 반 픽셀씩 이동하면서 4개 영상 생성 (반 픽셀은 물론 임의로 지정할 수 있음)
-- 서로 다른 샘플링 값을 누적 버퍼에서 합산
-- 합한 값을 4로나누어서 표시장치에 표현
- 이용
-- 모션 블러 (Motion blur) : 움직이는 물체가 흐릿하게 보이는 현상
-- 초점 심도 (Depth of field) : 카메라 초점에 맞지 않는 물체 흐리게 보임
- 문제점
-- 프레임당 여러 번 장면을 렌더링 하므로 추가적인 비용 생김
-- 실시간 렌더링에 부적합
= T-버퍼 (T-Buffer)
- 누적 버퍼의 변종
- 2, 4개 그 이상의 영상들과 Z-buffer들로 구성되며 각각 렌더링에 이용할 수 있음
- 파이프라인의 끝에는 단일 영상이나 평균된 영상을 표시하기 위해 일단의 버퍼들을 조합하는 비디오 회로가 있음
- 안티앨리어싱
-- 모든 버퍼에 데이터를 동시에 보냄
-- 각 버퍼마다 x, y offset을 개별적으로 설정 → 어느위치를 샘플링 할 것인지 결정할 수 있음
-- 각 버퍼마다 조건을 다르게 하여 병렬적으로 처리
-- 이런 이미지를 조합함으로 안티앨리어싱이 됨
- 앨리어싱을 위한 별도의 프로그래밍이 필요 없음
= 누적 버퍼, T-버퍼의 장점 (FASS와 비교)
- 샘플링 패턴이 픽셀 격자 셀 내에서 균일한 직교 패턴을 가질 필요가 없음
- 각 패스는 독립적으로 서로 다른 패턴 사용 가능
- 회전된 격자 샘플링 (RGSS : Rotated Grid Supersampling)
- 수직이나 수평인 모서리에 대해 안티앨리어싱 효과를 보여줌
- (0, 0.25), (0.5, 0), (0.75, 0.5), (0.25, 0.75)
- 1 sample, 1X2 sample, 2X1 sample, Quincurix, 2X2 grid, 2X2 RGSS, 4X4 checker, 8 rooks, 4X4 grid, 8X8 checker, 8X8 grid
= A-buffer (다중 샘플링 : multisampling)
- 주로 고화질 렌더링을 해야 하는 소프트웨어에 사용
- 픽셀당 한 개 이상의 샘플을 취함
- 각 격자 셀에서 다각형이 점유하는 개략적인 면적 계산
- 하나의 격자 셀에서 표면당 한번만 샘플 값 계산하고 그 표면 샘플들은 계산 값을 공유함
-- 샘플링 해상도 낮춤, 계산 비용 절감
-- 그러나, 텍스처나 그림자의 안티앨리어싱을 수행할 수 없음
- edge에 대한 안티앨리어싱과 투명한 물체의 렌더링에 적합
= 적용 범위 마스크 (Coverage maks)의 예
- A-buffer에서 렌더링 할 때 전체적 또는 부분적으로 점유하고 있는 각 화면 격자 셀에 대해 coverage mask 생성
-- 다각형의 한 귀퉁이가 한 픽셀에 해당하는 단일 화면 격자 셀을 점유
-- 격자 셀은 4X4 부분 격자 들로 분할
-- 다각형이 가리고 있는 셀에는 1로 표시
- 하나의 단편 (Fragment)
-- 적용 범위 마스크, 음영 값, 깊이 값, 다른 정보들을 하나의 fragment로 구성
= Matrox's A-buffer (하드웨어로 A-buffer를 구현함)
- edge 픽셀당 4X4 마스크를 사용하여 깊이 값에 따라 정렬된 fragments 목록을 저장하는 방식
-- 모든 fragments에 미리 기억 공간을 할당 해야 하는 이전의 하드웨어 구현 방법과는 다르다 - 메로리 절약
-- 투명도 (transparency)에 따른 순서 지정 기능을 수행할 만큼 충분치 않다
-- edge antialiasing에 있어서 고화질 해결 방법을 제공
= NVIDA's Quincunx
- 실시간 antialiasing 기법 → 하드웨어로 구현되었기 때문임
- HRAA (High Resolution Antialiasing)
- 각 샘플에 가중치를 동일하게 주지 않는다 (모서리 1/8 weight, 중심 1/2 weight)
- 한 픽셀에 두 샘플 값의 평균만 필요
- 결과는 두개의 샘플을 이용하는 FSAA보다 좋다
= NVIDA's Accuview shifted AA sampling pattern
- 모서리 샘플은 이웃한 4개의 픽셀에 1/4영향을 준다 : 몇 가지 오류를 발생 시킬 수 있다
- Texel 샘플의 위치를 이동시켜 전반적인 오류 감소 : 메모리 입출력 속도 유지를 위한 비용 줄임
- 대각선 앨리어싱에도 효과가 있음
= 4XS mode
- 마지막 픽셀 색상은 모든 서브 피기셀의 weighted summation으로 수행하여 재구성 된다
- 그룹 확대시 안티앨리어싱 효과가 좋음
= 감마 보정의 부족으로 인한 앨리어싱
- 다각형의 외각선이 꼬인 밧줄처럼 보임
= 통계적 샘플링 (Stochastic sampling)
- 픽셀 별로 다른 샘플링 패턴을 사용
- 반복적인 aliasing 효과를 잡음으로 바꿔주기 때문에 둔감한 인간 시각 시스템은 aliasing을 눈치채지 못함
- Jittering (Common kind of stochastic sampling)
= 지터링 (Jittering)
- 층상 샘플링 (stratified samling)의 한가지 형태
- 픽셀 영역을 동일한 면적을 가지는 n 개의 영역으로 나눔.
- 각 샘플은 이중 한 영역의 임의 위치에 놓는다 (통계적으로)
= N-rooks 샘플링
- 층상 샘플링의 다른 형태
- 샘플들은 n x n 격자사아에 놓이게 되면 한 행, 한 열당 하나의 샘플을 이용함
- 샘플들은 서브픽셀에 중심에 놓는다
- 수평이나 수직인 edge에 대해 좋은 성능을 보인다
= SuperScene
- 3DLabs : 부두 그래픽 카드 만든 회사
- 하드웨어 안티앨리어싱 기법은 한 픽셀당 jitter된 샘플 패턴을 사용
- 픽셀당 최대 16개까지 샘플을 사용할 수 있도록 한다
- 동적(Dynamic) 샘플 할당은 한 픽셀에 겹쳐 있는 물체들의 개수에 따라 결정
-- 전체적으로 필요한 메모리 소용량이 적음
= 비월 샘플링(interleaved sampling)
- AT&T 사의 Pixel Machine과 Silicon Graphics 사의 VGX, 그리고 ATI의 SMOOTHVISION
- 비월 샘플링 (interleaved sampling) 기법 사용
-- 사용자가 정의한 여러 가지 샘플링 패턴을 반복되는 패턴 내에서 섞어 쓴다
-- 모든 픽셀에 걸쳐 동일한 패턴을 사용할 때 만들어지는 aliasing 문제를 최소화
= 포아송 원반 샘플링 (Poisson disk sampling)
- 비 균일하게 분포된 점들은 최소거리를 유지하면서 떨어져 있다
- 실시간 렌더링을 위한 기법
- 가중치가 부여되지 않은 샘플들을 Gasussian 필터링 커널을 가지는 Poisson 원반 패턴상에 배열한다
= 점신적 개선을 위한 샘플링 패턴
- 샘플의 개수를 시간에 따라 늘려감으로 화질을 점진적으로 개선
- Interactive application에 유용
- 예) 장면이 변하고 있을 때 샘플링을 낮게 유지 → 시간이 지남에 따라 더 많은 샘플을 사용함으로 화질 개선
= Screen-door 투명성
- 투명효과를 주는 가장 간단한 방법
- Check 모양의 다각형을 이용한 투명도 : 다각형의 채워진 부분은 rendering 하지 못하게 하는 방법
- 단점
-- 50% transparency만 표현 가능
-- one transparent object만 표현 가능
-- use checkerboard pattern만 표현 가능
= 알파 혼합 (Alpha Blending)
- 투명한 물체와 뒤의 물체의 색을 혼합 : α 불투명도, 1 (완전 불투명) > α > 0 (완전 투명)
- 투명한 물체를 렌더링 할 때에는 정렬이 필요 : A B C 순으로 하는게 아닌 C B A 순으로 해야 함
-- 불투명한 물체 → 투명한 물체들 (back to front)
-- 투명한 면이 2개이고 α 값이 0.5 일 때에는 정렬이 필요 없음
-- 만약 정렬할 수 없을 경우 z-buffer testing 사용
- 정렬이 필요 없는 경우
-- 순서가 바뀌어도 결과영상에는 영향을 주지 않으나 자연스럽지 않음 : 결과 영상은 값이 단순히 더해진 것이기 때문
- 응용 프로그램에서 정렬 없이 투명성을 표현하는 방법 : a buffer를 이용
- 두 개 이상의 depth buffer 나 multiple passes를 이용해 투명도를 계산할 수 있음
- α는 투명도나 edge 점유율을 나타낼 때 사용
- Compositing
-- Blending together photographs or synthetic renderings of objects
-- Alpha channel을 matte라 부름
- α를 지원하는 파일 형식 : TIFF, PNG
- Chroma-keying
-- 비디오 제작시 사용
-- Blue-screen matting
-- Basic idea : assuming a particular color is transparent
-- α는 1.0이거나 0.0
= 안개 (Fog)
- 마지막 영상에 더하는 간단한 기상 효과
- 목적
-- 야외 장면의 현실감 증가
-- 물체의 거리감 증가
-- 멀리 있는 물체를 안개 속으로 사라지는 것처럼 보이게 함 (안개가 없으면 popping effect 발생
-- 하드웨어로 구현되기 때문에 추가비용이 적다
- 종류 : 선형 안개, 지수형 안개, 자승 지수형 안개
= 안개 구현시 Real-time system에서는 사용 하는 몇가지 가정
- 안개는 vertex level과 pixel level 수준에서 적용
-- Vertex level : 안개의 효과가 조명 계산의 일부로 계산되어 지고, Gouraud shading을 이용하여 색이 보간 됨
-- Pixel level : 각 pixel의 깊이로 안개가 계산됨
- 시각 축에 따른 거리를 안개 효과를 계산 하는 데 사용
-- Z-value는 비선형 : Eye-relative depth를 사용함
-- A more accurate way : Use the true distance from the viewer to the object, Radial fog
= 감마 보정
- CRT의 전자총과 스크린의 밝기의 관계 : I
- 2.5 : good average monitor value
-- 2.2 : color TV encoding 기술인 NTSC
-- 1/0.45 (2.222) : HDTV를 위한 rec. 709
-- 2.2. : 컴퓨터 시스템과 인터넷을 위한 표준색상공간
-- 1.0 : 마이크로소프트사의 표준색상공간 scRGB(sRGB64)
- CRT의 반응 곡선은 사람 눈의 빛에 대한 민감성 곡선의 역 : 비선형성
- 컴퓨터 그래픽스는 intensity 값을 선형적으로 계산
= 감마 보정이 중요한 이유
- 플랫폼간 호환성 (Cross-platform compatibility)
-- 플랫폼 호환성은 모든 영상들에 영향을 줌
-- 생산자들이 감마값 조정을 위해 택하는 방법이 다르기 때문
-- 감마 보정이 무시되면 화상이나 모델이 다른 컴퓨터에서 다르게 표시됨
- 색상 재현성 (color fidelity), 일관성 (consistency), 보간 (interpolation)
-- 색상 재현성 : 색이 어떻게 보이는가는 실제 색조에 따라 다름
-- 일관성 : 감마 보정이 없으면 intensity control이 제대로 되지 않음
-- 보간 : 밝기가 선형적으로 보이지 않음
= 감마 보정이 필요한 이유
- 디더링 (Dithering)
-- 두가지 색이 가까이 붙어서 사람의 눈에 두 색이 섞인 것처럼 보이는 것 → 칼라레이저 프린터
-- 감마 보정이 없으면 다른 색으로 보임
-- 비슷하게 screen-door transparency color 에서도 나타남
- 선분과 에지 안티앨리어싱 품질
-- 비선형성은 roping (꼬인 밧줄)을 야기시킴
- Texturing
-- 텍스처로 사용하는 영상은 감마 보정된 형태로 저장 : 텍스처를 사용할 땐 감마보정을 고려해야 함
-- Mipmap 생성도 감마 보정을 해야 함
-- Pixel shader를 위한 감마 보정도 필요
= 감마를 보정하는 방법
- Hardware solutions
-- 8비트의 색상 요소의 감마 보정된 값이 있는 lookup 테이블 이용 : 정밀도 손실 → banding, contouring 문제 발생
-- 해상도를 높이고, 큰 lookup 테이블 이용
- Practical real-time solution
-- 파이프라인에서 감마 보정
--- 각 정점에서 계산된 조명 값을 감마 보정 후 Gourund 음영 처리
--- 다단계 렌더링이나 픽셀 셰이더 렌더링 할 수 있어야 함
- 감마 보정을 무시하는 방법 → 화질을 포기하고 속도 우선
- 소프트웨어적인 처리 방법
-- Method of responding to varying monitor settings and user preferences
referece : 리얼-타임 렌더링 2판 (Real-Time Rendering), 신병석, 오경수 공역, 정보문화사