본문 바로가기

Unity

[Unity] 개인프로젝트 - 그래픽 옵션 설정

옵션표 및 구성

D2의 그래픽 옵션은 4단계로 구성되어 있으며, 각 단계별 차이는 다음의 것들을 조합해 만들어 냈다.
 
  • Unity ProjectSettings - Quality 1/2/3/4
  • Screen resolution force lower on/off
  • Some shader on/off
  • Logical object culling on/off
  • Post processing on/off
  • Fog on/off
  • Combustive effect of DeadBody on/off
이러한 조합으로 만들어진 옵션표는 다음과 같다.
 
옵션 - 1 단계 옵션 - 2 단계 (Default) 옵션 - 3 단계 옵션 - 4단계
Texture Quality : Half
Particle raycast budget : 16
Anisotoropic Textures : Off

해상도 : 1024 x 768 강제
로비 High Quality 표현 : Off
시체 소멸 이펙트 : Off
Fog : Off
캐릭터 셰이더 : Normal, Occlusion Off
Effect Paricle Culling : On
 - 인지와 무관한 장식성 파티클들의 disableEmission
오브젝트 옵션 컬링 : On
 - 배경의 전투와 무관한 오브젝트 inactive
로비/도전 배경 컬링 : On
 - 로비 배경의 데코성 파티클 & 애니 Off
Texture Quality : Full

해상도 : 1024 * 768 강제 Off
로비 High Quality 표현 : On
시체 소멸 이펙트 : On
캐릭터 셰이더 : All On
Effect Particle Culling : Off
로비/도전 배경 컬링 : Off
Particle raycast Budget : 32

오브젝트 옵션 컬링 : Off
Fog : On
Anisotoropic Textures : On

포스트 프로세싱 - 비네팅 : On
실시간 그림자 : On

 

Unity ProjectSettings - Quality

퀄러티 셋팅에서 사용한 항목은 다음과 같다.
 
Texture Quality : Half or Full (옵션 1에서만 Half)
Particle raycast budget : 16 or 32 (옵션 3부터 32)
Anisotoropic texture : Off or On (옵션 4에서만 On)
Shadows - Disable or Enable(Hard shadows only) (옵션 4에서만 Enable)
 
이 중 가장 비싼 녀석은 실시간 그림자이다.
실시간 그림자를 비활성화 하기 위해서는 퀄러티 셋팅에서도 enable 처리를 해 주어야 하고, SkinnedMeshRenderer에 다음의 옵션 처리를 해 주어야 한다.
skinnedMeshRenderer.shadowCastingMode = ShadowCastingMode.Off;
skinnedMeshRenderer.receiveShadows = false;
 
아래의 receiveShadows는 캐릭터나 어떠한 메쉬 위로 그림자 표현을 하지 않을 것이라면 꺼주는 게 좋다.

Some shader on/off

D2는 2장의 기본 텍스쳐와 3장의 컨트롤 텍스쳐로 Creature 셰이더를 표현한다
 
기본
  • Diffuse
  • Bumpmap (노말)
컨트롤
  • Occlusion
  • Glossy
  • Metalness
이 중 그래픽 옵션 1에서만 "Bumpmap(노말맵)"과 "Occlusion"을 Material에서 날려 버린다.
 

Post-processing on/off

D2에서 사용했던 포스트-프로세싱은 비네팅(Vignetting) 하나 뿐이다.
원래는 Bloom과 ChromaticAbbreation도 구현을 했었으나, 너무 렌더 비용이 비싸고 발열도 심해서 아예 빼버렸다.
 
비네팅 역시 렌더 비용과 발열이 무시할만한 수준이 아니기에 그래픽 옵션 4에서만 켜지도록 해 두었다.
화면의 외곽을 어둡게 하면서 블러를 먹이는 비네팅이 확실히 배경의 원근감을 살려주긴 하더라.
 

Fog on/off

실시간 그림자와 더불어 비용이 비싼 Fog는 다음과 같이 활성/비활성화 시킬 수 있다.
 
RenderSettings.fog = false; //
 
그래픽옵션 테이블에서 볼 수 있듯이 옵션 3이상에서만 켜주고 있다.
 

Logical object culling on/off

이것은 그래픽 옵션 1에서만 발동되며, 유니티 Tag를 활용한 방식이다.
예를 들어, "LowQualityInvisible"이라는 Tag를 만들고, 옵션 1에서는 날려버릴 녀석들에게 가져다 붙인다.
 
다음의 경우들에 대해서 말이다.
  • 이펙트의 특정 Particle
  • 배경의 장식성 Object
  • 로비나 도전 씬에서의 장식성 Object 등...
 
이펙트와 배경 모두 적지 않은 도움이 되었다.
이펙트의 경우 표현하지 않을 녀석의 particle.enableEmission = false 처리해 주었고, 장식성 오브젝트들의 경우 object.SetActive(false)로 처리해 주었다.
 

Combustive effect of DeadBody on/off

이름이 복잡하게 지어져 있는데, 그냥 액션 RPG에서 흔히 얘기하는 Creaute의 시체 사멸시 타들어가는 이펙트를 이야기 한다.
몹을 한꺼번에 여러마리 처치했을 때, 이 이펙트가 동시에 나오면서 느려지는 문제가 있어서, 그래픽 옵션 1에서는 아예 얘를 빼버렸다.
 

기본 옵션

게임을 처음 설치하면 기본적으로 옵션 2에 설정된다.
하지만, 게임 구동 과정에서 저사양 단말기라고 판단되면 옵션 1로 설정되며, 옵션 2까지만 선택이 가능하도록 구현하였다.