2인에서 4인!? - 철권 태그 토너먼트2에서의 렌더링 시스템과 부하경감에 관해 - CEDEC2011

CEDEC2011 세션 내용 정리입니다.

日本語版はこちらで

데모영상: 동시에 4인 출현. 비활성화된 케릭터는 외곽선으로 렌더링
대상기종: PS3와 호환이 되는 System369으로 720P 지원
문제점 분석
1. 369에서도 메모리는 부족 (단순 계산으로 2배)
2. 렌더링 부하는 공용 셰이더와 스펙으로 커버 (60fps 유지가 중요)
* 태그1에서는 카메라 앵글로 보이는 케릭터를 조절했었으나 기획상 무산

1. 메모리
VRAM을 하나의 커다란 풀로 사용시, 반복되는 로딩에 의해 단편화가 발생
* 메모리를 카테고리 별로 분류하고 영역을 할당
* 아이템이나 로딩이 다른 영역에 영향을 끼치지 않음
(대신, 풀컬러 텍스쳐는 힘들어짐)
* 캐릭터 20MB X 2, 배경 45MB -> 케릭터 19MB X 4, 배경 30MB
* BR에서는 decal + normal + mask의 3장을 사용했으나,
커스터마이즈의 범위도 좁으며 색상별로 각각 이미지가 필요하므로 용량이 압박.
TAG2에서는 사이즈를 줄인 decal + normal + specular맵에 color mask를 사용하여
decal에 색상을 미리 적용해 VRAM에 올리므로 용량과 부하가 경감. 퀄리티는 떨어짐

2. 렌더링 부하
상황에 따라 해상도를 동적으로 변경가능하도록 부하를 조절하기 쉬운 시스템으로 제작
* 2인 (1024 X 720) -> 3인 (900 X 720) -> 4인 (800 X 720)
* 라운드 시작시의 높은 해상도 (1280 X 720)로 시작해서 부하에 따라 감소
* 카메라, 특수효과로 인해 순간적인 부하 발생시 해상도를 낮춤 (720 X 720까지도)
* 해상도를 낮춰도 순간적이므로 눈에 띄지 않음
* 등장화면, 배경, 랭킹표시 등에서는 1280 X 720, 2XMSAA
* 즉, 등장인물수 변화 => 해상도 변경

3. 승리 연출시의 부하
클로즈업으로 2명이 표시되며 하이퀄리티가 요구됨
* 프레임스킵으로는 끊김이 발생하므로 해결불가
* 인터레이스로 결과를 합성하여 렌더링 면적으로 줄이면 부하도 감소
1280 X 360 2장을 1장으로 합성 (합성비용 < 렌더링 부하)
* 움직임이 동적일 때는 줄무늬가 생겨서 보기 안 좋으므로 알파블렌딩을 사용
* 모션블러의 벨로시티맵을 이용해서 라인합성 or 알파블렌딩할 영역을 결정
* 배경의 움직임은 카메라의 이동량으로 판단

4. 부하 측정
플레이를 자동화시키고 상황에 따라 파일이름을 만들어 동영상으로 캡쳐
* 캡쳐는 SDK의 기본 기능을 사용
* 부하가 일어나는 패턴을 분석해서 셰이더를 수정

5. 사용한 렌더링 기법
* 분산 셰도우맵, SSAO, IBL
* 물이나 먼지에 의한 더럽혀짐 효과는 표면에 랜덤으로 정점컬러를 셰이더로 전달

6. 결론
메모리는 처음부터 제한을 걸고, 부하는 조절가능하게, 측정은 알기쉽게

0 개의 댓글:

댓글 쓰기