본문 바로가기
Thinking/Graphics

정반사광(Specular Reflection) 빛나는 표면을 만드는 핵심 기술

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

정반사광(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. 정반사광이 중요한 이유

표면의 재질을 표현하는 핵심 요소 → 금속, 유리, 물 등의 반짝임 구현
현실적인 빛 반사 효과를 적용하여 그래픽 품질 향상
게임 성능과 품질을 조절할 수 있는 핵심 렌더링 기술

💡 결론:
게임에서 금속, 유리, 물 등의 표면을 사실적으로 표현하려면 정반사광을 적절히 활용하는 것이 필수! 🎮✨

https://kor.pngtree.com/

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

 

반응형