정반사광(Specular Reflection) 빛나는 표면을 만드는 핵심 기술
게임이나 CGI에서 빛나는 금속, 유리, 물 표면을 보면 자연스럽게 반짝이는 효과를 볼 수 있습니다.
이러한 반짝임은 정반사광(Specular Reflection)이라는 물리적 현상을 기반으로 합니다.
이번 포스트에서는 정반사광이란 무엇인지, 난반사광과의 차이, 그리고 게임에서 어떻게 활용되는지 쉽게 설명해보겠습니다! 🚀

1. 정반사광(Specular Reflection)이란?
📌 정반사광(Specular Reflection)이란, 빛이 한 방향으로 반사되는 현상을 의미합니다.
✅ 매끄러운 표면(금속, 유리, 물 등)에서는 빛이 한 방향으로 반사되면서 강한 하이라이트(반짝임)가 나타납니다.
✅ 반면, 거친 표면에서는 빛이 여러 방향으로 분산되면서 난반사(Diffuse Reflection)가 발생합니다.
🔹 정반사광의 특징
✔ 빛이 특정한 방향으로 반사됨 → 입사각과 반사각이 같음
✔ 표면이 매끄러울수록 강한 하이라이트가 생성됨
✔ 반사되는 빛의 색과 강도가 반사 표면의 재질에 따라 달라짐
💡 쉽게 말해:
👉 거울이나 호수처럼 매끄러운 표면에서는 빛이 특정 방향으로만 반사되므로 반짝이는 효과가 생깁니다.

2. 정반사광 vs. 난반사광 비교
비교 항목 | 정반사광 (Specular) | 난반사광 (Diffuse) |
🌞 빛의 반사 방식 | 특정 방향으로 반사 | 여러 방향으로 퍼짐 |
🎭 표면 특성 | 매끄러운 표면 (유리, 금속, 물) | 거친 표면 (벽, 천, 종이) |
💡 하이라이트(반짝임) | 강한 하이라이트 생성 | 부드러운 조명 효과 |
🎨 밝기 변화 | 빛의 각도에 따라 크게 변함 | 전체적으로 일정한 밝기 유지 |
💡 결론:
👉 정반사광은 반짝임과 빛 반사 효과를 만들고,
👉 난반사광은 부드러운 조명과 그림자를 형성합니다.

3. 게임에서 정반사광 구현하기
정반사광을 현실적으로 표현하려면 빛이 표면에 반사되는 방향을 계산해야 합니다.
이를 위해 게임 엔진에서는 폰 반사 모델(Phong Reflection Model) 또는 블린-폰 반사 모델(Blinn-Phong Model)을 사용합니다.
🎬 (1) 퐁 반사 모델 (Phong Reflection Model)
- 정반사광의 강도를 계산하는 기본적인 모델
- 법선 벡터(NN )와 반사 벡터(RR ), 시점 벡터(VV )를 이용하여 반사량을 결정
📌 퐁 반사 모델 공식

🎭 (2) 블린-퐁 반사 모델 (Blinn-Phong Model)
- 퐁 모델을 개선한 모델로, H 벡터(광원과 시점의 중간 벡터)를 사용
- 반사 벡터(RR ) 대신 중간 벡터(HH )를 이용해 계산 속도를 향상
📌 블린-퐁 반사 모델 공식

💡 폰 모델 vs. 블린-폰 모델 차이점
- 폰 모델은 정확하지만 연산이 무겁다.
- 블린-폰 모델은 연산이 가볍고 빠르다.

