본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://fastcampus.info/4n8ztzq
Part.2 디아블로 게임을 만들어 보며 마스터하는 시스템 구현과 그래픽
Ch 03. 환경 시스템 알아보기
01. Lighting 시스템 알아보기 2
Light Probe 란 무엇인가?

Bake 된 조명 정보를 씬에 저장을 하는 기법
lihgtmapping 과 다른 점은
LightMapping은 표면에 대한 정보를 저장하지만, Light Probe 는 공간에 대한 정보를 저장합니다.
이 Light Probe 는 Spherical Harmonics 기법을 사용하는데..
굉장히 복잡한 공식이고 계산이여서 간단히 설명하자면 한 공간에 큐브맵과 같은 형식으로 오브젝트의 색상에 대한 RGB 값을 저장한다고 보시면 됩니다. 이를 기반으로 해서 빛이 들어오는 방향에 따라 영향값을 계산해줍니다.
https://docs.unity.cn/kr/2020.3/Manual/LightProbes-TechnicalInformation.html
라이트 프로브: 기술 정보 - Unity 매뉴얼
라이트 프로브의 조명 정보는 스피리컬 하모닉스 기반 함수로 인코딩됩니다. Unity는 L2 스피리컬 하모닉스로 알려진 3차 다항식을 사용합니다. 이 다항식은 27개의 플로팅 포인트 값을 이용하여
docs.unity.cn
이것의 용도는 Dynamic GameObject의 글로벌 일루미네이션 효과를 주기 위함입니다.
Light Probe 란 무엇인가? (chatGpt)
네! 이 강의 내용은 Unity의 조명 최적화 및 간접광 처리 기법에 대한 이야기예요. 말씀하신 내용은 굉장히 중요한 주제이고, 실제 게임 개발에서 성능과 비주얼을 동시에 잡기 위해 자주 사용하는 기술입니다.
✅ Light Probe란?
- *Light Probe(라이트 프로브)**는 Unity에서 사용하는 간접광(Global Illumination) 정보 저장 기술입니다.
🎯 핵심 개념:
"움직이는(Dynamic) 오브젝트에 간접광 효과를 주기 위해, 공간에 빛의 정보를 저장해두는 기술"
🔍 왜 필요한가요?
Unity에서 일반적으로 사용하는 조명 베이킹(Baking)은 Static Object에만 적용돼요. 하지만 움직이는 오브젝트는 베이크된 빛 정보를 사용할 수 없어요.
예시:
- 플레이어 캐릭터가 그림자 지대에 들어가면 어두워져야 하는데, 기본적으로는 아무 반응도 없음
- 움직이기 때문에 Lightmap에 포함될 수 없음
이때 사용하는 게 바로 Light Probes입니다.
✅ Light Probe의 작동 원리
- 씬에 Light Probe를 배치 (일반적으로 Grid 형태)
- 각 Probe는 그 위치에서 주변 환경광(간접광) 정보를 샘플링해서 저장
- 움직이는 오브젝트는 가장 가까운 Probe 3~4개를 기준으로 보간하여 현재 위치의 광원을 추정
- 이를 통해 캐릭터도 간접광, 즉 GI(Global Illumination) 효과를 받을 수 있음
✅ Light Probe는 어떤 정보가 저장되나요?
- 빛의 색상과 방향 정보 (RGB + 방향성)
- Spherical Harmonics(구면 고조파):→ 조명 분위기(예: 햇빛, 반사광 등)를 더 자연스럽게 재현
- → 단순히 RGB만 저장하는 게 아니라, 빛이 어느 방향에서 오는지도 포함하여 저장
✅ Lightmap과의 차이점
| 항목 | Lightmap | Light Probe |
| 저장 위치 | 표면(메시 표면) | 공간(위치 기반) |
| 적용 대상 | 정적인 오브젝트 (Static) | 동적인 오브젝트 (Dynamic) |
| 정보 저장 방식 | Lightmap 텍스처 | Spherical Harmonics (SH) |
| 베이킹 시간 | 비교적 오래 걸림 | 빠름 |
| 용도 | 벽, 바닥, 건물 등 | 플레이어, NPC, 움직이는 그림자 등 |
✅ Unity에서 어떻게 사용하나요?
- 씬에 Light Probe Group을 추가
- GameObject > Light > Light Probe Group
- 빛 정보를 베이킹
- Lighting 창에서 Bake 실행
- Dynamic 오브젝트에 설정:
- 오브젝트의 Mesh Renderer > Light Probes = Use Proxy Volume or Blend Probes 설정
✅ 요약
| 개념 | 설명 |
| Light Probe | 공간상의 간접 조명 정보를 저장해서, 움직이는 오브젝트에 GI를 적용 |
| 사용 이유 | Static이 아닌 오브젝트에도 조명 자연스럽게 적용하려고 |
| 기술적 기반 | 구면 고조파(Spherical Harmonics)를 통해 색 + 방향 정보를 저장 |
| 차이점 | Lightmap은 표면, Light Probe는 공간 |
✅ 시각적 이해를 위한 비유
- Lightmap: 마치 조명이 비친 결과를 사진처럼 벽에 직접 붙여놓은 것
- Light Probe: 공간 곳곳에 빛의 분위기를 담은 센서를 설치해서, 거기에 가까운 오브젝트가 그 영향을 받는 것
원리, 활용법, 차이점까지 다 이해되셨을 거예요.
추가로 Light Probe Proxy Volume이나 Reflection Probe와의 관계도 설명드릴 수 있어요! 필요하시면 알려줘요 :)
Reflection Probe 란 무엇인가?

