참조 : https://lifeisforu.tistory.com/368 사실 여기가 젤 설명 쉬움
이 챕터에서는 빛의 세기와 셰이딩에 의해 측정된 다양한 물리적 광량에 대해 알아보고, 보다 물리적으로 기반된 관점에서 렌더링을 논의하는 후속 챕터의 토대를 마련한다. 또한 렌더링 프로세스에서 선형적인 빛의 장면에서 최종 디스플레이 색상으로의 변환인 second half에 대해 알아보겠습니다.
8.1. Light Quantities
렌더링에 대한 물리적 기반 접근법의 첫 번째 단계는 빛을 정확한 방식으로 정량화하는 것입니다. 방사 측정(Radiometry)은 빛의 물리적 전달과 관련된 핵심 분야이기 때문에 먼저 소개되며, 우리는 인간의 눈의 민감도에 의해 가중되는 빛 값을 다루는 광도 측정(photometry)에 대한 논의가 뒤따라 옵니다. 색에 대한 우리의 인식은 정신물리학적 현상, 즉 물리적 자극에 대한 심리적 인식이기에 색측정(colorimetry)에 관해서도 알아볼 것이며, 마지막으로 RGB 색상 값에 대한 렌더링의 타당성에 대해 논의할 것입니다.
8.1.1 Radiometry
방사 측정은 전자기 방사선의 측정을 다룹니다. 파장이 다른 전자기파는 다른 성질을 가지며, 인간이 볼수 있는 빛은 400 ~ 700 nm로 이를 가시광선이라 부릅니다.
방사선량은 전자기 복사의 전체 에너지, 시간 경과에 따른 에너지, 면적, 방향 및 전력 밀도와 같은 다양한 측면을 측정하기 위해 존재합니다. 방사 측정에서 기본 단위는 방사속(radiant flux)이며, 방사속은 시간 경과에 따른 복사 에너지의 흐름을 와트(W)로 측정합니다.
방사 조도(Irradiance)는 면적에 대한 복사 유량의 밀도로 공간의 가상 영역일 수도 있지만 대부분 물체의 표면일 수도 있는 영역에 대해 정의되며 제곱미터당 와트로 측정됩니다.
이러한 얘기 전에 3차원적으로 확장한 입체각(solid angle)의 개념을 알 필요가 있는데 이는 평면에서 연속 방향 집합의 크기를 나타내는 척도로 생각할 수 있으며, 라디안의 값은 반지름 1인 원에서 동일한 길이로 교차하는 호의 길이와 같습니다. 마찬가지로 3차원 공간에서 연속적인 방향에 대해 입체각을 정의할 때는 steradians로 측정되며, 이는 반지름 1인 구에 대해 교차되는 패치의 면적에 의해 정의됩니다. 좀더 쉽게 설명하면 반지름이 r 인 구에서, 면적이 $r^2$ 인 면적을 포함하는 원뿔형의 각을 1 스테라디안( steradian, sr )이라고 부르고, 이러한 각도를 입체각이라 정의한 것입니다. 이는 4sr의 입체각이면 단위 구의 전체 영역을 덮을 수 있습니다.
복사 강도(radiant intensity)는 방향, 즉 입체각에 따른 방사속의 밀도를 얘기합니다. 이는 sr당 와트로 측정되빈다.
마지막으로 방사 휘도(radiance)는 전자기 복사의 척도로서 면적과 입체각 모두에 대한 방사속의 밀도로 구해집니다. 영역은 광선에 수직인 평면에 대해 구해지므로 투사된 영역을 구하기 위하여 cos이 보정으로 들어갑니다.
방사 휘도는 실제 시각 센서가 측정하는 값으로, 렌더링에서 중요시되는 부분입니다. 셰이더 방정식을 평가하는 목적은 주어진 빛에 대해서 특정 지점에서 카메라까지 들어오는 방사 휘도를 계산하기 위함입니다. 이 값은 sr 및 제곱미터 당 와트로 구해집니다.
방사 휘도는 5개의 변수(또는 파장을 포함한 6개의 변수)의 함수로 생각할 수 있으며, 이를 방사 휘도 분포(radiance distribution)라고 합니다. 변수 중 세 개는 위치를 지정하고 나머지 두 개는 방향을 지정하여 좌표 상의 모든 빛에 대해 기술 가능해집니다.
셰이딩 방정식에서, 복사 휘도광 종종 $L_o(x,d)$ 또는 $L_i(x,d)$ 형태로 표현되는데, 이는 각각 점 x에서 나오는 복사 휘도가 광선이 d로 나가는 것을 표현합니다. 복사 휘도는 거리 및 대기 효과를 무시하며 일정하게 유지도비니다.
대부분의 빛의 파동은 여러 파장들이 섞여 있는데, 이는 SPD(spectral power distribution)을 통해 파장의 분포를 나타낼 수 있습니다. 이는 같은 색이더라도 파장의 합성에 따라 분포가 달라질 수 있습니다.
모든 방사량에는 스펙트럼 분포가 존재하며 파장에 대한 밀도이기 때문에, 그 단위는 원래 양을 나노미터로 나눈 값입니다. 완전한 SPD는 시간이 많이 걸리기에 실제로는 RGB 값만을 활용합니다.
8.1.2 Photometry
방사 측정은 인간의 인식을 고려하지 않고 순수하게 물리적 양을 다룹니다. 관련 분야인 광도 측정은 방사 측정과 비슷하지만, 인간의 눈의 민감도에 가중치를 반영합니다.
변환 곡선과 측정 단위는 광도 측정 이론과 방사선 측정 이론 사이의 유일한 차이점으로, 각각의 방사선량은 동등한 측정 광도량을 갖습니다.
8.1.3 Colorimetry
빛에 대한 인식이 SPD처럼 단순히 일대일 대응에 해당하지 않는 것을 인지하였기에, 색측정법을 통해 스펙트럼 세기 분포와 색 지각 사이의 관계를 다룹니다.
인간은 약 천만 가지의 다른 색을 구별할 수 있는데, 우리의 뇌는 이 수용체들로부터 단지 세 가지의 다른 신호만을 받기에 3개의 숫자만으로도 어떤 색도 정확하게 나타낼 수 있습니다. 이러한 3개의 수는 각각 파장에 따라 다른 분포도를 가지며, 이들이 정점을 이루는 색상에 맞춰 red, green, blue라 부릅니다. 따라서 이러한 파장에 따른 분포도를 함수로 나타낸다면, 손쉽게 스펙트럼 세기 분포를 3개의 값으로 변환할 수 있습니다. 어떠한 단일 파장의 빛이든 스펙트럼의 빛이든, 이들을 실제 인지에 가까운 색상으로 나타낼 수 있게 합니다. 이러한 가중치를 주는 스펙트럼 분포를 metamers라고 합니다.
세 개의 가중치 있는 rgb는 다양한 파장에 대한 음의 가중치를 가지기 때문에 보이는 모든 색을 직접적으로 나타낼 수 없다. 따라서 실제 rgb가 아닌 가상의 광원에 대한 색상 일치 함수로 원래의 rgb를 기반으로하면서도 음의 가중치를 가지지 않는 함수가 제안되었습니다. 이들은 $\bar{x}(\lambda), \bar{y}(\lambda), \bar{z}(\lambda)$로 표시되며 색상 일치 함수는 휘도 곡선과 동일하며, 이 곡선과 함께 방사 휘도가 휘도로 변환됩니다. 이들은 곱셈과 적분을 통해 SPD를 3개의 수로 줄일 수 있습니다.
$$ X = \int_{380}^{780} s(\lambda)\bar{x}(\lambda)d\lambda \quad Y = \int_{380}^{780} s(\lambda)\bar{y}(\lambda)d\lambda \quad Z = \int_{380}^{780} s(\lambda)\bar{z}(\lambda)d\lambda $$
이러한 X, Y 및 Z 삼자극값(tristimulus values)은 CIE XYZ 공간의 색상을 정의하는 가중로, 색상을 휘도(밝기)와 색도(Chromaticity)로 구분하기에 편리합니다. 색도는 밝기와 무관한 색상의 특징으로, 밝고 어두움을 정의합니다. 이를 위해 CIE는 X + Y + Z = 1 평면에 색을 투영함으로써 2차원 색도 공간을 정의하였습니다.
$$ x= \frac{X}{X+Y+Z}, \quad y= \frac{Y}{X+Y+Z}, \quad z= \frac{Z}{X+Y+Z}= 1-x-y $$
요약하자면, 우리는 세 개의 단일 파장 빛을 사용한 실험을 기반으로, 다른 파장들이 어떻게 세 개의 빛으로 어떻게 구성되는지 파악하였고, 이를 통해 색상 매치 함수가 정의가능했습니다. 이를 통해 스펙트럼 분포를 색도와 휘도를 정의하는 XYZ 좌표로 변환시킬 수 있었으며, 이를 또 XY 좌표의 2차원으로 줄여 휘도를 일정하게 유지한 채 색도를 표현 가능토록 하였습니다.
색상 좌표 위의 점(x,y)이 지정된 경우 흰색 점으로부터 이 점을 통해 경계(분광선 또는 보라색 선)까지 선을 그립니다. 영역의 가장자리까지의 거리와 비교하여 색점의 상대적인 거리는 색상의 자극 순도(excitation purity)에 해당하며 영역 가장자리의 점이 우세한 파장을 정의합니다. 그래픽에서 자극 순도와 우세한 파장은 채도(saturation)와 색상(hue)으로 용어 대체가 가능합니다.
색도도는 평면에서 묘사되며, 색을 완전히 표현하기 위해 휘도에 해당하는 Y값의 차원을 추가로 필요로 합니다. 이는 xyY 좌표계로 정의되며, 색도도는 색상이 렌더링에 어떻게 사용되고 렌더링 시스템의 한계를 이해하는 데 중요합니다. 텔레비전이나 컴퓨터 모니터는 R, G, B 색상 값의 일부 설정을 사용하여 색상을 표시하는데, 각 색 채널은 특정 스펙트럼 전력 분포로 빛을 방출하게 하여 인간이 인식하는 단일 색으로 나타나게 됩니다.
색도도의 삼각형은 일반적인 텔레비전이나 컴퓨터 모니터의 색 전체를 나타냅니다. 삼각형의 세 모서리는 화면에 표시할 수 있는 가장 강력한 빨간색, 녹색 및 파란색인 기본 색상을 보여줍니다. 색도도는 이러한 제한 색상을 직선으로 연결하여 디스플레이 시스템 전체의 한계를 보여줄 수 있으며, 흰색 점은 R, G 및 B 색상 값이 서로 같을 때 디스플레이 시스템에 의해 생성되는 색도를 나타냅니다. 디스플레이 시스템의 전체는 3차원 볼륨이라는 점에 유의해야 하며, 색도도는 3차원을 2차원 평면에 투영된 것을 보여줍니다.
렌더링에 관련된 여러 RGB 공간이 있으며, 각각 R, G, B 원색 및 흰색 점을 바탕으로 정의됩니다. 위의 그림 중 sRGB는 실시간 렌더링에서 가장 일반적으로 사용됩니다. 대부분의 컴퓨터 모니터는 sRGB 색 공간을 위해 설계되었으며, HDTV 디스플레이에 사용되는 색 공간에도 동일한 기본 및 화이트 포인트가 적용되므로 게임기에 중요합니다. DCI-P3 색 공간은 처음에 장편 영화 제작을 위해 개발되었지만 현재 애플에 및 여러 제조업체에서 사용되고 있습니다. ACEScg 색 공간은 장편 컴퓨터 그래픽 렌더링을 위해 개발하여, 디스플레이 색 공간으로 사용하기 위한 것이 아닌 렌더링 후 적절한 디스플레이 색 공간으로 변환된 색상으로 렌더링하기 위해 만들어 졌습니다.
RGB 공간에서 XYZ 공간으로의 변환은 선형적이며 RGB 공간의 원점과 흰색 점으로부터 유도된 행렬로 계산 가능합니다. 또한 역으로 RGB 공간에서 XYZ 및 다른 RBG 공간으로 변환도 가능합니다. 이때 RGB 값은 [0, 1] 범위의 값을 가져야만 하며 이를 벗어나면 재현 불가능합니다. 이는 결국 표준 관측자의 눈이 다양한 파장에 어떻게 반응하는 지를 색에 곱하는 것이며, 이를 통해 휘도 방정식 및 색 방정식을 표현할 수 있습니다. 이러한 색측정법은 두가지 색이 일치 여부는 알 수 있지만, 어떻게 표현되는 지는 알 수 없습니다. 이는 조명과 여러 주변 환경에 크게 좌우됩니다.
8.1.4 Rendering with RGB Colors
엄밀히 말하면, RGB 값은 물리적 양보다는 지각적 양을 나타내기에 물리적 기반 렌더링에 사용하는 것은 기술적으로 범주 오류입니다. 정확하게 하기 위해서는 조밀한 샘플링이나 적절한 기반에 투영된 스펙트럼 양에 대한 모든 렌더링 계산을 수행하고 마지막에만 RGB 색상으로 변환해야 합니다.
예를 들어, 물체에 반사되는 빛을 계산한다고 하면, 파장에 따라 반사하는 비율이 변하기에, 입사광의 SPD에 각 파장의 스펙트럼 반사율을 곱하여 반사광의 SPD를 산출하고, 이 SPD는 RGB 색으로 변환시킵니다. 대신, RGB 렌더러에서 빛과 표면의 RGB 색상은 반사된 빛의 RGB 색을 내기 위해 함께 곱해진다. 일반적인 경우 이는 올바른 결과를 내지 못합니다. 특히, 레이저와 같이 일정 파장만 가지고 있는 경우는, 해당 파장은 잘 반사하지만, ㅏㄴ머지 빛은 흡수하게 됩니다. 하지만 일반적인 넓은 스펙트럼을 지니는 빛에 대해서 계산하는 경우는 오차가 상대적으로 적습니다. 예측 렌더링 애플리케이션에서 이러한 미묘한 오류는 중요할 수 있습니다. 그러나 대부분의 렌더링 시스템, 특히 인터랙티브 응용 프로그램용 렌더링 시스템의 경우 RGB 렌더링은 놀라울 정도로 잘 작동합니다.
8.2. Scene to Screen
주어진 가상 장면에서 물리적 기반 렌더링의 목표는 실제 장면처럼 해당 장면의 복사 광도를 계산해야 합니다. 이후에 디스플레이의 프레임 버퍼에 있는 픽셀 값을 구하여 화면에 표시를 해야하는데, 이번 장에서는 픽셀 값을 어떻게 구체화하는 지에 대해 알아보겠습니다.
8.2.1 High Dynamic Range Display Encoding
HDR 디스플레이는 sRGB와 동일한 흰색 점을 가지지만 보다 더 넓은 색역의 공간을 정의합니다. 하지만 HDR이 표현가능한 색을 표현 가능한 하드웨어가 별로 존재하지 않기에, HDR은 값을 내부적으로 실제 화면 값에 맞추는 톤 매핑을 수행합니다. 응용 프로그램 측에서는 HDR 디스플레이로 이미지를 전송하는 세 가지 경로가 있지만 디스플레이와 운영 체제에 따라 세 가지 경로 중 일부만 사용할 수도 있습니다.
- HDR10
폭넓은 지원 대상이 존재하며, 프레임 버퍼 형식은 색채널당 10비트와 알파에 대해 2비트로 픽셀당 32비트의 형태를 띕니다. 비선형 인코딩을 사용합니다. - scRGB(선형 변형)
Windows 운영 체제에서만 지원되며 일반적으로 sRGB와 유사하지만 0보다 작고 1보다 큰 RGB 값을 지원합니다. 프레임 버퍼 형식은 채널당 16비트이며 선형 RGB 값을 저장합니다. sRGB와의 후방 호환성과 편의성을 위해 주로 유용합니다. - Dolby Vision
독자적인 형식이며, 아직 디스플레이 또는 콘솔에서 널리 지원되지 않습니다. 채널 프레임 버퍼 형식당 사용자 지정 12비트를 사용합니다.
scRGB 이외의 옵션을 사용하면, 디스플레이 인코딩 단계의 일부로서 행렬 변환 및 인코딩을 수행해야 하기에 더 많은 비용을 필요로 합니다.
8.2.2 Tone Mapping
디스플레이 하드웨어에 대한 선형 방사 휘도 값을 비선형 코드 값으로 변환하는 프로세스인 디스플레이 인코딩에 대해 논의했습니다. 디스플레이 인코딩에 의해 적용되는 함수는 입력 선형 값이 디스플레이에서 방출되는 선형 방사선과 일치하도록 하는 EOTF 함수의 역함수입니다.
톤 매핑 또는 톤 복제는 장면의 복사 휘도 값을 디스플레이 복사 휘도 값으로 변환하는 프로세스입니다. 이 단계에서 적용되는 변환을 종단 간 전송 함수 또는 장면 대 화면 변환이라고 합니다. 보통 두 가지 기본 이미지 상태가 존재합니다. Scene-referred 이미지는 장면의 복사 휘도 값을 기준으로 정의되며, display-referred 이미지는 화면의 복사 휘도 값을 기준으로 정의됩니다. 둘 중 하나의 상태의 이미지들은 선형 또는 비선형적으로 인코딩될 수 있다. 아래의 그림은 이미지 상태, 톤 매핑 및 디스플레이 인코딩이 초기 렌더링에서 최종 디스플레이까지 색상 값을 처리하는 이미지 파이프라인에서 어떻게 사용되는 지를 보여줍니다.
톤 매핑의 목표에 관한 몇 가지 일반적인 오해가 있다. 이는 장면에서 화면으로의 변환이 화면에서 장면으로의 복사 휘도 값을 완벽하게 재현하는 변환임을 보장하지 않으며, 장면의 높은 동적 범위에서 화면의 낮은 동적 범위로 모든 정보를 압착하는 것은 아닙니다. 톤 매핑은 이미지 재생과 유사한데, 이는 원본 장면을 관찰할 때의 지각 능력을 최대한 비슷하게 만드는 화면을 만들려고 하는 것입니다.
일반적인 장면의 휘도 범위가 하드웨어의 능력을 몇 배 이상 초과하는 것을 고려할 때 이는 상당히 어려운 목표입니다. 하지만 인간 시각 시스템의 특성을 활용하여 최대한 살려낼 수는 있습니다. 주변 장치를 만든 주변과 화면의 상대적인 차이를 통해 인지하는 시각 시스템은 절대적인 수치를 일부분 보완할 수 있지만, 색채와 휘도에 대한 낮은 인식은 보완하기 어렵습니다. 하지만 역으로 대조를 사용하게 된다면, 단점이 더 두각될 수도 있는데, 대조를 증가시키기 위해서는 어둡거나 밝은 경계를 통해 화면의 범위를 좁혀야 하는데, 대조에 의해서 좁은 화면이 더 좁게 보일 수도 있습니다. 따라서 경계를 부드럽게 사용하여 그림자와 하이라이트 디테일을 재현하기도 합니다.
빛의 양을 조절하는 노출의 개념은 톤 매핑에 매우 중요한데, 렌더링에서는 Scene-referred 이미지에 대해 선형적으로 수행되므로, 이에 맞는 scaling factor를 잘 설정해야 합니다.
노출에 의한 스케일링 후 톤 재생 변환을 적용하는 과정은 모든 픽셀에 동일한 매핑이 적용되는 글로벌 톤 매핑의 한 유형이며, 대조적으로 로컬 톤 매핑 프로세스는 주변 픽셀과 다른 요소를 기반으로 픽셀 간 매핑을 사용합니다. scene-referred 이미지와 display-referred 이미지는 디스플레이 한계와 우리가 논의한 다양한 지각 효과로 인해 다르기에, 두 이미지 상태 사이에는 항상 비선형 변환이 필요합니다.
[Tone Reproduction Transform]
톤 재생 변환은 종종 scene-referred 입력 값을 display-referred 출력 값에 매핑하는 1차원 곡선으로 표현하며 이는 R, G 및 B 값에 적용되거나 휘도에 독립적으로 적용할 수 있습니다. 전자의 경우, display-referred RGB 채널 값이 각각 0과 1 사이에 있기 때문에 결과는 자동적으로 디스플레이 색역에 있게 됩니다. 그러나 RGB 채널에서 비선형 연산을 수행하면 원하는 밝기 변화 외에도 채도와 색상의 변화가 발생할 수 있습니다. 이러한 색상 변화는 일반적으로 바람직하지 않은 것으로 간주되며, 톤 곡선 후에 RGB 조정과 같은 추가적인 작업을 통해 해결하고자 하고 있습니다. 톤 곡선을 휘도에 적용하면 색상 및 채도 변화를 피할 수 있습니다. 그러나 display-referred 색상은 디스플레이의 RGB 색역을 벗어날 수 있으며, 이 경우 다시 매핑해야 합니다. 톤 매핑의 한 가지 잠재적인 문제는 scene-referred 픽셀 색상에 비선형 함수를 적용하면 일부 앤티앨리어싱 기술에 문제가 발생할 수 있다는 것입니다.
[Exposure]
노출을 계산하기 위해 일반적으로 사용되는 기술 계열은 scene-referred 휘도 값 분석에 의존합니다. 정지되지 않도록 분석은 일반적으로 이전 프레임을 샘플링하여 수행됩니다.
이전에는 노출은 프레임 당 프레임당 하나의 값이 남을 때까지 일련의 다운 샘플링을 통해 로그 평균 값을 이용하는 로그 평균 장면 휘도가 사용되었습니다. 평균 값을 사용하면 소수의 밝은 픽셀이 전체 프레임의 노출에 영향을 미칠 수 있는 이상치에 너무 민감한 경향을 보입니다. 따라서 이후의 구현에서는 휘도 값의 히스토그램을 사용하여 이 문제를 개선했습니다. 평균 대신 히스토그램을 사용하면 중앙값을 계산할 수 있으므로 더 견고합니다. 히스토그램의 추가 데이터 점을 사용하여 결과를 개선할 수 있습니다.
8.2.3 Color Grading
즉 원본 장면보다 어떤 의미에서는 더 나아 보이는 이미지를 생성하는 아이디어를 언급하였는데 이는 색선별이라 불리는 이미지 색을 창조적으로 다루는 것에 해당합니다. 색 선별은 원하는 장면이 될 때까지 예제 장면 이미지의 색상과 수동적으로 상호작용 시킵니다.
'그래픽 공부 > Realtime Rendering' 카테고리의 다른 글
Chapter 5. Shading Basics (0) | 2022.07.26 |
---|---|
3. The Graphics Processing Unit (0) | 2022.07.12 |
2. The Graphics Rendering Pipeline (0) | 2022.07.11 |
21. Virtual and Augmented Reality (0) | 2022.05.11 |