Search

Lighting

course
last review
mastery
none
progress
not started
date
2023/04/27
4 more properties
Previous chapter

Review

로컬 좌표계에서 들어온 x,y,z의 점들은
Vertex Processor에서 월드 좌표계 → View(카메라) 좌표계 → Projected 좌표계 → Normalized 좌표계
Primitive Assembly에서 점들이 직선, 삼각형등의 형상으로 보이게 된다.
그 결과는 Rasterizer에서 픽셀로 변환된다.
그 결과가 Framebuffer에 적히게 된 후에, Depth test가 진행된다. Stencil Test도 진행된다.
Clipping과 Backface Culling은 Rasterizer 이후에 대체로 일어난다.

Main QUEST

어떻게 하면 물체에 빛을 줄 수 있을까?

Lighting

조명은 “색 계산”이다.
광원에서 빛이 물체에 부딪혀서 에너지가 흡수되고 남은 빛이 나에게 들어왔을 때의 최종 에너지가 그 물체가 띄는 색이 될 것이다.
즉, 빛과 물체, 물체와 물체간의 상관관계에 대해 정의하고 이를 모델링 하는 것이 라이팅이다.
Illumination : 광원으로부터 물체의 표면까지 전달되는 에너지

Illumination

Components

Light Source : 광원, 또는 Emitter이라고도 한다.
광원의 색, 즉 Emiiter의 스펙트럼이 필요하다.
빛의 광원이 어디에 어떻게 있는지에 대한 정보가 필요하다.
Position, Direction, Shape 등
Attenuation : 빛은 거리에 반비례하여 밝기가 줄어드는 성질
Polarization : 편광정보
Surfaces : 빛이 들어왔을때 어떻게 반사해야하는가?
Reflectance Spectrum[색깔] : 어떤 색을 흡수하고 어떤 색을 반사하는가?
Subsurface reflectance : 얼마만큼 빛이 침투되고, 얼마만큼 빛이 반사되는가?
Geometric Attributes
Position : 위치
Orientation : 방향
Micro-Structure : 표면의 반사특성(Roughness)

Lighting Models

어떤 걸 계산할까? : 광원과 표면간의 상호작용 → 반사와 굴절
우선 논의를 편하게 하기 위해 투명한 것이나 반투명한 것은 없다고 하자. 즉, 우리가 계산해야하는 것은 반사가 전부다.

Component

광원이 어떤 면에 부딪히면 상당히 많은 방향으로 반사가 일어남.
또, 반사된 빛의 일부는 눈으로 들어오지만, 일부는 다시 다른 쪽으로 반사가 된다. 그리고 반사 횟수는 무한대로 발산된다. 즉, 계산식이 너무 복잡해진다. 이를 단순하게 풀어보자.
현재 가진 문제점은 다음과 같다.
1.
무한한 빛을 계산해야함.
2.
반사식이 복잡하고 무한한 계산이 필요함.
이를 다음과 같이 해결할 수 있다.
1.
무한한 빛을 계산해야함.
a.
광원을 단순화해야한다. 위치 방향 모양을 단순하게 설정한다.
b.
빛의 수를 유한한 수로 줄인다.
2.
반사식이 복잡하고 무한한 계산이 필요하다.
a.
단순화된 반사모델을 사용한다. → 광원에서 단 한번만 반사한 빛만 렌더링한다. (Direct Illumination)

Reflection Model

표면에서 빛이 반사되는 것에 대한 단순화된 표현식
목적 : 반사된 빛을
빛이 들어왔을 때 어느 방향으로 어떤 색을 가지고 반사되도록 계산하는가?
들어온 빛의 색과 방향을 알고
어느 점에서 부딪혀서 어느 방향으로 반사되는가?
우선 빛의 밝기만 계산해보자.

Light Reflection

우선 Rough Surface에 대해 생각해보자.
빛이 각각의 점의 위치에서 어느 방향으로 주로 반사되고

Diffuse Reflection

표면과 수직일 수록 더 많이 반사되며, 표면과 평행해질 수록 더 적게 반사됨.

Lambert’s Cosine Law

광원세어부터 표면의 한 점에서 반사된 에너지는
표면의 수직벡터와 빛이 들어온 방향 사이의 코사인 각에 비례해서 빛의 세기가 커진다.
Lmabert Cosine을 그대로 따르는 표면을 Lambertian Suface라고 한다.
따라서 표면의 방향과 빛의 방향을 계산한다면 Diffuse Reflection을 구할 수 있다.
Idiffuse=kdIlightcosθIdiffuse=kdIlightnlI_{\text{diffuse}} = k_d I_{\text{light}}\cos\theta\\ I_{\text{diffuse}} = k_d I_{\text{light}}n\sdot l\\
n과 l이 크기가 1인 Nomalized Vector라면 cosθ\cos\theta는 둘의 내적과 같다.

Specular Reflection

Highlights가 없다!
정반사광은 난반사광과는 달리 한 방향으로만 반사되는 빛으로 입사각이 반사각과 같은 것이 특징이다. 따라서 정반사광의 효과를 보려면 빛이 반사되는 방향에서 물체를 바라봐야 한다는 문제가 생긴다.
모니터에 빛이 반사되어 화면을 보기 힘들었을 때, 모니터를 조금 돌리면 보기 편해짐.

Phong Model

반사광 R과 카메라벡터가 이루는 각도의 코사인 값을 구한다.
Next chapter