난반사광(Diffuse Reflection) 부드러운 빛이 만드는 현실감
게임 그래픽에서 빛이 어떻게 반사되는지는 오브젝트의 사실감을 결정하는 중요한 요소입니다.
특히, 난반사광(Diffuse Reflection)은 부드럽고 자연스러운 빛 표현에 필수적인 개념입니다.
이번 글에서는 난반사광이 무엇인지, 어떻게 작동하는지, 그리고 게임에서 어떻게 활용되는지 쉽게 설명하겠습니다! 🚀

☀️ 1. 난반사광(Diffuse Reflection)이란?
📌 난반사광(Diffuse Reflection)이란, 빛이 한 방향으로 반사되지 않고 여러 방향으로 고르게 퍼지는 현상입니다.
✅ 우리가 일상에서 보는 대부분의 물체는 난반사광을 반사합니다.
✅ 거친 표면(나무, 벽돌, 종이 등)은 빛을 사방으로 흩어지게 만듭니다.
✅ 덕분에 그림자가 너무 강하지 않고 부드럽게 보입니다.
🎬 (1) 난반사광이 발생하는 이유
- 표면이 거칠거나 불규칙할 경우, 빛이 다양한 방향으로 반사됨
- 입사각(빛이 들어오는 각도)과 관계없이 모든 방향에서 일정한 밝기를 가짐
- 반짝이는 거울처럼 빛이 일정한 방향으로 반사되는 것이 아님
💡 쉽게 말해:
👉 매끄러운 표면에서는 빛이 한 방향으로 반사되지만,
👉 거친 표면에서는 빛이 모든 방향으로 분산되어 퍼짐 (이것이 난반사광!)

🔍 2. 난반사광 vs. 정반사광 (Diffuse vs. Specular Reflection)
비교 항목 | 난반사광 (Diffuse) | 정반사광 (Specular) |
🌞 빛의 반사 방식 | 여러 방향으로 흩어짐 | 특정 방향으로 반사됨 |
🎭 표면 특성 | 거친 표면 (나무, 종이, 콘크리트) | 매끄러운 표면 (유리, 금속, 거울) |
🎨 밝기 특성 | 모든 방향에서 일정한 밝기 | 빛이 닿는 특정 각도에서만 밝음 |
🕶 예제 | 일반적인 벽, 천, 돌 | 유리창, 거울, 물 표면 |
💡 결론:
👉 난반사광은 부드러운 조명과 사실적인 그림자를 표현하는 데 필수적
👉 정반사광은 빛나는 표면(금속, 물)에서 반짝이는 반사 효과를 표현
🎮 3. 게임에서 난반사광이 어떻게 사용될까?
🎭 (1) 램버트 반사 모델 (Lambertian Reflection)
게임 그래픽에서는 난반사광을 표현하기 위해 램버트 반사 모델(Lambertian Reflection Model)을 사용합니다.
📌 램버트 반사 법칙:
✔ 표면의 모든 방향에서 같은 밝기를 유지
✔ 빛의 방향과 표면의 법선 벡터(Normal Vector)의 내적(Dot Product)을 사용해 밝기를 계산
float brightness = max(dot(surfaceNormal, lightDirection), 0.0);
🎨 이 공식을 적용하면 빛이 닿는 방향에 따라 부드러운 난반사광이 표현됩니다.
🎬 (2) 게임 엔진에서 난반사광 구현하기
✅ 유니티(Unity)에서 PBR(Materials) 적용
- 난반사광을 표현하는 Albedo(Texture) + Roughness 설정
- Unity의 Standard Shader를 사용하면 자동으로 난반사광이 적용됨
✅ 언리얼 엔진(Unreal Engine)에서 Lumen과 함께 활용
- Unreal Engine의 Lumen 시스템을 이용하면 실시간 난반사 효과 적용 가능
- 메탈릭(Material)과 러프니스(Roughness)를 조절하여 난반사 강도를 조절
✅ 쉐이더 코드로 직접 구현
- 정점 쉐이더(Vertex Shader)와 프래그먼트 쉐이더(Fragment Shader)에서 난반사광 계산 가능
🎨 4. 난반사광이 중요한 이유
✔ 사실적인 조명 표현 가능 → 게임 속 오브젝트가 더 자연스럽게 보임
✔ 광원의 위치가 바뀌어도 부드러운 조명 유지
✔ 실시간 조명 최적화에 도움 → 직접광(Direct Light)만 사용하면 그림자가 너무 강함
💡 결론:
게임 그래픽에서 난반사광은 표면을 부드럽고 현실적으로 보이게 하는 필수 요소! 🎮✨

🏆 5. 결론
✔ 난반사광(Diffuse Reflection)이란? → 빛이 여러 방향으로 퍼지는 반사
✔ 거친 표면(나무, 종이)에서 난반사광이 많이 발생
✔ 램버트 반사 모델을 사용하여 난반사광을 구현
✔ 게임 엔진(Unity, Unreal)에서는 PBR(Material)과 함께 난반사광을 표현
🎮 현실적인 조명을 만들고 싶다면, 난반사광을 꼭 이해해야 합니다!
🎯 더 공부해볼 만한 주제!
🔹 유니티에서 PBR(Material)과 난반사광 적용하기
🔹 쉐이더 코드로 난반사광 구현해보기 (HLSL, GLSL)
🔹 정반사광(Specular)과 비교하며 빛의 반사 이해하기
💡 난반사광에 대해 더 궁금한 점이 있나요?
어려운 부분이나 추가로 알고 싶은 내용이 있다면 댓글로 남겨주세요! 😊🚀
[포프의 쉐이더 입문강좌] 04. 기초적인 조명쉐이더 Part 3 | 포프머신
TOP 개발자에게 배우는 컴공수업 | 수업료는 최저시급, 난 최고연봉 | 프로그래밍 공부순서 야근 없이 오직 실력으로 대우받는 프로그래머가 되고 싶다고요? POCU 아카데미에서 시작하세요!
blog.popekim.com
Texture / map 정리
KimYC1223 개발 블로그
kimyc1223.github.io
[OpenGL] 8. Shading
현실의 물리 법칙과 다르게 동작한다.빛을 3가지 종류로 구분하여 게산한 후 합치는 방식이다.Ambient Reflection, Diffuse Reflection, Specular Reflection주변의 다른 물체면으로 부터 반사되어온 빛이다.주변
velog.io
'Thinking > Graphics' 카테고리의 다른 글
정점 쉐이더 vs 픽셀 쉐이더 어디서 계산을 해야 할까? (0) | 2025.02.23 |
---|---|
정반사광(Specular Reflection) 빛나는 표면을 만드는 핵심 기술 (0) | 2025.02.17 |
직접광과 간접광 빛이 게임 그래픽에 미치는 영향 (0) | 2025.02.16 |
텍스처 매핑과 UV 좌표 3D 모델에 생명을 불어넣는 기술! (1) | 2025.02.16 |
공간 변환(Transformation)이란? 쉽게 이해하기! (0) | 2025.02.16 |