12 — 조명과 셰이딩 (Illumination & Shading)

출처: SSU 컴퓨터 그래픽스 슬라이드 — SSU_Intro2CG_12_Illumination&Shading.pdf 주차: 12주차 선행: 10 — 래스터화 (정점 속성 보간)

폴리곤에 빛을 입혀 색을 정하는 단계. 조명(illumination)한 점의 색을 빛-재질 상호작용으로 계산하는 것이고, 셰이딩(shading) 은 그것을 면 전체에 어떻게 펼치느냐입니다. 핵심은 Phong 반사 모델Flat/Gouraud/Phong 셰이딩 3종의 차이입니다.


1. 빛의 전달과 색

출처: 슬라이드 — Light Transport / Color of Objects

빛은 광원(태양 등)에서 나와 직진하다가 물체에 닿으면 흡수되거나 반사됩니다. 우리가 보는 물체 색은 반사된 파장입니다.

1.1 색의 근사 — RGB

  • 빛 색: R, G, B 성분으로 근사. 예) 빨강 (1,0,0), 흰색 (1,1,1).
  • 물체의 반사: 각 성분을 얼마나 반사하는지의 비율.
  • 최종 색 = 빛 색 ⊙ 표면 색 (성분별 곱, element-wise).

1.2 왜 셰이딩이 필요한가

구를 폴리곤으로 만들어 단색으로 칠하면 평평해 보입니다. 실제 구처럼 보이려면 점마다 다른 음영이 필요하고, 그것은 재질·광원·시점·표면 방향의 상호작용으로 결정됩니다.


2. 광원과 표면

출처: 슬라이드 — Surface Types / Simple Light Sources

2.1 표면 종류

  • 매끄러운 표면: 반사광이 완전 거울 반사 방향에 집중 → 하이라이트.
  • 거친 표면: 빛을 모든 방향으로 산란 → 무광.

2.2 단순 광원 모델 ⭐️

광원특징
Point source위치 + 색 (부피 없는 전구)
Spotlight점광원을 특정 원뿔로 제한
Distant / Directional무한히 먼 → 광선이 평행 (방향만 있음)
Ambient light장면 어디서나 같은 양. 여러 광원·반사의 기여를 뭉뚱그린 트릭(hack)

2.3 직접광 vs 전역조명

  • 전역조명(Global Illumination) = 직접조명 + 간접조명.
  • 이 장은 직접조명(direct illumination) 에 집중. (간접/전역은 레이트레이싱·라디오시티 등 → 14장 참고)

3. Phong 반사 모델 ⭐️⭐️

출처: 슬라이드 — Phong Reflection Model (Bui-Tuong Phong, 1975)

빠르게 계산 가능한 단순 모델. 세 성분의 합이며 네 벡터를 씁니다.

세 성분: Diffuse(난반사) · Specular(정반사) · Ambient(주변광) 네 벡터: 광원으로 · 시점으로 · 법선 · 완전반사

3.0 기호 사전 — 먼저 이것부터

식을 보기 전에 등장하는 기호들의 뜻을 잡고 갑시다.

기호비유
법선 — 표면이 바라보는 수직 방향바닥에 꽂은 막대
광원 방향 — 그 점에서 전구를 향한 방향점 → 전구 화살표
시선 방향 — 그 점에서 눈을 향한 방향점 → 눈 화살표
완전반사 방향 — L이 거울처럼 튕긴 방향당구공이 벽 맞고 튀는 방향
표면의 반사 계수(재질 성질, 0~1)이 재질이 각 빛을 얼마나 반사하나
광원 색·세기 / 주변광 세기전구의 밝기
광택 지수(shininess)표면이 얼마나 매끈한가

핵심 도구 — 내적 ⭐️

단위벡터의 내적은 둘이 얼마나 같은 방향인지를 주는 값으로, 입니다 (θ = 사이 각).

  • 같은 방향(0°) → (최대)
  • 수직(90°) →
  • 반대(180°) →

내적은 "정렬 정도 측정기". Phong 식의 은 둘 다 "두 방향이 얼마나 맞아떨어지나"를 재는 것뿐입니다.

3.1 전체 식 ⭐️

한 점의 밝기 세 종류의 빛을 더해서 만듭니다. 각 항이 무엇으로 결정되는지:

무엇으로 결정시점 의존?
난반사 빛이 얼마나 정면(N)에서 오나 = ❌ 어디서 봐도 같음
정반사 눈(V)이 반사빛 방향(R)을 보나 = ✅ 움직이면 따라옴
주변광 방향 무관 상수 (깜깜함 방지)

각 색 성분(R,G,B)마다, 그리고 각 광원마다 계산해 합칩니다.

수식의 세 항이 각각 어떤 벡터/각도로 결정되는지 아래에서 직접 보세요. 광원 L 과 시선 V 를 드래그하면 N·L(난반사), (V·R)ⁿ(정반사), 상수(주변광)가 따로 변하고, 방향별 반사 세기인 반사 로브가 함께 그려집니다. (셰이딩 적용 결과는 그다음 구(球)에서 확인)