4. 정반사광을 활용한 그래픽 기술
✅ PBR(Physically Based Rendering) 시스템
- PBR에서는 메탈릭(Metallic)과 러프니스(Roughness) 값을 조정하여 정반사광을 제어
- 금속 재질은 강한 정반사광을, 플라스틱/목재 재질은 약한 정반사광을 갖도록 설정
✅ 리얼타임 레이 트레이싱 (Real-time Ray Tracing)
- 광선을 추적하여 실제 빛 반사를 시뮬레이션하여 더 정확한 정반사광을 표현
- 최신 게임 엔진(유니티, 언리얼)에서 RTX 기술과 함께 사용
✅ 큐브맵 반사 (Cubemap Reflection)
- 미러, 유리, 물과 같은 반사 표면에 환경을 반사하는 기술
- 게임에서 거울이나 호수에 반사되는 장면을 표현할 때 사용
5. 정반사광이 중요한 이유
✔ 표면의 재질을 표현하는 핵심 요소 → 금속, 유리, 물 등의 반짝임 구현
✔ 현실적인 빛 반사 효과를 적용하여 그래픽 품질 향상
✔ 게임 성능과 품질을 조절할 수 있는 핵심 렌더링 기술
💡 결론:
게임에서 금속, 유리, 물 등의 표면을 사실적으로 표현하려면 정반사광을 적절히 활용하는 것이 필수! 🎮✨

6. 결론
✔ 정반사광(Specular Reflection)이란? → 빛이 특정한 방향으로 반사되는 현상
✔ 표면이 매끄러울수록 강한 반사광이 발생 → 거울, 금속, 물과 같은 표면
✔ 폰 반사 모델과 블린-폰 반사 모델을 사용하여 정반사광을 계산
✔ 게임에서 PBR, 레이 트레이싱, 큐브맵 반사 등을 활용해 정반사광을 표현
🎮 현실적인 반짝임 효과를 만들고 싶다면, 정반사광을 제대로 이해하고 활용해야 합니다!
🎯 더 공부해볼 만한 주제!
🔹 유니티에서 PBR(Material)로 정반사광 조절하기
🔹 쉐이더 코드로 정반사광 구현해보기 (HLSL, GLSL)
🔹 레이 트레이싱 기반의 정반사광과 기존 방식의 차이점
💡 정반사광에 대해 더 궁금한 점이 있나요?
어려운 부분이나 추가로 알고 싶은 내용이 있다면 댓글로 남겨주세요! 😊🚀
[포프의 쉐이더 입문강좌] 04. 기초적인 조명쉐이더 Part 3 | 포프머신
TOP 개발자에게 배우는 컴공수업 | 수업료는 최저시급, 난 최고연봉 | 프로그래밍 공부순서 야근 없이 오직 실력으로 대우받는 프로그래머가 되고 싶다고요? POCU 아카데미에서 시작하세요!
blog.popekim.com
[DirectX11] Tutorial 10 - 정반사광
Tutorial 10 - 정반사광 원문 : http://www.rastertek.com/dx11tut10.html 이 듀토리얼에서는 DirectX 11에서 HLSL을 사용하여 정반사광을 사용하는 방법을 소개합니다. 이 듀토리얼의 코드는 이전 듀토리얼의 코드
copynull.tistory.com
Lighting Models
Vectors L (Light) : 정점에서 광원을 향하는 방향의 벡터 N (Normal) : 정점의 노멀 벡터 V (View) : 정점에서 카메라를 향하는 방향의 벡터 R (Reflect) : 노멀벡터를 법선으로 하여 계산한 L의 반사 벡터 ( 2N(N
rito15.github.io
'Thinking > Graphics' 카테고리의 다른 글
정점 쉐이더 vs 픽셀 쉐이더 어디서 계산을 해야 할까? (0) | 2025.02.23 |
---|---|
난반사광(Diffuse Reflection) 부드러운 빛이 만드는 현실감 (1) | 2025.02.17 |
직접광과 간접광 빛이 게임 그래픽에 미치는 영향 (0) | 2025.02.16 |
텍스처 매핑과 UV 좌표 3D 모델에 생명을 불어넣는 기술! (1) | 2025.02.16 |
공간 변환(Transformation)이란? 쉽게 이해하기! (0) | 2025.02.16 |