반응형
Baked Lighting
Unity Technologies
서론
라이트... 너란 존재 너무 어렵다... 이 쪽을 잘 모르니까 뭐가 문제인지 자체를 모르겠음...ㅠ.ㅠ 관련해서 지현님의 노말맵 그리고 Baked Lighting에 대해 이해해보는 시간을 가져보자...
Baked Lighting으로 빛을 굽는 방법
- Depthmap -> 관련 내용 찾아보기 (RGB-D 구현의 새로운 방법?)
- Shadowmap -> Lightmap 기준의 Depth Map
- Hard Shadow -> 한번만 Sampling
- Soft Shadow -> 경계를 부드럽게 하기 위해 여러번 Sampling -> Pixel Shader 비용이 더 많이 들어감
- Lighting Mode
- Baked Indirect
- 간접광 즉 GI 정보만 저장함 -> 그림자 연산은 실시간 -> 가장 비쌈 -> 쓸일 없음
- Subtractive
- 전통적인 방법 -> 미리 구워놓은 그림자와 실시간 그림자의 차이가 남. 그림자 위에 그림자
- Shadowmask
- 가장 최근(?) 방법 : 미리 연산 후 가까운 곳은 리얼타임으로 먼 곳은 Baked -> Specular를 실시간 연산함
- 그림자 정보를 따로 저장하여 Realtime과 Baked가 자연스러움 쉐도우 맵을 쓰는 것이 아닌 구워놓은 ShadowMask 맵을 사용함
- 필드 사이즈가 커지면 또 퀄리티 안나옴 -> Distance Shadowmask 사용 하는 것이 좋음
- Distance Shadowmask
- Project Settings -> Quality에서 설정 해야 함 -> 설정 찾느라 오래걸림 ㅠ.ㅠ
- 원경에 대한 내용은 그림자 퀄리티를 낮추고
- Baked Indirect
- Baked Lightmaps (Static)
- ASTC 포맷을 많이씀 2021 버전에서 기본 BC6H
- Light Probe (Dynamics 주로!)
- 빛에 대한 정보를 기록? -> Lightmaps
- 공간에 대한 정보를 기록? -> LightProbe
- 빛이 극단적으로 변하는 경우에는 촘촘하게 배치해야 함
- 그렇지 않을 경우 어두운 곳에서 발광체를 띄는 것 처럼 잘못 렌더링 될 수 있
- 어쩔 수 없이 수동으로 해야 하는 부분
- 오히려 작은 물체들은 라이트맵이 아니라 라이트 프로브로 하는 경우도 있음 -> Light Map으로 했을 때 퀄리티는 안나오고 성능만 잡아먹는 경우
- Mesh Renderer에서 Lightmaps을 할 것인지 Light Probes를 할 것인지 설정
- 하이어리키 잘 정리해야 나중에 정리하기 쉬움
노말맵에 대한 이해
- 노말맵의 개념
- 리소스를 아끼고 디테일을 표현 (Fake)
- 모델 경량화 vs 노말맵?
모델 경량화 시 오브젝트 클릭 및 상호작용이 가능하지만 노말맵은 불가능함...?
- 모델 경량화 vs 노말맵?
- 리소스를 아끼고 디테일을 표현 (Fake)
- Normal Mapping이란?
- 빛의 반응하기 위해 필요함
- 평면에 빛이 맺히는 경우 -> 100% 산란 X, 소실 X
- 곡면에 빛이 맺히는 경우 -> 에너지는 동일, 면적은 넓어짐 -> 빛의 밝기가 내려감
- Hard Edge -> 버텍스 하나에 2개
- 면에 상대적인 각도를 저장하여 음영을 표현함.
- Normal mapping x Parallax mapping x Displacement mapping
- Heightmap (가성비 똥, 거의 안씀)
- 방향의 편차를 계산하는 Normal Mapping과는 달리 높이 값 기반으로 깊이 값 제공
- 외곽 쪽 보면 확실히 한계는 있음. 픽셀 연산
- 인접한 픽셀이 차폐되어있는지 체크함 -> 연산을 많이 먹음
- Displacement mapping with Tessellation
- 실제 버텍스 조작 Heightmap 보다 Displacement 쓴다..
- 모바일에서는 아직 Tessellation 제약이 있음.
- Heightmap (가성비 똥, 거의 안씀)
- NormalMap이 파란색인 이유?
- RGB로 XYZ를 저장함
- 옷으로 따지면 안감 모델의 밑은 렌더링할 필요 없음 -> 따라서 Z축은 -1 ~ 1이 아닌 0 ~ 1이 맞음. Z축은 Blue에 대응하니까 Normal Map이 파란색인 경향이 있음.
- Normal Map Compression
- 특수한 압축이 가능함.
ASTC -> 퀄리티가 되게 좋음. -> ASTC은 압축을할 때 Normal 속성을 부여할 수 있음.
- 특수한 압축이 가능함.
반응형
댓글