Reflection Probe 는 Reflection Mapping 기법을 통해 큐브맵 주변 환경의 값을 텍스처로 저장하는 것입니다.
큐브맵이라는 것은 간단히 설명하면 가운데 그림과 같이 정육면체의 카메라 오브젝트를 두고, (위쪽, 아래쪽, 앞쪽, 뒤쪽, 왼쪽, 오른쪽) 에 있는 부분을 카메라로 캡처를 하게 되면 이미지가 되는데 이것을 큐브맵으로 저장하게 된다.
이렇게 큐브맵으로 캡쳐해서 사용하는 이유는 반사가 되는 효과를 실시간으로 처리하기에는 굉장히 부하가 많이 걸리기 때문입니다.
그래서 유니티에서는 중요한 부분에서는 Reflection Probe 를 리얼 타임으로 실시간으로 갱신 또한 가능합니다.
이제 중요하지 않은 부분들은 실시간이 아닌 베이킹을 사용해서 큐브맵으로 저장을 한 이후에, 이 큐브맵에 저장된 텍스처를 가지고 거울이라는지 물이라든지 그런 건물의 반사라든지 에 사용을 합니다.
Reflection Probe 란 무엇인가? (chatGPT)
지금 정리한 내용은 Unity의 조명과 반사 시스템 중에서도 아주 핵심적인 부분이에요. 이해를 돕기 위해, 차근차근 설명해볼게요.
✅ Reflection Probe란?
🎯 핵심 정의:
Reflection Probe는 게임 씬 안의 ‘반사 효과’를 구현하기 위해, 특정 위치에서 주변 환경을 캡처한 후 이를 텍스처(큐브맵)로 저장해서 사용하게 해주는 기능입니다.
📦 큐브맵(Cubemap)이란?
큐브맵은 하나의 정육면체(6면)의 사진으로, 한 지점에서 360도 방향의 환경을 텍스처로 저장한 것이에요.
- 6개의 방향 (Front, Back, Left, Right, Up, Down) 으로 촬영된 이미지
- 이 6장을 합쳐서 하나의 환경 텍스처를 구성함
이 텍스처를 재질(Material)에 적용하면, 반사되는 것처럼 보이게 됩니다.
💡 Reflection Probe 작동 방식
- 씬의 특정 위치에 Reflection Probe를 배치
- 그 위치에서 큐브맵을 생성
- 그 큐브맵을 기준으로 근처의 오브젝트에 반사 효과 적용
예를 들어, 반짝이는 금속 구체가 있다고 가정해볼게요.
이 구체가 위치한 근처에 있는 Reflection Probe가 캡처한 큐브맵을 기반으로,
금속 표면에 주변 환경이 반사되도록 처리됩니다.
✅ 실시간 vs 베이크
| 방식 | 설명 | 용도 |
| 베이크(Baked) | 한 번만 캡처 후 고정된 큐브맵 사용 | 고정된 오브젝트, 성능 중요할 때 |
| 리얼타임(Realtime) | 오브젝트나 환경이 바뀔 때마다 큐브맵 갱신 | 주변이 자주 변하거나, 반사 퀄리티가 중요한 경우 |
예: 거울처럼 정확한 반사가 필요한 곳은 리얼타임
예: 건물 창문 등은 베이크 사용
✅ Reflection Probe vs Light Probe 차이점
| 항목 | Light Probe | Reflection Probe |
| 저장 정보 | 빛의 색상과 방향(간접광) | 주변 환경의 반사 이미지(큐브맵) |
| 적용 대상 | 움직이는 오브젝트의 조명 표현 | 움직이는 오브젝트의 반사 표현 |
| 목적 | 간접광 표현 (예: 어두운 곳에서 캐릭터 어두워짐) | 반사 표현 (예: 유리창, 금속 표면 반짝임) |
| 기법 | Spherical Harmonics | Cubemap / Reflection Mapping |
✅ 관계와 활용 예시
👇 함께 사용하는 대표 상황:
캐릭터가 반사되는 금속 표면 위를 걷고 있음
→ 캐릭터는 움직이므로, Light Probe로 간접광 조명 효과를 받음
→ 금속 표면은 주변 환경이 반사되어야 하므로, Reflection Probe를 통해 반사 표현
결국 둘 다 동적인 요소에 현실감을 더하기 위한 보조 시스템이지만,
- Light Probe는 “조명 효과”를,
- Reflection Probe는 “반사 효과”를 처리합니다.
🎥 시각적으로 이해하기
| 요소 | 예시 |
| Light Probe | 캐릭터가 그림자 진 영역에 들어가서 어두워짐 |
| Reflection Probe | 캐릭터가 금속 표면 위에서 반짝이는 배경이 반사됨 |
✅ 정리 요약
| 개념 | 설명 |
| Reflection Probe | 큐브맵으로 반사 효과를 구현 |
| Light Probe | Spherical Harmonics로 간접광 효과를 구현 |
| 큐브맵 사용 이유 | 실시간 렌더링 부하를 줄이고, 반사 시각 효과를 효율적으로 처리하기 위해 |
| 사용 팁 | 중요하지 않은 반사는 베이크, 중요 반사는 실시간 |
다시 한 번 정리하기
Unity에서의 빛 표현은 그래픽스 이론 + 실시간 렌더링 기법 + 엔진 최적화가 함께 작용하는 복합적인 주제예요.
요청하신 대로 아래와 같은 흐름으로 단계별 체계적 정리를 해드릴게요:
✅ 1단계: 현실의 빛과 우리가 표현하고 싶은 것
| 개념 | 설명 |
| 직접광 | 광원에서 직접 물체에 닿는 빛 |
| 간접광 | 다른 표면에 반사되어 도달하는 빛 |
| 정반사 (Specular) | 매끄러운 표면에서의 거울 같은 반사 |
| 난반사 (Diffuse) | 거친 표면에서 빛이 여러 방향으로 퍼지는 반사 |
| 그림자 (Shadow) | 빛이 차단되어 생기는 어두운 영역 |
| 글로벌 일루미네이션 (GI) | 간접광을 포함한 전체 씬의 조명 시뮬레이션 |
| 반사광 | 주변 환경이 오브젝트 표면에 비치는 효과 |
✅ 2단계: 그래픽스에서 빛을 수학적으로 표현한 모델들
🔹 고전 조명 모델: Phong Lighting Model
| 구성 요소 | 설명 | 광원 |
| Ambient | 씬 전체를 기본적으로 밝게 해주는 "가짜 조명" | ❌ 실제 광원 아님 |
| Diffuse | 표면이 빛을 받아 밝아지는 부분 (Lambert 법칙 기반) | ✅ 직접광 |
| Specular | 반짝이는 하이라이트 효과 | ✅ 직접광 |
간접광 계산 없음주관적이고 감각적인 조명 모델과거 OpenGL, Fixed Function Pipeline에서 주로 사용됨
🔹 현대 조명 모델: PBR (Physically Based Rendering)
실제 물리 법칙을 기반으로 빛과 재질을 시뮬레이션
| 요소 | 설명 |
| 에너지 보존 | 반사된 빛의 총량이 들어온 빛보다 많아지지 않음 |
| Fresnel | 관찰 각도에 따라 반사량이 달라지는 현상 |
| Microfacet 모델 | 표면을 미세한 거울로 간주하여 정반사 계산 |
| BRDF | 특정 방향에서 들어온 빛이 어떤 방향으로 나가는지 수학적으로 표현 |
📌 대표적 BRDF: Cook-Torrance (Unity/Unreal 공통)
📌 정반사 분포 함수: GGX, Beckmann
✅ 3단계: 현대 엔진 (Unity / Unreal)에서의 적용 모델
| 항목 | Unity | Unreal |
| 기본 셰이딩 모델 | PBR 기반 Standard / URP / HDRP 셰이더 | PBR 기반 셰이딩 모델 |
| BRDF | Cook-Torrance + GGX + Schlick Fresnel | Cook-Torrance + GGX |
| 조명 처리 | 실시간 조명 + 베이크 GI + 반사 처리 | 실시간 조명 + 베이크 GI + SSR |
| 라이트 유형 | Directional, Point, Spot, Area (HDRP) | 동일 |
| 간접광 처리 | Lightmap, Light Probe, Reflection Probe | Lightmap, Volumetric Lightmap, SSR 등 |
✅ 4단계: Unity에서 실제 빛을 표현하는 주요 기법들
| 기법 | 역할 | 어떤 모델 개념을 구현하려고? |
| Direct Light | 실제 광원(Directional, Point 등)이 만드는 빛 | 직접광 (Diffuse, Specular) |
| Lightmap | 정적인 오브젝트에 간접광 베이킹 | 간접광 |
| Light Probe | 움직이는 오브젝트에 간접광 적용 | 간접광 (SH 기반 보간) |
| Reflection Probe | 오브젝트에 환경 반사 적용 (큐브맵) | 정반사 표현 (환경 반사) |
| Ambient Light | 기본 조명값 (색상 혹은 Skybox 기반) | 매우 단순한 간접광 대체 |
| Global Illumination | 다중 반사광까지 계산한 고급 조명 효과 | 현실적인 전체 조명 |
| Shadow Mapping | 그림자 계산 | 직접광 차단 효과 |
| Screen Space Reflection (SSR) | 카메라 기준 실시간 반사 효과 | 정반사 (뷰 기반) |
✅ 5단계: Unity Light 표현 요약
| Unity 시스템 | 설명 | 연결된 모델 개념 |
| Standard Shader | Unity 기본 PBR 셰이더 | Cook-Torrance BRDF |
| URP / HDRP | 경량/고급 렌더 파이프라인 | PBR 기반 조명 강화 |
| Light Probe | Spherical Harmonics로 간접 조명 | PBR의 간접광 보정 |
| Reflection Probe | 큐브맵 반사 | 정반사 (Environment Reflection) |
| Shader Graph | 셰이더 시각적 제작 도구 | PBR 구성 요소 조합 가능 |
✅ 최종 요약
현실의 빛
↳ 직접광, 간접광, 반사광 등
그래픽스 이론
↳ Phong (간단한 직접광 표현) → PBR (물리 기반 표현)
현대 엔진
↳ Unity / Unreal 둘 다 Cook-Torrance 기반 PBR 모델 사용
Unity의 조명 시스템
↳ Direct Light, Lightmap, Light Probe, Reflection Probe 등을 통해 PBR 구성요소를 실제 게임에 구현
이제 유니티 엔진에서 Light Probe와 Reflection Probe 에 대한 설명 방법을 확인해보도록 하겠습니다.

