<aside> <img src="/icons/reorder_blue.svg" alt="/icons/reorder_blue.svg" width="40px" /> 목차

</aside>

Flat Shading


image.png

**플랫 셰이딩(Flat Shading)**은 3D 모델링에서 가장 기본적인 셰이딩 방식입니다.

image.png

복잡한 모델에서도 각 면은 하나의 노말 벡터만을 사용하기 때문에 계산이 단순하고 렌더링 속도가 빠른 장점이 있습니다. 반면, 부드러운 표현이 필요한 곡면에서는 **스무스 셰이딩(Smooth Shading)**을 활용하는 것이 더 적합할 수 있습니다.

Smooth Shading


image.png

스무스 셰이딩(Smooth Shading)은 3D 컴퓨터 그래픽스에서 서페이스를 부드럽게 표현하는 기법으로, 각진 폴리곤 토폴로지를 자연스럽고 부드러운 곡면처럼 보이게 만듭니다.

녹화_2025_03_20_02_25_18_83.gif

역사

시기 주요 사건 및 발전
1960년대 초기 ****컴퓨터 그래픽스 셰이딩 기법, 플랫 셰이딩 등장
1970년대 구로 셰이딩(Gouraud Shading) 등장, 스무스 셰이딩의 기초
1980년대 퐁 셰이딩(Phong Shading) 등장, 현대 스무스 셰이딩 모델 정립
2000년대 DirectX, OpenGL의 등장, 스무스 셰이딩 모델의 렌더링 파이프라인 통합

구로 셰이딩(Gouraud Shading)

Gouraud shading

구로 셰이딩은 버텍스 단위로 조명을 계산하고 그 결과를 폴리곤 내부에 선형 보간하는 기법입니다.

버텍스별 조명 계산

$$

I_v = \underset{\underset{\text{Ambient}}{\rule{2cm}{0.4pt}}}{k_a I_a} + \underset{\underset{\text{Diffuse}}{\rule{2cm}{1pt}}}{k_d I_d (\mathbf{n}_v \cdot \mathbf{l})} + \underset{\underset{\text{Specular}}{\rule{2cm}{1pt}}}{k_s I_s (\mathbf{r} \cdot \mathbf{v})^n}

$$

파라미터 설명
$I_v$ 버텍스 - 최종 라이팅 강도
$k_a, k_d, k_s$ 앰비언트/디퓨즈/스펙큘러 계수
$I_a, I_d, I_s$ 앰비언트/디퓨즈/스펙큘러 강도
$\mathbf{n}_v$ 버텍스 노말 벡터
$\mathbf{l}$ 라이트 방향 벡터
$\mathbf{r} = 2(\mathbf{n} \cdot \mathbf{l})\mathbf{n} - \mathbf{l}$ 반사 벡터
$\mathbf{v}$ 뷰 방향 벡터
$n$ 스펙큘러 지수

색상 보간

퐁 셰이딩(Phong Shading)

image.png

퐁 셰이딩은 픽셀 단위로 조명을 계산하는 기법으로, 버텍스 노말을 보간한 후 각 픽셀에서 조명을 재계산합니다.

버텍스 노말 보간

노말라이즈

픽셀별 조명 계산

셰이딩 모델의 차이

image.png

| --- | --- | --- |