본문 바로가기
Thinking/Graphics

난반사광(Diffuse Reflection) 부드러운 빛이 만드는 현실감

by Dev_카페인 2025. 2. 17.
반응형

난반사광(Diffuse Reflection) 부드러운 빛이 만드는 현실감

게임 그래픽에서 빛이 어떻게 반사되는지는 오브젝트의 사실감을 결정하는 중요한 요소입니다.
특히, 난반사광(Diffuse Reflection)은 부드럽고 자연스러운 빛 표현에 필수적인 개념입니다.

이번 글에서는 난반사광이 무엇인지, 어떻게 작동하는지, 그리고 게임에서 어떻게 활용되는지 쉽게 설명하겠습니다! 🚀

https://wjdgh283.tistory.com/84

☀️ 1. 난반사광(Diffuse Reflection)이란?

📌 난반사광(Diffuse Reflection)이란, 빛이 한 방향으로 반사되지 않고 여러 방향으로 고르게 퍼지는 현상입니다.

✅ 우리가 일상에서 보는 대부분의 물체는 난반사광을 반사합니다.
✅ 거친 표면(나무, 벽돌, 종이 등)은 빛을 사방으로 흩어지게 만듭니다.
✅ 덕분에 그림자가 너무 강하지 않고 부드럽게 보입니다.

🎬 (1) 난반사광이 발생하는 이유

  • 표면이 거칠거나 불규칙할 경우, 빛이 다양한 방향으로 반사됨
  • 입사각(빛이 들어오는 각도)과 관계없이 모든 방향에서 일정한 밝기를 가짐
  • 반짝이는 거울처럼 빛이 일정한 방향으로 반사되는 것이 아님

💡 쉽게 말해:
👉 매끄러운 표면에서는 빛이 한 방향으로 반사되지만,
👉 거친 표면에서는 빛이 모든 방향으로 분산되어 퍼짐 (이것이 난반사광!)

https://kimyc1223.github.io/blog/2024/03/12/TechPost.html

🔍 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)만 사용하면 그림자가 너무 강함

💡 결론:
게임 그래픽에서 난반사광은 표면을 부드럽고 현실적으로 보이게 하는 필수 요소! 🎮✨

https://velog.io/@scarleter99/OpenGL-8.-Shading

🏆 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

 

반응형