Light Probe 같은 경우도 light mapping 과 마찬자지로 설정과 베이킹에 시간이 걸리기 때문에 강의에서 제공하는 예제 프로젝트에서 미리 구성된 레벨을 살펴보겠습니다.
레벨 자체는 저번 글에서 정리한 Light Mapping 이 기본 설정 되어 있고,

거기에 추가해서 Light Probe Group 이 설정되 어 있습니다.
이 Light Probe Group의 설정을 처음부터 살펴보겠습니다.

기본적인 Lighting 설정이 맞춰져 있는 상황에서
하이어라키 창에서 Light → Light Probe Group 을 추가하겠습니다.

이 Light Probe Group 을 추가하게 되면,
기본적으로 정육면체의 각 꼭짓점이 노란색 노드로 구성되어 있는 Light Probe Group이 설정이 되어 있습니다.
이 Light Probe Node 하나 당 그 공간에 대한 빛의 정보를 저장하고 있습니다.
이 때 중요한 것은 이 색상이 변하게 되는 공간에 Light Probe Group을 얼마나 조밀하게 구성을 하느냐 입니다.
이 Light Probe Node 를 많이 설정할 수록, 좋기는 한데… 많이 설정할 수록 베이킹 할 때 시간이 굉장히 많이 늘어나고 그 다음에 Light Map의 개수가 굉장히 많이 늘어나서 필요한 메모리의 양이 굉장이 높게 됩니다.
따라서 이것을 적절히 배치해야 합니다.

