초창기 컴퓨터 그래픽스는 상당히 조악했다. 컴퓨터 그래픽스의 선구자로 일컫어지는 이안 서덜랜드(Ivan Sutherland)의 스캐치패드(SketchPad, M.I.T. 1963)는 선, 점과 같은 기본적인 도형만을 그릴 수 있을 뿐이었다. 그 후로, 래스터 그래픽이 발전함에 따라 쉐이딩 알고리즘 적용할 수 있게 되었고, 솔리드 렌더링(solid rendering)이 가능해지게 된다. 물론, 이때의 쉐이딩이란, 광원과 폴리곤의 표면과의 각도를 계산하여 단일한 색으로 표면을 칠하는 정도였을 뿐이다. 이와 같은 방법은 도형의 생김새와 방향에 대해서 알 수 있게 해주었지만, 실사와 같은 이미지(photorealistic image)와는 거리가 멀었다.
Gouraud와 Phong은 보간법을 사용하여 보다 현실적인 이미지를 만들어낸다. Gouraud 쉐이딩 기법은 각 버텍스에서 조명을 계산하는 방법을 사용하며, Phong 쉐이딩은 폴리곤 주변의 버텍스로부터 법선 벡터(normal vector)의 평균값을 계산하여 보다 정밀한 쉐이딩 효과를 얻는다. Phong 쉐이딩은 Gouraud 쉐이딩에 비해 광원의 하이라이트(highlight) 성분을 보다 정확하게 표현할 수 있다. 이 두 쉐이딩 기법은 오늘날까지도 널리 사용되고 있다.
쉐이딩 기법의 발전 이외에도, 텍스처(texture)를 사용하여 사실성을 높이려는 연구도 주목할만한 시도였다. 즉, 표현하고자 하는 사물의 모든 부분을 폴리곤으로 모델링하여 처리하는 것은, 폴리곤과 같은 기하 요소 처리가 하드웨어 가속화가 된 지금도 쉬운 일이 아니다. 따라서, 적절한 2D 이미지를 이들 폴리곤에 매핑함으로써 보다 쉽게 사실성을 높일 수 있는 방법이 연구되었으며, 이것은 곧 실시간 렌더링에 중요한 부분을 차지하게 된다.
빛의 모델링에 대한 연구 또한 보다 높은 사실성을 위해 연구된 분야였다. 초기에는 점광원(point light source)이나 방향성 광원(directional light source) 정도만 렌더링 알고리즘에 반영되었지만, 곧 집중광(spotlight)과 같은 여러 종류의 광원이 모델링되기 시작했고, 이와 함께 그림자를 생성하는 기법에 대해서도 많은 연구가 이루어졌다. 그러나, 1980년대까지 이런 기법들의 활발한 연구로 인해 컴퓨터 그래픽스는 실사와 같은 이미지에 더 가깝게 접근할 수 있었지만, 여전히 실사와 같은 이미지라고 보기는 힘들었다. 문제는 기존의 쉐이딩 기법에서 근사적이거나 상수로 처리했던 빛의 여러 속성들이었으며, 이런 문제를 극복하기 위해 Turner Whitted는 레이 트레이싱(ray tracing)이라는 새로운 접근법을 소개했다(1980).
Whitted의 초기의 연구는, 단순히 가시성 판단을 위해 단일 픽셀에서 광선을 쏘아보낼 뿐이었지만, 직접 조명(direct illumination)과 완전한 정반사(specular), 굴절(refractive)을 표현할 수 있었다. 이 방법은 후에 레이 캐스팅(ray casting)으로 알려진다. 레이 트레이싱 알고리즘은 곧 많은 주목을 받게 되었고, Whitted의 초기 레이 트레이싱의 약점을 보완한, 다양한 후속 연구가 이루어진다. 그러나 레이 트레이싱은 컬러 블리딩(color bleeding : 색번짐)이나 난반사와 같은 현상을 제대로 구현하기 매우 어려웠으며, 막대한 계산량을 필요로 했다. 그러나, 근본적으로 레이 트레이싱 알고리즘 자체는 매우 간단하며, 이 초기 구현을 Whitted-style ray tracing 또는 classic ray tracing 구현이라 부른다. 이 알고리즘은 전역 조명(global illumination)을 구현하는 많은 알고리즘의 기반이 된다.
여튼, 구현이 간단하다는 장점에도 불구하고 위에서 언급했던 문제 때문에 이를 해결하기 위한 다양한 시도가 나타나는데, 대표적인 것이 레디어시티(radiosity) 알고리즘이다. 레이 트레이싱 알고리즘은 근본적으로 어떤 물체의 음영 효과를 표현하기 위해 빛의 이동 경로를 모두 추적하는 방법이며, 따라서 난반사를 제대로 표현하기 위해서는 엄청난 수의 빛을 추적해야 한다. 특히, 다른 물체로부터의 간접광까지 고려한다면 거의 계산이 불가능하게 된다. 레디어시티 알고리즘은 이 문제를 해결하기 위해 제한된 광선 추적을 한다. 즉, 빛 역시 에너지의 일부로서, 거리에 따라 감쇄된다는 점을 이용하여 소멸되는 빛은 계산에서 제외하여 계산량을 줄인 것이다. 사실, 레이 트레이싱에서도 모든 광선을 끝까지 추적할 수 없기 때문에, 계산량을 줄이기 위해 탐색 깊이를 제한하는 방법 따위를 사용하기도 한다. 즉, 레디어시티 알고리즘은 결과적으로 이와 비슷하지만, 사실 다른 접근 방법이다.
레디어시티 알고리즘은 초기 레이 트레이싱에 비해 많은 장점을 가지는데, 첫째, 초기의 레이 트레이싱이 이미지 기반 렌더링(image based rendering)으로, 2D 이미지로부터 빛의 요소를 파악하려는데 비해 레디어시티 알고리즘은 장면 기반 렌더링(scene based rendering) 방식이다. 이미지 기반 렌더링은 주로 컴퓨터 비전(computer vision)에서 사용되며, 2D 이미지로부터 3D 요소를 추적하려는 것이다. 즉, 고전적인 컴퓨터 그래픽스는 3D 기하 정보에서 2D 공간으로의 투영이며, 레이 트레이싱은 주어진 이미지로부터 물체의 조명 효과를 계산한다. 레디어시티 알고리즘은 3D 기하 단계에서 광선 요소를 추적하여 2D 이미지를 생성하므로 보다 정확한 이미지를 생성할 수 있다. 둘째, 레디어시티알고리즘은 표면에서 레디어시티 값을 알 수 있다면, 각 버텍스와 폴리곤에서 Gouraud나 Phong 쉐이딩과 같은, 기존 하드웨어에서 지원되는 쉐이딩 기법으로 조명 효과를 표현할 수 있다. 즉, 이로 인해 실시간 전역 조명 모델의 구현 가능성이 나타난 것이다. 레이 트레이싱과 마찬가지로 레디어시티 알고리즘 역시 다양한 후속 연구들이 나타나고, 이들은 점차 'gathering' 방식과 'shooting' 방식으로 분류된다.
레디어시티 알고리즘은 레이 트레이싱에 비해 보다 정확한 이미지를 얻을 수 있다는 장점 때문에 많은 주목을 받았고 다양한 개선이 이루어졌지만, 그 근본에 있는 복잡한 수학적 배경 때문에 널리 대중화되지는 못했다.
Reference
Philip Dutre, Philippe Bekaert, Kavita Bala, "Advanced Global Illumination", AK Peters, 2003
http://en.wikipedia.org/wiki/Ray_tracing_(graphics)
http://en.wikipedia.org/wiki/Radiosity_(3D_computer_graphics)
Gouraud와 Phong은 보간법을 사용하여 보다 현실적인 이미지를 만들어낸다. Gouraud 쉐이딩 기법은 각 버텍스에서 조명을 계산하는 방법을 사용하며, Phong 쉐이딩은 폴리곤 주변의 버텍스로부터 법선 벡터(normal vector)의 평균값을 계산하여 보다 정밀한 쉐이딩 효과를 얻는다. Phong 쉐이딩은 Gouraud 쉐이딩에 비해 광원의 하이라이트(highlight) 성분을 보다 정확하게 표현할 수 있다. 이 두 쉐이딩 기법은 오늘날까지도 널리 사용되고 있다.
쉐이딩 기법의 발전 이외에도, 텍스처(texture)를 사용하여 사실성을 높이려는 연구도 주목할만한 시도였다. 즉, 표현하고자 하는 사물의 모든 부분을 폴리곤으로 모델링하여 처리하는 것은, 폴리곤과 같은 기하 요소 처리가 하드웨어 가속화가 된 지금도 쉬운 일이 아니다. 따라서, 적절한 2D 이미지를 이들 폴리곤에 매핑함으로써 보다 쉽게 사실성을 높일 수 있는 방법이 연구되었으며, 이것은 곧 실시간 렌더링에 중요한 부분을 차지하게 된다.
빛의 모델링에 대한 연구 또한 보다 높은 사실성을 위해 연구된 분야였다. 초기에는 점광원(point light source)이나 방향성 광원(directional light source) 정도만 렌더링 알고리즘에 반영되었지만, 곧 집중광(spotlight)과 같은 여러 종류의 광원이 모델링되기 시작했고, 이와 함께 그림자를 생성하는 기법에 대해서도 많은 연구가 이루어졌다. 그러나, 1980년대까지 이런 기법들의 활발한 연구로 인해 컴퓨터 그래픽스는 실사와 같은 이미지에 더 가깝게 접근할 수 있었지만, 여전히 실사와 같은 이미지라고 보기는 힘들었다. 문제는 기존의 쉐이딩 기법에서 근사적이거나 상수로 처리했던 빛의 여러 속성들이었으며, 이런 문제를 극복하기 위해 Turner Whitted는 레이 트레이싱(ray tracing)이라는 새로운 접근법을 소개했다(1980).
Whitted의 초기의 연구는, 단순히 가시성 판단을 위해 단일 픽셀에서 광선을 쏘아보낼 뿐이었지만, 직접 조명(direct illumination)과 완전한 정반사(specular), 굴절(refractive)을 표현할 수 있었다. 이 방법은 후에 레이 캐스팅(ray casting)으로 알려진다. 레이 트레이싱 알고리즘은 곧 많은 주목을 받게 되었고, Whitted의 초기 레이 트레이싱의 약점을 보완한, 다양한 후속 연구가 이루어진다. 그러나 레이 트레이싱은 컬러 블리딩(color bleeding : 색번짐)이나 난반사와 같은 현상을 제대로 구현하기 매우 어려웠으며, 막대한 계산량을 필요로 했다. 그러나, 근본적으로 레이 트레이싱 알고리즘 자체는 매우 간단하며, 이 초기 구현을 Whitted-style ray tracing 또는 classic ray tracing 구현이라 부른다. 이 알고리즘은 전역 조명(global illumination)을 구현하는 많은 알고리즘의 기반이 된다.
레이 트레이싱으로 생성된 이미지
여튼, 구현이 간단하다는 장점에도 불구하고 위에서 언급했던 문제 때문에 이를 해결하기 위한 다양한 시도가 나타나는데, 대표적인 것이 레디어시티(radiosity) 알고리즘이다. 레이 트레이싱 알고리즘은 근본적으로 어떤 물체의 음영 효과를 표현하기 위해 빛의 이동 경로를 모두 추적하는 방법이며, 따라서 난반사를 제대로 표현하기 위해서는 엄청난 수의 빛을 추적해야 한다. 특히, 다른 물체로부터의 간접광까지 고려한다면 거의 계산이 불가능하게 된다. 레디어시티 알고리즘은 이 문제를 해결하기 위해 제한된 광선 추적을 한다. 즉, 빛 역시 에너지의 일부로서, 거리에 따라 감쇄된다는 점을 이용하여 소멸되는 빛은 계산에서 제외하여 계산량을 줄인 것이다. 사실, 레이 트레이싱에서도 모든 광선을 끝까지 추적할 수 없기 때문에, 계산량을 줄이기 위해 탐색 깊이를 제한하는 방법 따위를 사용하기도 한다. 즉, 레디어시티 알고리즘은 결과적으로 이와 비슷하지만, 사실 다른 접근 방법이다.
레디어시티 알고리즘은 초기 레이 트레이싱에 비해 많은 장점을 가지는데, 첫째, 초기의 레이 트레이싱이 이미지 기반 렌더링(image based rendering)으로, 2D 이미지로부터 빛의 요소를 파악하려는데 비해 레디어시티 알고리즘은 장면 기반 렌더링(scene based rendering) 방식이다. 이미지 기반 렌더링은 주로 컴퓨터 비전(computer vision)에서 사용되며, 2D 이미지로부터 3D 요소를 추적하려는 것이다. 즉, 고전적인 컴퓨터 그래픽스는 3D 기하 정보에서 2D 공간으로의 투영이며, 레이 트레이싱은 주어진 이미지로부터 물체의 조명 효과를 계산한다. 레디어시티 알고리즘은 3D 기하 단계에서 광선 요소를 추적하여 2D 이미지를 생성하므로 보다 정확한 이미지를 생성할 수 있다. 둘째, 레디어시티알고리즘은 표면에서 레디어시티 값을 알 수 있다면, 각 버텍스와 폴리곤에서 Gouraud나 Phong 쉐이딩과 같은, 기존 하드웨어에서 지원되는 쉐이딩 기법으로 조명 효과를 표현할 수 있다. 즉, 이로 인해 실시간 전역 조명 모델의 구현 가능성이 나타난 것이다. 레이 트레이싱과 마찬가지로 레디어시티 알고리즘 역시 다양한 후속 연구들이 나타나고, 이들은 점차 'gathering' 방식과 'shooting' 방식으로 분류된다.
직접광만 적용된 이미지와 레디어시티 알고리즘에 의해 생성된 이미지
레디어시티 알고리즘으로 생성된 이미지
레디어시티 알고리즘은 레이 트레이싱에 비해 보다 정확한 이미지를 얻을 수 있다는 장점 때문에 많은 주목을 받았고 다양한 개선이 이루어졌지만, 그 근본에 있는 복잡한 수학적 배경 때문에 널리 대중화되지는 못했다.
Reference
Philip Dutre, Philippe Bekaert, Kavita Bala, "Advanced Global Illumination", AK Peters, 2003
http://en.wikipedia.org/wiki/Ray_tracing_(graphics)
http://en.wikipedia.org/wiki/Radiosity_(3D_computer_graphics)