라이트매핑은 조명효과를 텍스처로 미리 만드는 과정을 말한다. 이 텍스처를 라이트맵이라고 하고 이과정을 Bake한다고 한다. 라이트맵은 실시간 렌더링화면과 오버레이돼 믹싱된다.
Generate Lightmap UVs 옵션
외부에서 임포트된 모델은 Models 탭에서 Generate Lightmap UVs속성을 체크해야 라이트매핑 효과가 적용된다.
05.Models/Stair폴더의 Stair모델을 선택하고 인스펙터뷰에서 Model탭을 누르고 아래 Generate Lightmap UVs를 체크하고 Apply한다.
Contribute GI 플러그
라이트매핑을 하려면 라이트매퍼에 그 대상을 알려줘야 한다. 따라서 Barrel, Floor, Wall, Stair를 선택하고 인스펙터뷰의 Static 플래그 중 Contribute GI를 체크해야한다. 프로젝트뷰 프리팹폴더에서 처리한다.
Barrel은 동적장애물 처리를 했기때문에 Contrubute GI만 선택하고 나머지 Floor, Wall,Stair등은 Navigation Static도 선택한다. Contribute GI를 선택하지 않으면 라이트매핑 대상에서 제외된다.
라이팅뷰
메뉴에서 Window>Rendering>Lighting을 선택해 라이팅 뷰를 열고 Scene탭을 클릭한다. 라이팅뷰는 4개의 영역으로 분리돼 있으며 라이팅매핑을 위한 다양한 속성을 제공한다. 먼저 Scene탭의 속성은 다음과 같다.
한번도 라이트맵을 베이킹하지 않았다면 모든 섹션이 비활성화 되어 있습니다 .[New Lighting Settings]버튼을 클릭해 새로운 라이팅 세팅을 생성한다. 생성한 라이팅 섹션의 이름을 씬이름과 동일하게 Play라고 지정한다.
아래 Auto Generate속성을 체크하면 라이트맵을 백그라운드로 베이크한다. 씬뷰에 새로운 모델 또는 조명을 변경하면 라이트매퍼가 다시 베이크작업을 시작한다. 이때 오른쪽 아래 있는 상태바에 베이크 과정이 표시된다. 라이트맵은 캐시에 저장되는데 캐시는 실행파일에 포함되지 않으므로 실행파일과 함께 배포하려면 반드시 Auto Generate 옵션을 끄고 수동으로 베이크한다.
Progressive 라이트매퍼
Progressive 라이트매퍼는 경로추적기반의 라이트매퍼로서 라이트맵과 라이트프로브를 점진적으로 베이크하는 기능을 제공한다. 또한, Progressive GPU라이트매퍼는 GPU의 그래픽 가속 기능을 이용해 좀 더 빠르게 라이트 매핑을 할 수 있다. 기존 Enlighten 라이트매퍼는 베이크가 완료전까지는 결과물을 볼수 없으나 Progressive 라이트 매퍼는 대략적인 결과물을 바로 보여준다.
라이팅뷰의 Environment
라이트맵을 수동으로 베이크해보자. 씬뷰에 있는 Directional Light는 Realtime조명으로 씬을 전체적으로 비췄던 조명이다. 라이트맵의 결과물을 확인하기 쉽게 이걸 잠시 비활성화한다.
조명을 비활성화해도 희미하게 보이는데 Skybox의 하늘빛이 환경 광원으로 작용하고 있다. 환경광원은 Ambient Light라고도 한다. 바닥에도 반사광이 표시된다.
라이트뷰를 열어 Environment탭을 선택해 보면 Source가 Skybox로 되어 있어서 그렇고 Intensity Multiplier를 2로 변경하면 좀더 밝아진다.
어둡게 하기위해 Soruce를 color로 바꾸고 검정색을 선택한다.
Environment Reflection속성은 3D 모델 표면에 반사 광원의 효과를 설정하는 옵션이다. 기본값인 Skybox의 빛을 Floor에 비추고 있다. Source를 Custom으로 변경하거나 반사율을 나타내는 Intensity Multiplier속성을 0으로 설정하면 바닥이 어둡게 된다.
Baked 라이트매핑
Baked 라이트매핑을 위해 먼저 라이팅뷰의 [Scene]탭으로 이동한 다음 Realtime Lighting 섹션에서 Realtime Global Illumination 속성을 언체크한다. 이 기능은 전역조명을 실시간 계산해서 반영하는것으로 게임용 PC에서 적합하다.
Mixed Lighting - Baked Global Illumination을 체크하고 Lighting Mode는 Subtractive로 설정해 라이트맵과 라이트프로브, 그림자를 모두 하나의 라이트맵에 베이크한다.
조명을 여러개 배치하기 위해 하이라키뷰의 _STAGE를 선택하고 Point Light를 차일드로 추가한다. Point Light속성은 intensity는 10으로 다음 표과 같이 설정한다. 조명의높이는 주인공의 키 높이 정도로 Y:2정도로 올려서 스테이지에 배치한다. 10개정도 카피해서 배치한후. 색은 R G B 원색으로 각각 바꿔준다.
AutoGenerate 기능이 켜져있기 대문에 조명을 추가하면 바로바로 라이트맵을 베이크하기 시작하고 시간이 지나면서 품질이 좋와진다. 대신 AutoGenerate 기능이 켜져있어 조명을 추가할때마다 엄청 부하가 먹는다
라이트맵 베이크
라이트맵을 캐시가 아닌 텍스처파일로 베이크하려면 백그라운드기능을 꺼야한다 .라이트뷰 Auto Generate 옵션을 언체크한다.
Generate Lighting을 클릭하면 열심히 렌더링한다 제대로 조명이 안나온다면 오브젝트의 Static에 GI가 체크되어 있는지 확인해본다
Lighting 뷰의 [Baked Lightmaps]탭을 누르면 라이트맵을 확인할 수 있다. 포토샵에서 편집이 가능하다.
Area Light
_Stage 오브젝트의 자식으로 Area Light를 하나 만들고 벽쪽으로 배치하고 다음과 같이 길게 만들어 본다. Area Light는 유일하게 실시간 라이트가 아니다. 베이크후 효과를 볼 수 있다.
Realtime Lighting
이 섹션에는 인라이튼 실시간 전역 조명 시스템과 관련된 설정이 포함되어 있습니다.
프로퍼티기능
Realtime Global Illumination | 이 체크박스를 선택하면 Unity는 이 조명 설정 에셋을 사용하는 씬에서 인라이튼 실시간 전역 조명 시스템을 활성화합니다. |
Realtime Environment Lighting | 인라이튼 실시간 전역 조명 시스템을 사용하여 주변광을 실시간으로 계산하고 업데이트하려면 이 프로퍼티를 활성화합니다. 이 프로퍼티는 씬에서 인라이튼 실시간 전역 조명 및 베이크된 전역 조명이 모두 활성화된 경우에만 사용할 수 있습니다. |
Mixed Lighting
이 섹션에는 조명 설정 에셋을 사용하는 씬 내 베이크된 광원 및 혼합 광원의 동작에 영향을 주는 설정이 나와 있습니다.
프로퍼티:기능:
Baked Global Illumination | 이 설정을 활성화하면 Unity는 이 조명 설정 에셋을 사용하는 씬에 대해 베이크된 전역 조명 시스템을 활성화합니다. 이 설정을 비활성화하면 Unity는 이 조명 설정 에셋을 사용하는 씬에 대해 베이크된 전역 조명 시스템을 비활성화합니다. 베이크된 전역 조명 시스템을 활성화하면 Unity는 라이트매핑의 경우에만 씬에서 베이크된 광원을 사용하고, 혼합 광원은 Lighting Mode 설정에 따라 동작합니다. 베이크된 전역 조명 시스템을 비활성화하면 Unity는 씬의 모든 베이크된 광원과 혼합 광원이 실시간 광원처럼 동작하도록 강제로 지정합니다. |
|
Lighting Mode | Unity가 이 조명 설정 에셋을 사용하는 씬 내 모든 혼합 광원에 사용할 조명 모드를 지정합니다. 조명 모드를 변경하면 이 조명 설정 에셋을 사용하는 씬의 조명 데이터를 다시 베이크해야 합니다. |
|
Baked Indirect | 이 조명 설정 에셋을 사용하는 씬 내 모든 혼합 광원에 Baked Indirect 조명 모드를 사용합니다. | |
Subtractive | 이 조명 설정 애셋을 사용하는 씬의 모든 혼합 조명에 대해 서브트랙티브 조명 모드를 사용합니다. |
|
Shadowmask | 이 조명 설정 애셋을 사용하는 씬의 모든 혼합 조명에 대해 섀도우 마스크 조명 모드를 사용합니다. |
Lightmapping Settings
프로퍼티기능
Lightmap Resolution | 라이트맵에 사용할 단위당 텍셀 수를 지정합니다. 이 값을 높게 설정하면 라이트맵 품질이 개선되지만 베이크 시간도 늘어납니다. 이 값을 두 배로 늘리면 라이트맵의 높이와 너비가 모두 2배가 되기 때문에 텍셀 수는 4배로 증가합니다. 조명 창의 통계 영역에서 Occupied texels 수를 확인할 수 있습니다. |
Lightmap Padding | 베이크된 라이트맵의 개별 셰이프 간 간격을 텍셀 단위로 결정합니다. 기본값은 2입니다. |
Max Lightmap Size | 개별로 포함된 게임 오브젝트 영역을 통합하는 전체 라이트맵 텍스처의 크기(픽셀 단위)를 지정합니다. 기본값은 1024입니다. |
Lightmap compression | 에디터가 라이트맵에 사용하는 압축 수준입니다. - None: 라이트맵을 압축하지 않습니다. - Low Quality: 보통 품질보다 메모리와 저장 공간을 덜 사용하지만 시각적 결함이 발생할 수도 있습니다. - Normal Quality: 메모리 사용량과 화질 사이의 균형을 유지합니다. - High Quality: 보통 품질보다 더 많은 메모리와 저장 공간이 필요하지만 더 나은 시각적 결과를 제공합니다. |
Ambient Occlusion | 베이크된 앰비언트 오클루전에서 상대 표면 밝기를 제어할 수 있습니다. 이것은 조명을 베이크하는데 사용하는 라이트매퍼에 의해 계산된 간접 조명에만 적용됩니다. 기본적으로 활성화되어 있습니다. 앰비언트 오클루전이 활성화되면 최대 거리, 간접 조정, 직접 조정의 세 가지 설정이 노출됩니다. 세 가지 설정 모두 값이 높을수록 오클루전된 영역과 조명을 완전히 받은 영역 간의 콘트라스트가 더욱 증가합니다. |
Max Distance | 오브젝트에 오클루전을 적용할지 결정하기 위해 조명 시스템에서 광선을 투사하는 거리를 지정합니다. 값이 높을수록 더 긴 광선이 생성되고 라이트맵에 그림자가 더 많이 추가되는 한편, 값이 낮을수록 오브젝트가 서로 매우 가까이에 있는 경우에만 그림자를 추가하는 더 짧은 광선이 생성됩니다. 값을 0으로 설정하면 최대 거리가 없는 무한하게 긴 광선이 투사됩니다. 기본값은 1입니다. |
Indirect Contribution | 최종 라이트맵의 오브젝트에서 바운스되고 방출되는 간접 주변광의 밝기를 스케일합니다. 0과 10 사이의 값으로 기본값은 1입니다. 값이 1보다 작으면 강도가 감소하고 값이 1보다 크면 증가합니다. |
Direct Contribution | 직접광의 밝기를 스케일합니다. 0과 10사이의 값으로 기본값은 0입니다. 값이 높을수록 에디터가 직접 조명에 적용하는 콘트라스트가 증가합니다. |
Directional Mode | 오브젝트 표면의 각 포인트에서 가장 우세하게 비추는 광원의 특성에 관한 정보를 저장할 수 있는 라이트맵을 활성화합니다. 자세한 내용은 방향성 라이트매핑을 참조하십시오. 기본 모드는 Directional입니다. |
Directional | Directional 모드에서 Unity는 광원에서 비추는 우세한 방향을 저장하는 두 번째 라이트맵을 생성합니다. 이를 통해 디퓨즈 노멀 매핑된 머티리얼을 전역 조명 시스템과 연동할 수 있습니다. 셰이더는 렌더링하는 동안 두 개의 라이트맵 텍스처를 샘플링합니다. 결과적으로 방향성 모드는 추가 라이트맵 데이터를 위해 비방향성 모드보다 약 2배의 비디오 메모리를 필요로 합니다. 추가 방향성 텍스처를 생성하면 베이킹 성능에 영향을 줍니다. 방향 라이트맵은 SM2.0 하드웨어에서 또는 GLES2.0을 사용할 때 디코드할 수 없습니다. |
Non-directional | Non-directional 모드 라이트맵에는하나의 텍스처만 포함됩니다. 결과적으로 방향 라이트맵보다 비디오 메모리와 저장 공간이 적게 필요하며 셰이더에서 더 빠르게 디코드할 수 있습니다. 이러한 최적화는 화질을 저하합니다. |
Indirect Intensity | 실시간 및 베이크된 라이트맵에 저장되는 간접광의 밝기를 결정합니다. 0과 5 사이의 값입니다. 값을 1보다 크게 설정하면 간접광의 강도가 증가하고, 값을 1보다 작게 설정하면 간접광의 강도가 감소합니다. 기본값은 1입니다. |
Albedo Boost | Unity가 표면 사이에서 바운스하는 광원의 양을 지정합니다. 이 값은 1에서 10 사이입니다. 이 값을 높게 설정할수록 간접광 계산을 위해 알베도 값을 흰색으로 끌어옵니다. 기본값은 1이며 물리적으로 정확합니다. |
Lightmap Parameters | 라이트맵 파라미터 에셋은 베이크된 전역 조명과 관련된 설정 값을 저장합니다. 에디터는 선택할 수 있는 몇 가지 기본 라이트맵 파라미터 에셋을 제공하지만 Create New 옵션을 사용하여 자체 라이트맵 파라미터 파일을 만들 수도 있습니다. 자세한 내용은 라이트맵 파라미터를 참조하십시오. 기본값은 Default-Medium입니다. 옵션은 Default-Medium, Default-HighResolution, Default-LowResolution 및 Default-VeryLowResolution입니다. |
'유니티게임강좌 > 라이트매핑' 카테고리의 다른 글
[라이트매핑] 라이트 프로브 (2) | 2023.03.20 |
---|---|
[라이트매핑] 광원 타입 (0) | 2023.03.19 |