기존의 레벨을 확인하면
글로벌 일루미네이션이 변하는 부분들이 눈에 확 들어오는 부분들이 있습니다.
(강의에서는 저 파란색 없던데… 난 왜 있는걸까? 일단 없다고 가정하세용)

이렇게 반사광과 주변광이 확 변하는 부분들 그 다음에 반사광끼리의 색상 변환이 많이 일어나는 부분들에
좀 더 촘촘하게 이 노드들을 배치하면 됩니다.

그럼 이제 한 번 노드들을 편집해 보겠습니다.

Edit Light Probe 를 설정하면, 밑에는 Light Probe를 추가 삭제 선택 복제 하는 설정값들입니다.

강사님은 (씬에서 Shift 클릭 으로 노드 다중 선택 / Ctrl c + v 를 통한 복제를 많이 활용)

이 상태에서 Lighting 에서 베이킹을 누르게 되면 Light Porbe 들에 마찬가지로 (light mapping에서와 같이) 공간에 대한 색상 값들이 저장이 됩니다.
정적인 오브젝트들은 모두 스태틱으로 되어 있고, 동적인 오브젝트들은 스태틱 설정이 꺼져있는 상황입니다.

이 동적인 오브젝트를 이동하게 되면, 영향을 받는 Light Probe 노드가 표시가 됩니다.