Phong 반사 모델 — 벡터와 3D 반사 로브

3D

세 항이 각각 무엇으로 결정되는지 봅니다 — 난반사는 N·L(빛 각도, 시점 무관), 정반사는 (V·R)ⁿ(반사방향 R 과 시선 V 의 정렬), 주변광은 상수. 반투명 로브가 방향별 반사 세기이고, V 화살표 끝의 점이 그 로브를 읽는 위치입니다. 씬을 드래그해 돌려 보세요.

N·L = cos θ
0.82
θ
35°
V·R = cos φ
0.66
φ
49°
Ambient Kₐ0.120
Diffuse K_d(N·L)0.573
Specular Kₛ(V·R)ⁿ0.000
Total I0.693
I = 0.69
24
0.70
0.70
0.12
50°
55°
-45°
50°
N 법선
L 광원 방향
R 완전반사 = 2(N·L)N − L
V 시선
세 항을 따로 보기 — ① 난반사: L을 N에 가깝게(θ↓) 하면 N·L↑로 밝아짐, 시점과 무관. ② 정반사: V를 R에 정렬(φ↓)할 때만 커지고, n을 키우면 로브가 좁고 날카로워져 하이라이트가 작아짐 — 3D 로브가 R 주변으로 뾰족해지는 걸 보세요. ③ 주변광: 방향과 무관한 바닥 밝기. 셋의 합이 최종 I.

Phong Illumination — 실시간 셰이딩 구체

live

구체의 각 픽셀에 Phong 모델 I = Kd·Lc(N·L) + Ks·Lc(V·R)n + Ka·La 를 직접 계산합니다. 광원 각도와 shininess, 각 계수를 바꿔 하이라이트가 어떻게 변하는지 보세요.

35°
32
0.70
0.60
0.12
Diffuse
Kd(N·L)
Specular
Ks(V·R)ⁿ
Ambient
Ka·La

shininess ↑ → 하이라이트가 작고 날카로워짐. Ks=0 으로 두면 무광(Lambertian), Ka 만 남기면 빛을 등진 면도 검지 않게 됩니다.

3.2 난반사 — Lambertian (Diffuse) ⭐️

무광(matte) 표면을 Lambertian 이라 합니다. 광택이 없고, 시점에 무관하게 사방으로 균등 산란.

Lambert 법칙: 표면 색은 법선과 광원 방향 사이 각의 코사인에 비례.

  • : 난반사 계수(= 표면 색) [0,1]
  • : 음수면 0 으로 클램프 (빛을 등진 면).

직관: 빛이 표면 정면(N 방향)에서 똑바로 내리쬐면 로 제일 밝고, 비스듬히 들어올수록 이 작아져 어두워집니다.

정오의 태양(머리 위) 아래 땅은 밝고, 해질녘(비스듬) 같은 땅은 어두운 것과 똑같습니다. 그리고 난반사 식에는 없습니다어디서 봐도 밝기가 같음(시점 무관). 가 곧 그 표면의 색.

3.3 정반사 — Specular ⭐️

매끄러운 표면의 하이라이트. 완전반사 방향 근처에 집중되며 시점 의존적(view-dependent).

  • : 반사방향 R 과 시선 V 사이 각. 에서 최대, 멀어지면 급격히 감소.
  • n (shininess): 정반사 지수. 클수록 하이라이트가 작고 날카로움.
  • 반사벡터:

단계별로 읽기:

  1. = 광원 이 거울처럼 튕긴 방향 (당구공이 벽 맞고 튀는 방향).
  2. = 내 눈이 그 튕긴 빛 방향과 정렬됐나? 정렬되면 1(번쩍!), 벗어나면 작아짐 → 그래서 고개를 움직이면 광택 위치가 따라 움직임(시점 의존).

의 n 이 하는 일 ⭐️

은 01 값인데, 01 사이 수를 거듭제곱하면 급격히 작아집니다. 이게 하이라이트를 좁고 날카롭게 만드는 장치예요. 예를 들어 일 때:

n하이라이트 모양재질 느낌
10.90넓고 흐릿거친 표면
100.35좁아짐플라스틱
500.005거의 점광택
128≈ 0날카로운 점거울·금속

n 이 클수록 R 에서 조금만 벗어나도 값이 확 떨어져 → 하이라이트가 작고 또렷한 점. n 이 작을수록 넓고 부드러운 광택. 고무공(n 작음) vs 당구공(n 큼)의 차이가 바로 이 지수입니다.

3.4 주변광 — Ambient ⭐️

Lambertian 만 쓰면 빛을 등진 면()이 완전히 검게 나옵니다. 현실에선 벽·바닥에 튕긴 빛이 돌아다녀 그늘도 깜깜하진 않죠. 그 간접광을 일일이 계산하긴 비싸니, "장면에 깔린 최소 밝기"를 상수로 더해주는 트릭:

방향()도 시점()도 없는 그냥 한 덩어리 상수 — 깜깜함 방지용입니다.

3.5 거리 감쇠 & 다중 광원

  • 거리 항: 점광원 빛은 거리 제곱에 반비례. 인수를 곱해 부드럽게.
  • 다중 광원: 광원마다 계산해 모두 더함.

4. 폴리곤 셰이딩 3종 ⭐️⭐️

출처: 슬라이드 — Illumination vs. Shading / Flat·Gouraud·Phong

조명 식을 면 전체 어디서 계산하느냐에 따라 세 가지:

방식계산 단위절차비용/품질
Flat폴리곤당삼각형 1개에 노멀 1개 → 면 전체 같은 색가장 쌈, 에지에서 색 불연속(각진 면)
Gouraud정점당정점에서 조명 계산 → 색을 보간부드러움, 단 하이라이트 약함
Phong픽셀당정점 노멀을 보간 → 픽셀마다 조명 계산가장 비쌈, 하이라이트 정확

테셀레이션(면 분할)을 낮춰서 세 방식의 차이를 극적으로 비교해 보세요. Flat 은 면이 각지고, Gouraud 는 하이라이트가 면 사이로 사라지며, Phong 은 면 한가운데서도 하이라이트가 또렷합니다.

폴리곤 셰이딩 3종 비교 — Flat · Gouraud · Phong

3D

같은 저폴리 구 3개에 동일한 Phong 조명식을 적용하되, 어디서 조명을 계산하는지만 다릅니다. 분할 수를 낮추면 차이가 또렷해집니다 — 씬을 드래그해 돌려 보세요. (세 구는 같은 시점에서 함께 회전합니다.)

6 (12×6 세그먼트)
35°
40
Flat
면 법선 → 면마다 1색 (각짐)
Gouraud
정점에서 조명 → 색 보간 (하이라이트 뭉개짐)
Phong
법선 보간 → 픽셀마다 조명 (하이라이트 정확)
⚠ 개념 구분: Phong 반사모델(조명식: ambient+diffuse+specular)과 Phong 셰이딩(법선을 면 내부에서 보간 후 픽셀마다 조명 계산)은 다른 개념입니다. 세 구 모두 같은 Phong 반사모델을 쓰지만 어디서 평가하느냐가 다릅니다: Flat=면 법선(프래그먼트), Gouraud=정점에서 조명값을 구해 보간, Phong=보간된 법선으로 프래그먼트마다 재계산. 분할을 낮추면 Gouraud 의 하이라이트가 정점 사이에서 뭉개지거나 사라지는 전형적 약점이 보입니다.

4.1 Flat Shading

삼각형마다 노멀 하나로 조명을 한 번 계산해 면 전체에 동일 적용. 빠르지만 면 경계에서 명암이 끊겨 각져 보임(faceted).

4.2 Gouraud Shading (정점 색 보간)

  1. 각 정점의 노멀 추정 — 보통 인접 삼각형 노멀들의 평균:
  2. 정점에서 조명 계산 (정점 색).
  3. 래스터화 중 정점 색을 선형 보간해 내부 픽셀 채움.

문제: 작은 정반사 하이라이트가 폴리곤 내부에 떨어지면 놓침. 정점에서만 계산하므로 정점 사이의 하이라이트가 사라짐.

4.3 Phong Shading (정점 노멀 보간)

  1. Gouraud 처럼 정점 노멀 추정.
  2. 래스터화 중 노멀 자체를 보간 (색이 아니라!).
  3. 보간된 노멀로 픽셀마다 조명 계산.

→ 하이라이트를 폴리곤 한가운데서도 정확히 포착. 대신 가시 픽셀마다 조명을 계산해 비쌈.

혼동 주의: Phong 반사 모델(3장, 조명 식)과 Phong 셰이딩(여기, 노멀 보간 기법)은 다른 것. 둘 다 Bui-Tuong Phong 이 만들어 이름이 같을 뿐입니다.

잠재 문제: 표면 노멀이 심하게 요동치면 정점 노멀 보간이 부정확해질 수 있음.


5. 고급 조명 (참고)

출처: 슬라이드 — Advanced Illumination & Shading

현실의 다양한 효과 — 반사/굴절(Reflection & Refraction), 투명, 표면하 산란(Subsurface Scattering), 간접 정반사(Caustics). 이를 다루는 전역조명 알고리즘:

  • Ray tracing, Radiosity, Beam tracing, Path tracing ...
  • 이론적 토대는 렌더링 방정식(Rendering Equation) 과 물리기반 반사 모델(PBR).

📝 Knowledge Check: 조명과 셰이딩

Quiz

Illumination & Shading

Q 1 / 9

Phong 반사 모델의 세 성분으로 옳은 것은?


🔗 다음 학습