ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 최적화 - 16 (최종 마무리 #텍스쳐 낮추기)
    Galaxy Ball/5. 최적화 2024. 11. 19. 02:29

    이제 정말 마무리로 모든 코드들을 쭉 훑고 마지막으로 더 볼게 있는지 확인하고 고쳐보겠다

     

    문듯 생각난건데 모바일 배경에 이렇게까지 맵이 넓어도 되는건가 싶었다

    물론 2D 게임이니 쉐이더도, 메터리얼도 사용하지 않지만 정말 낭비되는 공간이 많을 정도로 과하게 넓긴하다...

     

    그러다보니 당연히 최적화에 타격을 주지 않을까라는 생각이 들었고 이것도 한번 최적화해보도록 하겠다

     

    우선 스테이지맵을 채우고 있는 이 원본 이미지

    에서 Texture Type > Sprite (2D and UI) 를 선택한다면 밑에서 옵션을 선택할 수 있다

     

    그 중에서 나는 Override For Android를 선택해 

     

    Max Size > 512

    Compressor Quality > Fast

    Format > RGB Compressed ETC2 4 bits

     

    로 맞춰주었다

     

    이제 이 3가지 요소들에 대해서 간단하게 알아보자

     

    더보기

    1. Max Size

    • 설명: Max Size는 텍스처의 최대 해상도를 설정하는 옵션입니다. 텍스처의 크기를 설정할 때, 이 값을 통해 Unity가 텍스처를 지정된 최대 크기로 리사이즈할 수 있습니다.
    • 용도: 텍스처의 크기를 줄여서 메모리 사용량을 절감하고, 성능을 최적화하는 데 사용됩니다.
    • : 이 값은 텍스처의 너비높이에 적용됩니다. 예를 들어 Max Size가 1024로 설정되면, 텍스처의 최대 크기가 1024x1024로 제한됩니다. 그보다 큰 텍스처는 자동으로 1024x1024 크기로 리사이즈됩니다.
      • 예시:
        • Max Size: 1024 → 텍스처 크기 1024x1024를 초과하지 않음
        • Max Size: 512 → 텍스처 크기 512x512로 리사이즈됨
    • 장점: 텍스처 크기를 줄이면 메모리 사용량렌더링 성능을 향상시킬 수 있습니다. 특히 모바일 게임에서는 텍스처 크기를 관리하는 것이 매우 중요합니다.

    2. Compression Quality

    • 설명: Compression Quality는 텍스처 압축의 품질을 설정하는 옵션입니다. 텍스처를 압축할 때, 압축 비율과 품질 간의 균형을 선택할 수 있습니다.
      • Low (낮은 품질): 압축률이 높아 파일 크기는 줄어들지만, 텍스처의 비주얼 품질이 손상될 수 있습니다.
      • Medium (중간 품질): 적당한 압축률과 품질을 유지합니다.
      • High (높은 품질): 파일 크기는 커지지만, 비주얼 품질이 가장 좋습니다. 성능이 중요한 모바일 게임에서 피해야 할 수도 있습니다.
    • 용도: 이 값은 텍스처 압축에서 성능과 품질을 조절하는 데 사용됩니다. 모바일 게임에서는 Medium 또는 Low 설정을 사용하여 성능을 최적화할 수 있습니다.
    • 예시:
      • Low Quality: 성능을 중시, 텍스처 품질을 희생하면서 파일 크기 절감.
      • High Quality: 그래픽 품질을 중시하며, 파일 크기와 메모리 사용량은 상대적으로 높아짐.

    3. Format

    • 설명: Format은 텍스처 데이터를 어떤 포맷으로 저장할지를 결정하는 옵션입니다. 다양한 포맷은 각각 다른 압축 알고리즘과 색상 모델을 사용하며, 이를 통해 성능품질을 최적화할 수 있습니다. 일반적으로 사용되는 포맷에는 ETC2, ASTC, RGBA, RGB 등이 있습니다.
      • ETC2: Android에서 널리 사용되는 압축 포맷입니다. ETC2는 RGBARGB를 지원하며, 투명도가 필요한 텍스처에는 RGBA를 사용합니다.
      • ASTC: 고급 압축 포맷으로, 고해상도 텍스처높은 품질을 제공합니다. 최신 모바일 기기에서 지원되며, 파일 크기비주얼 품질 사이의 균형이 좋습니다.
      • RGBA Compressed: 알파 채널을 포함한 압축 포맷으로, 텍스처의 투명도가 중요한 경우 사용합니다.
      • RGB Compressed: 알파 채널이 필요 없는 압축 포맷으로, 투명도가 필요 없는 텍스처에 사용합니다.
    • 용도: 압축 포맷을 선택하여 성능과 품질을 최적화하고, 다양한 기기에서 적합한 압축을 적용할 수 있습니다.
      • ETC2ASTC는 주로 모바일 기기에서 사용됩니다.
      • RGBA Compressed는 투명한 부분이 있는 텍스처에 사용되고, RGB Compressed는 투명도가 필요 없는 텍스처에 적합합니다.

    결론:

    • Max Size는 텍스처의 최대 해상도를 설정하여 메모리 절감성능 최적화에 도움이 됩니다.
    • Compression Quality는 압축 품질을 설정하여 성능파일 크기를 조절합니다.
    • Format은 텍스처 데이터를 저장할 포맷을 선택하여 비주얼 품질성능을 균형 있게 맞출 수 있습니다.

    모바일 환경이라면 Max Size는 512 이하의 화질을 권장한다고 한다

     

    Compression Quality 는 봐가면서 적당히 타협하는게 좋다고 한다

     

    Format이 조금 복잡하다. 모바일 기기는 크게 ETC2 혹은 ASTC로 나뉘는데 

    만약 고해상도의 게임이 아니라면 주로 ETC2를 사용한다(유니티 디폴트 값은 ASTC)

    그리고 앞에 붙는 RGB와 RGBA값이 있는데 만약 투명도(알파값)와 관련없는 텍스쳐라면 RGB

    관련이 있다면 RGBA를 사용해주면 된다

     

     

    예를 들어 메인 스테이지의 배경은 두가지 요소로 나뉘어져 있다

     

    알파값(투명도)가 필요없는 우주 파트와 알파값이 필요한 별 파트

     

    그러니 왼쪽은 RGB Compressed ETC2 4 bits

    그리고 오른쪽은 RGBA Crunched ETC2 & RGBA Compressed ETC2 8 bits 를 선택해주면 된다

     

    그 중 RGBA Crunched ETC2 & RGBA Compressed ETC2 8 bits 의 차이가 뭔지 간단하게 보자면

     

    더보기
    1. 압축 효율성:
      • RGBA Compressed ETC2 8 bits기본 압축을 사용하여, 품질을 적당히 유지하면서 파일 크기를 줄입니다.
      • RGBA Crunched ETC2는 더 강력한 압축을 적용하여, 파일 크기를 더 크게 줄이는 대신 품질 손실이 있을 수 있습니다.
    2. 파일 크기:
      • RGBA Crunched ETC2파일 크기가 더 작습니다. 이 옵션은 용량 절감이 중요한 경우 적합합니다.
    3. 품질:
      • RGBA Compressed ETC2 8 bits품질이 상대적으로 더 우수합니다.
      • RGBA Crunched ETC2는 더 큰 압축률을 적용하기 때문에 품질 손실이 있을 수 있습니다.

    결론:

    • 파일 크기 절감이 가장 중요하고, 약간의 품질 저하가 문제가 되지 않는 경우 RGBA Crunched ETC2를 선택하는 것이 유리합니다.
    • 품질을 중시하면서 적당한 압축을 원하는 경우에는 RGBA Compressed ETC2 8 bits가 더 나은 선택이 될 것입니다.

    다른 복잡한거 다 떼고 핵심적인 차이는 이렇게 된다고 한다

    쉽게 말해 품질 적당히 챙기면서 가고 싶으면 RGBA Compressed ETC2 8 bits

    품질 포기하고 성능 위주로 챙기고 싶다면  RGBA Crunched ETC2

     

    하지만 여기서 한가지 더 중요한게 있다!

    둘 중 어떤걸 선택하냐에 따라 게임에서 좌우되는건

    더보기

    1. 앱 크기 (파일 크기)

    • **RGBA Crunched ETC2**는 **추가 압축 (크런치 압축)**을 사용하기 때문에, 파일 크기가 더 작아집니다.
      • 장점: 앱의 다운로드 크기가 줄어들고, 설치 공간을 절약할 수 있습니다.
      • 단점: 압축 해제 작업이 필요해 로딩 시간이 약간 길어질 수 있습니다.
    • **RGBA Compressed ETC2 8 bits**는 추가적인 압축이 없으므로, 파일 크기가 더 큽니다.
      • 장점: 즉시 사용 가능하기 때문에, 로딩 시간이 짧습니다.
      • 단점: 더 큰 파일 크기 때문에, 앱의 다운로드 크기설치 공간이 증가할 수 있습니다.

    2. 로딩 시간

    • **RGBA Crunched ETC2**는 로딩 시 압축 해제 작업이 필요합니다.
      • 해제 작업은 CPU에서 수행되며, 텍스처가 로드되는 순간 한 번만 발생합니다.
      • 특히 비동기 방식으로 텍스처를 로드할 때, 로딩 지연이 발생할 수 있습니다.
    • **RGBA Compressed ETC2 8 bits**는 압축 해제 작업이 없으므로, 즉시 하드웨어에서 디코딩이 가능합니다.
      • 로딩 시간이 더 짧아지고, 빠르게 텍스처를 표시할 수 있습니다.

    3. 앱 품질 및 유지 보수

    • **RGBA Crunched ETC2**는 추가 압축으로 인해 텍스처의 품질이 약간 떨어질 수 있습니다.
      • 고해상도 텍스처나, 세밀한 디테일이 중요한 텍스처에서는 품질 저하가 눈에 띌 수 있습니다.
    • **RGBA Compressed ETC2 8 bits**는 기본 ETC2 품질 그대로 유지되기 때문에, 텍스처 품질이 더 좋습니다.
      • 특히 UI 이미지고해상도 텍스처에 적합합니다.

    앱 크기, 로딩시간, 유지보수 이 세가지라는 점.... 모바일 환경안에서 프레임에는 아무런 지장도 주지 않는다

     

    사실 이 최적화를 시작한 절대적인 목표는 프레임 개선이었기에 만약 정말 영향을 받는게 이 3가지라면

    굳이 RGBA Crunched ETC2 를 사용하지 않고 품질까지 챙길 수 있는

    RGBA Compressed ETC2 8 bits를 사용하는게 맞다

     

     

     

     

    자 이제 각 요소에 대해 알아보았으니 전부 변경해보도록 하자

     

     

     

    다른 씬들에서도 게임에 지장이 가지 않는것들은 전부 낮춰주도록 하자

     

    물론 행성들과 공전 애니메이션용 이미지들까지 싹 다 바꿔주었다

     

    결과적으로 해상도부터 말하자면 확대하여 봤을때 확실히 차이가 보인다

    그러나 50% 정도만 축소하면 육안으로 봤을때 큰 차이가 느껴지지 않는다

     

    하지만! 기분탓인지는 몰라도 프레임이 확실히 부드럽게 느껴진다. 

    텍스쳐의 해상도를 대폭 줄였으니 그럴법도 하다

     

     

    사실 맨처음 막막하게 최적화를 시작하면서 이런것들을 알아내는게 정말 급했다

    분명히 성능에 지장을 크게 주는 설정들이 있을텐데 누가 콕 찝어 말해주지 않는 이상 절대 알수가 없으니..

    어떻게보면 지난 16개의 최적화 관련글들을 써오며 보낸 시간들은 전부 이런것들을 배우기 위해 통과한 시간들 같다

     

    오류들을 잡고 문제를 해결하는 과정에서 내공이 쌓였다면

    최적화를 배우는 과정에서는 새로운 것들을 배우고 지식을 쌓았다고 생각한다 

     

    처음엔 너무 막막했지만 덕분에 많이 배웠으니 만족한다. 

    다만 내가 더 부지런해서 빨리빨리 진행했으면 더 좋았겠다고 생각한다^^

Designed by Tistory.