이렇게 영향을 주는 Light Probe 노드를 확대 해보면, 반사된 indriect light 를 확인해 볼 수 있습니다.
실제 게임을 실행시켜보면
이전 시간에는 단순히 ambient light 와 direct light 의 영향만을 받았던 캐릭터가 초록색 벽 앞에 가게되면은

Light Probe의 영향을 받아서 초록색을 띄는 것을 확인할 수 있습니다.

당연히 빨간색 벽 앞에서는 빨간색을 띔!!
이렇게 동적인 오브젝트에도 글로벌 일루미네이션의 영향을 받을 수 있도록
Lgiht Probe 시스템을 사용하면 굉장히 좋습니다..
하지만 이 Lgiht Probe 같은 경우도, 배치되는 노드들의 개수에 따라서 이 라이트 맵의 개수라든지 크기가 많이 변경이 되기 때문에

이 Light 설정을 살펴보면, 이 라이트 맵을 베이킹 할 때 메모리를 얼마나 사용을 할지 확인할 수 있습니다.,
그 부분에 따라서 우리가 카메라가 직접적으로 많이 보여지는 곳에는 아까 노드를 촘촘히 설정하면 되고, 카메라든지 캐릭터가 이제 많이 영향을 미치지 않는 부분에 대해서는 적절하게 노드를 소규모로 ㅅ러정하면된다.
그럼 지금부터는 라이트 프로브를 베이크한 레벨에 리플렉션 프로브를 설치해보겠습니다.
(이번에도 강의에 제공된 프로젝트를 살펴보겠습니다.)

