#gdc11 #review Mega Meshes - Modeling, Rendering and Lighting a World Made of 100 Billion Polygons

1 minute read

mega mesh, mega texture, virtual texture, SH lighting 소개. 아티스트 친화적으로 만든 작업 파이프라인.

아티스트 친화적

nil

  • 전통적인 방식에선 image space texturing이 들어감
    • 3D에서 image space로 작업 방식 점프가 발생
  • 배경과 다르게 캐릭터 모델링에선 작업 방식 점프가 덜하다
    • zbrush와 같은 mesh sculpting 도구 사용
    • normal, albedo map을 high polygon model에서 추출이 가능
  • 텍스쳐 맵핑은 사실 아티스트에게 친숙한 스테이지가 아님
    • UV 매핑 능력이 모델러에게 많이 요구됨
  • 그래서 mega mesh를 사용한다.
  • version control, 다수 유저 지원

modelling pipeline

nil

  • modeling 툴에선 low poly model, uniform triangulation
  • extra subdivision은 ZBrush/sculpting tool과 같은 툴에서만 한다.
  • Mega mesh Tool에서 꽤 많은걸 해주는 듯
  • version control이 썩 마음에 안 든다.
    • low poly mesh는 걍 관리 안 하고 zbrush쪽으로 수정한 지오메트리만 관리.
    • low poly는 틀 잡는 데만 사용하면 그닥 문제는 없어 보인다만…
  • 모델링 데이터에 여러 정보가 담기는데 이건 어떡하지?
    • 애니메이션 등~

hierarchical storage

nil

  • subdivision level에선 delta만 저장

nil

  • 높은 subdivision level에 crack과 같은 디테일을 삽입한다면 그보다 낮은 subdivision level 변화에 자연스럽게 적용돼서 삽입된다.
  • 지형을 수정했다고 해서 다시 crack 위치를 잡아 줄 필요가 없다.

nil

  • 위상이 바뀌면 다시 re-project

mega texture

nil

  • 노란색이 mip level에 따른 텍스쳐

nil

  • 메가 텍스쳐 컴파일과정

mega texture compression

  • DXT 압축으론 만족 못 함
  • HDPhoto
    • 엄청난 압축률을 보이지만 dithering artifact 때문에 normal map에 사용 불가
  • PTC Image Coding 사용

virtual texture

nil

  • texture cache thread
    • memory, latency를 줄이려고
    • virtual texture를 유지하는 쓰레드

nil

  • auto balancing이 큰 장점
    • physical texture가 작으면 높은 mip level 텍스쳐가 physical texture에 할당
  • texture popping
    • shader에 bias texture를 둬서 해결

lighting

nil

  • SH lightmap을 사용
  • performance 향상
    • SH vector 팔레트 (평균 2~3% 에러)
    • lighting-surface probe로 구성

발표