Light → Reflection Probe 추가.
Reflection Probe 같은 경우는, 큐브맵 기법을 통해서 큐브맵으로 환경을 캡쳐하는 것이 때문에 이 큐브 맵에 대한 영향이 얼마나 미칠 거냐를 설정하시면 됩니다.

따라서 지금 박스 사이즈를 보시면 됩니다.
모든 레벨을 감쌀 수 있도록 20으로 변경

리플렉션 프로브를 설명할 때, 말했던 것 처럼 Baked와 Realtime, Cutom 을 설정할 수있습니다.
(커스텀 같은 경우는 기존에 설정되어 있던 큐브맵을 설정해서 그 큐브 맵을 오버라이드 한다고 보면됩니다.)

일단 bake로 설정한 다음, Bake 버튼을 누르게 되면, 캡쳐된 것을 확인할 수 있음
(레벨이 작기 때문에 해당 프로젝트에서는 바로 캡처된 것을 확인할 수 있었음)

캡처된 reflection probe cube map을 살펴보면
Texture Shape 이 Cube 맵으로 설정된 것을 볼 수 있습니다.
이 큐브 맵으로 설정된 것은 이제 빛이 반사가 되는 수면이라든지 거울과 같은 부분들에 많이 사용이 됩니다.

우리는 이 부분을 그냥 간단히 확인학기 위해
lighting 에서 스카이 박스는 큐브맵을 사용하기 때문에 이 스카이 박스에다가 설정해주도록 하겠습니다.
그러면 방금 전에 캡처한 큐브맵으로 스카이 박스가 적용된 것을 확인할 수 있습니다.
이 큐브맵 같은 경우는 반사되는 재질에 따라서 갑옷과 같은 곳에 자기 주변의 표면을 카메라로 봤을 때 표시를 해주고 싶을 때… 스펙 큘러와 같은 기법과 쉐이더 프로그래밍으로 이 큐브 맵을 많이 사용하고 있습니다..
이렇게 라이팅 맵핑과 라이트 프루브 그다음에 리플렉션 프루브를 사용해서 더 나은 그래픽으로 환경을 구성하실 수 있습니다.
앞서서 말했듯이 레벨의 크기와 프루브들의 개수에 따라서 베이크된 라이트 맵들의 크기와 개수가 굉장히 많아지면서 게임 내에서 메모리 사용량이 굉장히 급격하게 많아 질 수 있습니다.
그래서 이제 모바일이란든지 pc와 같이 타겟 플랫폼에 맞는 설정으로 지속적으로 최적화를 테스트해야합니다.!!!
학습 인증 사진
① 오늘자 날짜, 공부 시작 시각 포함 사진 1장
② 오늘자 날짜, 공부 종료 시각 포함 사진 1장


③ 1개 클립 수강 인증 사진 (강의장 목록 캡쳐, 강의 내용이 담긴 수강화면이 보이지 않도록) 1장

④ 학습 인증샷 1장 이상 (ex. 필기 촬영, 작업물, 등)



⑤ 마이페이지 - 학습통계 - 챌린지 대상 강의 완강률 캡쳐 사진 1장 (완료 클립 수가 보이도록)
