본문 바로가기
공부하는 하스씨/Graphics

CG 기술의 진화! - VF5

by 박하스. 2008. 8. 26.
728x90
반응형
 

버추어 파이터 5 의 그래픽은 , 이렇게 만들어졌다.

PC베이스의 아케이드 시스템으로 실현되는 놀라운 리얼타임 3D그래픽의 비밀
 
아케이드게임의 시스템기판은 PC화의 바람이 불어오고 있는데 지난번 행해진 제44회 어뮤즈먼트머신쇼에서는
타이토가 최신 PC시스템인 Core 2 Duo+Intel Q965(PCI-Express) 베이스의 「TAITO Type X2」를 발표하는 등,
이러한 현상은 다른곳에서도 이어지고 있다.

이번에 살펴볼  세가의 대히트 3D격투 게임 「버추어파이터 5(VF5)」도, 작년 발표된 세가의 PC베이스 시스템기판
「LINDBERGH(린드버그)」로 동작하고 있다. 린드버그의 타이틀로서는, 일인칭슈팅게임 「하우스·오브·더·데드 4(HOD4)」,
테니스 게임 「버추어테니스3」등이 있다
 

                 

 
아케이드게임의 시스템기판이 PC 아키텍쳐로 이행해 온 이유는 몇가지가 있다.

첫째는 범용 부품으로서 PC 부품을 이용할 수 있어 시스템 가격을 내릴 수 있는 것.
둘째는 숙련된 PC하드웨어의 지식이나 개발 환경을 이용하는 것으로, 소프트웨어 개발을 하기 쉽다고 하는 점이다.
또, 플레이 스테이션 3이나 Xbox 360이라고 하는 차세대 게임기가 PC와 비슷한 프로그래머블아키텍쳐를 채용해
온 것을 보면 (CPU의 차이는 있지만). 그래픽면에 있어서는 상호 이식성이 높다고 하는 점도 메리트로서 들 수 있을것이다.

「린드버그」의 스펙인, Pentium 4(3 GHz), 메인 메모리 1GB라고 하는 스펙은, PC로서 보면 「초고급사양」이지는 않지만,
Windows와 같은 대규모 범용 OS를 구동하지 않고 게임 컨텐츠에만 거의 풀 파워를 할애할 수 있는 아케이드 시스템이라고
하는 것을 고려해보면, 성능적으로는 합격점이라고 생각한다.
 
사용 OS에 대해서는 비공개. GPU에 대해서는 「SM3.0세대의 NVIDIA GPU」라고 한다.
 


 
「린드버그」기판.후면에는 PC에서 많이 봐온 익숙한 단자가 많다.
 
어쨌든,발표되고 있는 린드버그의 스펙은 2006년 시점에서의 사양이며, 타이토의 「Type X2」와 같이, 린드버그도 자체로 사양
확장 가능한 PC시스템의 우위성을 살려,Core 2 Duo+PCI-Express 시스템으로 이행할 가능성은 부정할 수 없다.  


■ 60 fps 유지가 절대 조건이었던 VF5의 그래픽

VF5의 그래픽 테크놀러지를 상세하게 접하기 전에,  더 나아가, 「VF」시리즈에 한정하지 않고, 격투게임이란 장르를 볼 때
그것은 1/60초단위로 심리전을 주고 받는 게임이기 때문에, 프레임 유지율이 일정 하지않으면 행동 조건에 불균형이 생겨
공평하지 않게 되어 버린다. 따라서, 프레임 유지율을 철저히 해 게임을 설계하는 것이 중요하다  
VF5에서는, PC베이스의 시스템기판으로 그래픽을 실현하는 형편상, OpenGL 베이스로 만들어지고 있다.
API를 개입시켜 외부의 하드웨어 상태를 알 수 없는(직접적으로 게임 어플리케이션측을 관리할 수 없는 듯한) 시스템상에서
프레임 유지율을 항상 일정하게 한다는것은 쉬운 일이 아니다고 생각된다

야마노우치 타케시 :
 
「60fps 유지는 최대중요 과제로서 임했습니다.그래픽에 보틀넥이 생겼을경우, 그것이 어디에 문제가 있는지
몰라 고민할 때도 있었습니다. NVIDIA로부터 OpenGL 베이스의 퍼포먼스 Analyzer가 제공되기 전에, 
프로젝트를 이미 시작해 버렸으므로, 이것을 우리가 자작해 사용했습니다」


카토 타카시 :
 
「OpenGL에 명령 커멘드를 주고 나서 실제로 GPU가 그려낼 때까지의 타이밍이 API 레벨로 파악할 수 없기 때문에,
처음엔 굉장히 고생을 많이 했어요. 최종적으로는 60 fps 유지를 실현하고 있습니다.


 
퍼포먼스 측정용의 GUI 화면. VERTEX가 캐릭터당 9만 5천이나 되어 있지만,
이것은 셀프쉐도우용으로 2회(통상 렌더링도 포함이라 3배가 된다)인듯 싶다.
 
VF5에서는, 렌더링 해상도를 1,280×768으로 하고 있고, 이것을 리얼 720p로 하이비젼모니터에 출력하고 있다.
케이스에 채용되고 있는 디스플레이 패널은 화면 사이즈나 소비 전력등의 요인으로 액정이며,
그 중에서 최고 속도의 액정 패널을 선택했다고 한다.
 
잔상이 적고, 유저 평판도 최고로, 패널 해상도는 1,366×768.
그런데 렌더링 해상도와 표시(패널) 해상도가 다른데 이것은 어떤 일인것일까?  


야마노우치 :
 
렌더링 해상도는 1,280×768이므로, 1,366×768 표시시에는 수십도트의 비표시 에리어가 좌우를 메꿉니다.
그렇지만 1,280×768이라고 해도, 개발 기재를 1,280×768의 것에 맞추어  작업하고 있어서 만약 가로폭이 1,366도트가 되고,
양옆 43 도트씩 비표시가 되어도 문제 없다고 판단했었기 때문이죠」

1,280×768 의 화면에서 60 fps를 유지해, 게다가 복수의 쉐이더를 가동시켜면서의 렌더링이라고 한다면
쉽게 그 이미지가 그려지지않는다. 앞에 기술한 것처럼 린드버그는 AGP 시스템이므로, 꽤 빠듯하다라는 느낌도 든다.


카토 :
 
「GPU의 보틀넥은 버스보다, 픽셀 부분에서 잘 볼 수 있었습니다
이것을 모든 조건하에서 60 fps를 유지할 수 있도록 튜닝 해 나갔습니다」
 


 
야마노우치 타케시(세가, AM소프트 개발 본부, 제2 AM연구 개발부, 프로그래머).그래픽 담당 프로그래머.
 
「개발 초기에는 GeForce FX 5900이 주어지고, 저것에는 꽤 고생했어요 (웃음).최종적으로 SM3.0이 되어 좋았습니다.
타겟 플랫폼은 단일이므로 이식같은 건 생각하지 않고 (웃음), 스펙을 다 사용하는 느낌으로 제작했습니다.」


 
카토 타카시(CRI 미들웨어, 연구개발부, 그래픽 프로그래머).
 
「CRI 미들웨어로부터 세가에 출장 와 있는 그래픽 프로그래머입니다.
 VF5는 OpenGL2.0 베이스로 개발되고 있습니다. 현재는 PS3판 VF5의 개발에 종사하고 있습니다」


 
무라이리회(세가, AM연구 개발 본부, 제2 AM연구 개발부, 디자이너).
 
「VF5에서는 주로 배경, 스테이지의 디자인을 담당했습니다. 배경은 법선맵이라든지....(사치스럽게 사용할 수 없었습니다만),
퀄리티는 절대로 떨어뜨리고 싶지 않았기 때문에 사용할 수 있는 기능과 기술을 전부 포함시켜 노력했습니다.
나무의 하나 하나가 손수 만든 것입니다. 배경도 잘 보아줬으면 좋겠네요」


 
마키노 무네카즈(세가, AM연구 개발 본부, 제2 AM연구 개발부, 어시스턴트 매니저)
 
「VF5에서는 캐릭터의 디자인을 담당했습니다.질감이라든지...
꽤 열성으로 만들었기 때문에, 플레이중에 그걸 봐주시면 감사하겠습니다.」
 
■ 3D격투게임이기 때문에 더욱이 할 수 없었던 인간LOD 시스템?
 
VF5는 3D격투 게임이지만, 모자나 의상, 악세사리라고 하는 아이템을 손에 넣는 것으로, 플레이어는 임의의 편성으로
캐릭터를 치장할 수 있다. 많은 아이템을 몸에 지닌 캐릭터는, 당연히 묘화 부하가 증가해 픽셀부하가 높아진다.

야마노우치 :
 
「개발 단계에서는, 아이템을 한가득 붙이고 있는 캐릭터끼리가 싸우면  프레임 유지율이 떨어지거나 했습니다.(웃음)」


 
처리 속도를 생각하지 않고 아이템을 마구 장착한 화면.
 
VF5에서는 던지기기술이 성공하면「던지기 카메라」라고 불리는 시네마틱 촬영 기술의 애니메이션이 들어가,
연출로 캐릭터가 줌이 되는 일이 있다. 이 경우, 캐릭터가 크게 그려져 쉐이더가 많은 픽셀에 적용되는 것으로 부하가 높아진다.
이와 같은, 상황에 의해서 부하가 변하기 쉬운 그래픽에서는,  퍼포먼스를 평균화하기 위해서 통상 LOD(Level of detail)시스템을
도입하는 일이 많다.   게다가 최근의 3D게임 그래픽에서는, 묘화하는 물체가 시점에서 가까운가 먼가로, 쉐이더의 정도를 새로
바꾸는 「쉐이더 LOD」라고 하는 테크닉도 채용하고 있다. 이것은 즉, 시점으로부터 가까이 보이는 캐릭터에는, 많은 쉐이더를
부여하지만 , 먼 캐릭터에는 저부하인 간이 쉐이더를 부여한다는것이다.

그러나, VF5에서는, 프레임 유지율을 가장 중요한 요소로 생각했다고는 해도, 그 60fps 유지를 위해서 동적인 LOD 시스템을 도입하고
있지는 않다. VF5와 같은 3D격투 게임은 기본적으로 2명의 플레이어 캐릭터만 나오고 평상시에는 그만큼 배경상에 캐릭터의 증감이
없다. 따라서 먼 배경은 언제까지나 먼....거기서, 더 먼 배경에는 그만한 폴리곤수로, 쉐이더도 그만한 품질로 두어 가까이의 배경이나
캐릭터에는 많은 폴리곤을 할애하며 쉐이더 역시 고도의 것을 움직인다……라고 하는 설정으로 작업 하고 있다.


■ VF5의 폴리곤 수는 VF4의 3배!

 VF5의 그래픽 프로그래밍 API로서는 OpenGL를 채용하고 있지만, 쉐이더의 프로그래밍은 OpenGL 베이스의 쉐이더어셈블리어인
「ARB 어셈블러」를 사용. OpenGL로 조달할 수 없는 특수한 직접적인 GPU 제어를 위해서 OpenGL상의  NVIDIA 확장 명령
(NV EXTENSION)도 구사하고 있다

모든 린드버그의 게임 개발시에 반드시 이렇게 한다는것은 아니고, 「하우스오브데드4」에서는 OpenGL Shader Language(GLSL)
를 이용하거나, 「버추어테니스3」에서는, NVIDIA의 고급 쉐이더 언어 「CG」를 사용하거나 한다.

PS3에서는, OpenGL/ES를 채용하면서도 표준 쉐이더 언어에는 「CG」를 채용하고 있으므로, VF5의 PS3 이식에 있어서는 조금
고생했다……라고 하는 정보도 필자가 들은적이 있다. 반대로 , PS3판의 「버추어테니스 3」에서는 그 부분은 편했다고 들었다.
현시점에서는, 쉐이더 설계의 언어가 다른 점과 그만큼 대규모 쉐이더를 작성하지 않은 것도 있고, 각 개발팀끼리의 쉐이더 기술의
공유는 행해지지 않다고 한다.

야마노우치 :
 
「그렇다고는해도, 다른팀의 그래픽이  굉장한 것 같은 쉐이더로 움직이고 있으면,
예를들어 버추어테니스3 팀한테 가 「이거, 어떻게 했어?」라고 들으러 가기는 했어요. (웃음)」

한편, 폴리곤수가 다는 아니지만, VF4와 VF5의 폴리곤수등은 어떻게 되어 있는 것일까?


마키노 무네카즈 :
 
「VF4 때가 한 캐릭터 당 대략 1만 2,000 폴리곤 정도였지요. VF5는 대략 4만폴리곤정도로 증가해 있습니다」

무라이리회 :
 
「배경이라면, VF4는 대략 5만 폴리곤, VF5에서는 약 10만~30만 폴리곤 정도이며 스테이지에 따라서 많이 다릅니다」  




 
캐릭터 와이어 프레임. 얼굴이나 손은 다수의 폴리곤을 할애하고 있는 것을 잘 볼수 있다.


 
스테이지 와이어 프레임

VF4는 드림캐스트 아키텍쳐의 최종형이라고 하는 「NAOMI2」상에서 동작하고 있던 작품이다.
하드웨어 기본인 지오메트리엔진의 성능은 당시로서는 발군의 성능을 가진 폴리곤 성능이었지만, 시대가 진행되어 GPU가 진화한
것으로 3배 정도의 폴리곤수를 더 증가 시킬 수 있게 되었다. 그러나, 실제적으론, VF5에서는, 폴리곤수를 신경 쓴 디자인 개발은
하지 않았다고는 한다, 하지만, 평균적인 최근의 PC게임과 비교하면, VF5의 폴리곤수는 꽤 많이 느껴진다.
 
PC게임에서는, NVIDIA의 SM3.0 대응 GPU로 한정해도 GeForce 6200에서 7950 GX2에 이르기까지 타겟GPU에 폭이 있다.
타겟 하드웨어마다 최적인 3D모델링을 가지는 것은 개발비나 엄청난 데이타에 연결되므로, 대개, 그 당시의 미들클래스로 처리할
수 있는 정도의 폴리곤수의 3D모델 설계를 하는 것이 많다.그리고 실행시에, 비교적 큰 변수가 없이 컨트롤이 가능한 texture 적용수,
쉐이더 적용수, 그림자 생성 정도, 렌더링 해상도, 포스트프로세스등에서, 퀄리티와 퍼포먼스의 밸런스를 취하는 설계가 많다.

VF5에서는, 타겟GPU가 고급 지향 클래스의 것에 고정된 사양이기때문에, 비교적 많은양의 지오메트리디자인을 실현할 수 있었다.
덧붙여 PS3나 Xbox 360의 타이틀의 그래픽도 폴리곤 모델이 평균적인 PC게임보다 높다라고 느끼는 것도 이와같은 이유다.


마키노 :
 
「폴리곤수부터는 texture의 메모리 용량이라든지, 쉐이더를 어느 정도 적용하면 어느 정도 부하가 걸리는지……라든지,
그 부분에 생각할 것이 많았지요」

■ 그림자 생성은 Depth Shadow 기법+Screen Space 필터를 조합한 비쥬얼 기법으로

 VF5에서는 시리즈 처음으로, 셀프쉐도우 생성을 채용하고 있다.
(움직임이 격렬한 게임이므로 퍼포먼스 저하요인이 되기때문에 이해하기 어렵지만)
목으로부터 머리까지의 그림자가 어깨에 떨어지고, 얼굴의 요철에 대해도 그림자가 나오는 경우가 있다. 치켜 든 팔의 그림자가
자기 자신의 몸에 투사 되고, 그러한 그림자가 상대 캐릭터나 배경에도 투사 되어 또, 입고 있는 의상의 그림자가 캐릭터의 맨살에도
투사된다. 이른바 단순 그림자 생성이 아니고, 꽤나 현실적인 그림자 생성이 행해지고 있는 것이 느껴질것이다.

또, 소프트 쉐도우(Soft Shadow)처리도 적용되고 있어 현실 세계의 그림자에 가까운 윤곽의 희미한 음영을 표현해내고 있다.
VF5의 그림자 생성의 기본 방식으로서는「Shadow Map 기법」(Depth Shadow 기법)을 채용하고 있다.








 
Depth Shadow 기법에서는 그림자 맵의 해상도를 무한대로 하지 않으면 그림자 맵의 해상도에 의존한 이러한
jaggies (계단현상=앨리어싱(aliasing))가 나와 버린다. 무한대로 하는 것은 무리여서 필연적으로 나오게 된다.
특히 시점에 가까운 위치의 그림자에 jaggies(계단현상)가 나오기 쉽다.

 하지만 앞서 말했듯이, 이 기법에는 약점이 있다.
그것은, 시점에 가까우면 근처 그림자가 맵 해상도에 의존한 jaggies(앨리어싱-계단)가 생겨버린다는점이다
이 약점을 극복하기 위해서 Depth Shadow기법에는 지금까지 여러가지 개량이 행해지고 있다.

3D Mark05에서는 Perspective Shadow Maps(PSM) 기법, イニス사의 Xbox 360 테크니컬 데모에서는 Light-Space Perspective
Shadow Maps(LSPSM) 기법, 3D Mark06에서는 Cascaded Shadow Maps(CSM) 기법이 적용되어 각각 독특한 방법으로 약점을
극복해 나가고 있다. 또, 금년의 SIGGRAPH2006에서는, 노스캐롤라이나 대학이 대수계 Depth Shadow(LOGSM) 기법을 발표해
화제를 모았다.

어쨌든, VF5의 그림자를 보면, 그만큼 눈에 띈 앨리어싱(aliasing)는 안보이는데, 도대체 어떠한 방법으로 한 것일까?


 
제프리의 목의 그림자가 어깨에 떨어지고 게다가 들어 올려진 울프의 그림자도 제프리 몸에 떨어지고 있는 것을
보면 알 수 있다. 이것이 바로 셀프 쉐도우의 예.
 
마키노 :
 
「VF4때는 저 폴리곤모델을 따로 준비해 스텐실 그림자 볼륨 기법으로의 그림자 생성을 행하고 있었습니다만,
VF5에서는 Depth Shadow기법으로 새로 바꾸었습니다. 그림자 맵의 해상도는 1,024×1,024 텍셀입니다」


카토 :
 
「이 정도의 그림자 맵에서는 도저히 앨리어싱(aliasing)을 피할 수 없기 때문에,  우리는, 조금 바뀐 테크닉을 개발-적용해,
그 Depth Shadow 기법의 약점을 속이고 있습니다」

Depth Shadow 기법 자체는 이론대로 그대로 적용하고 있지만, 우선, 뎁스쉐도우에 의한 계단현상을 포함한 그림자 첨부의 프레임을
생성해, 이 프레임을 바탕으로 2D베이스로 애매하게해 마스크 프레임을 생성한다. 비유하면 「그림자와 양지」로부터 되는 형태가
되는프레임을 만들고, 이것을 얼버무리고 마스크한다.그리고 최종적으로 셰이더나 texture를 적용한 넉넉한 프레임과 그림자 프레임
그림자를 얼버무려 마스크를 합성하고, 「쉘프쉐도우와 소프트쉐도우」를 만들어낸다.


 
필터전의 쉐도우 마스크 화면


 
필터전의 쉐도우 마스크를 사용한 화면. 쉐도우 맵 특유의 jaggies가 가슴에 눈에 띈다.


 
필터 후의 쉐도우 마스크 화면.


 
필터 후의 쉐도우 마스크를 사용한 화면. jaggies가 해소돼, 경계부가 부드러운 그림자로 되어 있다

이 기법의 특징은, Depth Shadow기법의 앨리어싱(aliasing)를 「2D화상처리로 지워버린것이다.
SM3.0세대의 GeForce시리즈의 Soft Shadow라고 하면, PC용「스프린터 셀3:카오스 이론」 에 적용된 픽쉘쉐이더의
조건분기명령을 구사한적응형 멀티샘플기법이 그런 방식으로선 보다 현명한 것이라 생각되지만....

야마노우치 :
 
「우리도 그 기법은 실은 개발 초기 단계에서는 적용하고 시험해 보았습니다.
그렇지만, 화면의 그림자 생성 상황에 따라 부하가 바뀌고, 60 fps 유지라고 하는 목적에는 적합하지 않았습니다」

카토 :
 
「우리의 이 방법이라면 한결같이 대개 1ms의 시간이 이것에 걸리면서, 부하는 기본적으로 항상 일정하게 할 수 있습니다」

단지, 「던지기카메라」연출시나, 오프닝 데모 등에 나오는 캐릭터의 줌인시에는,그림자에 계단현상이 나와 있는 순간을 보는 일이
있다. 시점이 가깝게 되어, jaggies가 커졌을 경우에는, 이 VF5 마스크식 Depth Shadow 기법에서도 그러한 현상은 막지 못한다.
 
 
이 마스크 기법에서도 지우지 못한 그림자의 쟈기(aliasing,계단현상).
엘 블레지즈의 목에서 이어지는 어깨의 부분의 그림자에 앨리어싱(aliasing)가 나타나 있다.


 
덧붙여, 린드버그는 NVIDIA GPU 베이스이므로,  VF5에서도 뎁스 쉐도우 기법에 따르는 그림자 맵 참조에는
NVIDIA SHADOW 기능(하드웨어 PCF:Percentage Closer Filter)을 활용하고 있다.

 
■ 그림자 생성은 실제론 두가지의 방식

VF5에 있어서의 그림자 생성은, 실은 이것이 다는 아니다.

화면을 본 것만으로 그 차이를 판별하는 것은 어렵지만, 각 캐릭터의 지면에 떨어지고 있는 그림자는 Depth Shadow 기법으로
생성되고 있는 것은 아니다.지면에 떨어지는 가장 눈에 띄는 그림자는, 옛날부터의 간이그림자 생성 방식인 실루엣 투사 텍스쳐
매핑을 채용하고 있다.

실루엣 투사 텍스쳐 매핑은, Depth Shadow의 원형이라고도 할 수 있는 것으로, 그림자 생성원인 광원 위치에서 본 캐릭터의
실루엣(외곽상)을 texture에 생성해, 이것을 광원으로부터(프로젝터로부터의 영상 투영과 같이) 텍스쳐 매핑(투사 텍스쳐매핑)
하는 것으로 실현된다. 저부하이기때문에, PS2의 게임에서는 넓게 활용되고 있고 PC게임등에서도 RPG나 RTS등에서는 아직도
채용예가 많은 기법이다.다만, VF5에서는 그 투사 하는 실루엣에서, 투사 거리가 길어지는 머리 부분에 가면 갈수록 반영 가공이
적용되 리얼한 반영이 되도록 하고 있다.


 
투사 텍스쳐 매핑의 개념도


 
발밑에서 멀어지는 것에 따라 윤곽이 희미해지는 그림자의 화면

 
【투사 거리에 의해서 반영이 흔들리는 상태의 차이를 잘 보여주는 스틸샷】


 
벽이 가까워, 그림자의 윤곽이 뚜렷한 화면


 
실루엣 texture의 Mip Map 레벨을 색으로 표시한 화면


 
벽이 멀어서 그림자의 윤곽이 희미해지고 있다.


 
실루엣 texture의 Mip Map레벨을 색으로 표시한 화면.
배경 모델의 정점마다 캐릭터 모델로부터의 거리를 요구, Mip Map 레벨을 계산해서, Tri-Linear로 합성하고 있다


 
실루엣 texture의 밉맵에 대해서, 실루엣을 서서히 애매하게 해 격납하고 있는 화면.
흰색은 가까운 거리용, 파랑은 먼 거리용(색이 칠해져 있는 것은 디버그 용이기 때문이다)
 
정리하면, VF5에서는 마스크  Depth Shadow 기법과 실루엣 투사 텍스쳐 매핑 기법의 두가지의 그림자 생성 기법을 조합하고 있다.

카토 :
 
「지면에 떨어지는 그림자라고 하는 것은 존재감이 있는 것이므로, 이것을 별도 생성하도록 했습니다.
Depth Shadow에 의하는 것이라면 조금 희석될 될 수 있으므로」


무라이리회 :
 
「먼 배경의 그림자 등은, 리얼타임이 아닌, 프리렌더링을 포함한 그림자이고.
그림자 생성은 적재적소에서 구분하여 사용하고 있습니다」  


 
그림자 없음의 화면


 
Depth Shadow(셀프쉐도우+건물의 그림자)의 화면


 
실루엣 투사 texture만의 화면


 
모든 그림자가 적용된 화면 
 
덧붙여 배경 오브젝트의 벽이나 존재감이 있는  대도구 오브젝트의 그림자 등은 Depth Shadow 기법에 따라 생성해,대전하고 있는
두명의 캐릭터에 제대로 투사 되도록 하고 있다고 한다. 하나의 단일 방식이 아니고, 완벽한 영상으로 완성해 가기 위해 복수 기법을
조합해 사용한다는 것은, 일본의 직공기술적인 (직접 가공하는) 접근방식이라 말할 수도 있다.


 
실크로드 스테이지의 배경.벽의 울퉁불퉁의 그림자는 모두 사전 처리 생성되어 있다.


 
듀랄 스테이지에 사용되고 있는 기둥의 디테일 그림자, 지면에 떨어지고 있는 그림자도 이와 같다.
 
■ 장인의 기술, 인물쉐이더와 Procedural Texture

VF5에서는, VF4보다 폴리곤수가 많아, 그림자 생성도 확실히 하고 있지만,
그 뿐만 아니라, 하나 하나의 세세한 재질의 질감에 파워가 있어 매우 리얼하게 보인다.

이것은, 프로그래머블 쉐이더를 구사한, 특수한 쉐이더를 적용해 실현되고 있는 것처럼 보이지만, 실체는 어떤 것일까?



마키노 :
 
「기본적으로는 확산 반사(데퓨즈), 경면 반사(스펙큘러), 그것과 법선 맵에 의한 범프 맵핑입니다」


야마노우치  :
 
「머리카락, 옷이라고 한 것에 대해서는 디자이너의 센스로
그러한 요소를 조정받고, 그것 같게 보이게 하고 있다고 하는 느낌입니다.
여러분께 잘 보였다면 것이면, 디자이너의 역량의 승리라고 생각됩니다. (웃음)


기본은 데퓨즈, 스펙큘러, 법선 맵의 3 요소로 구성되지만, 확실히 특별히 커스터마이즈 된 쉐이더도 있다고 한다.

예를 들면, 아키라의 도복. 알록달록한 한 엠보싱은 법선 맵에 의한 범프 맵핑으로 표현되고 있지만, 어깨의 부분의 “흐트러짐”
부분은 법선 맵+α치를 읽은 투명/불투명 합성을 행하고 있다. 또, 수면이 등장하는 씬에서는, 옷이 젖으면, 젖은 것을 표현하기
위한 파라미터를 주어 그것 같게 보이게 하는 기법도 적용하고 있다.


 
옷감의 쉐이더는, 흐트러짐 부분용도로 α texture에 대응


 
또 하나 쉐이더의 특수 기능의 예. 머리카락의 쉐이더는 단순한 이방성 반사에 대응.


 
건조시의 옷


 
물에 젖었을때의 옷

독특한 것이 파이의 차이나드레스와 같은, 번들번들한 독특한 이방성 반사 (보는 각도에 의해서 테칼의 색이 바뀌어 보인다)를
수반한 질감의 새틴(Satin) 천에 대한 표현 방법.이것은, 환경 맵 측에 주위의 정경 만이 아니고, 옷감의 소재 모양도 묻도록 하고,
이것을 환경 맵으로서 적용하면서, 데퓨즈, 스펙큘러를 조정한다고 한다, 꽤 멋드러진것으로 표현하고 있다.

 
파이의 새틴 천베이스의 의상
 
 
새틴 천의 표현을 실현하기 위한 texture 일람. 왼쪽이 실제의 texture, 오른쪽이 알기 쉽게 확대한 것.
위로부터 칼라맵(데칼), 스펙큘러맵, 환경 맵의 마스크(스펙큘러맵의 α부에 격납),법선 맵.
「환경 맵의 마스크」가, 반짝반짝 실이 빛나는 표현을 실현하는 포인트가 되고 있다. 
 
 
마키노 :
 
「물리적으로 올바른 처리인가는 잘 모르겠지만,괜찮게 보이는군요.
평상시라든지, 툴등으로 실험하고 있으면 가끔, 무언가에 사용할 수 있을 것 같은 것을 생각을 할 수 있어요.
그것을 염두에 두고, 실제로 사용해 보았더니 이렇게 되었다고 하는 것입니다」
 
 
VF5의 개발에서는, 특히 쉐이더의 authoring tool와 같은 것은 이용하지 않고, 파이의 차이나 드레스와 같이,
기본 쉐이더의 적용 상태의 데이터를 디자이너가 궁리해 작성하는 것으로, 여러가지 질감을 만들어 내고 있는 것이다.

그런데, 인간캐릭터가 주체가 되는 격투 게임이므로, 신경이 쓰이는 것이 피부의 음영 처리다.
피부에 특화한 쉐이더인 「스킨 쉐이더」등을 보통 쓰지만 의외롭게도, VF5에서는 스킨 쉐이더는 이용하지 않았다.
기본은 스펙큘러(광택)의 조정으로, 피부의 신선함이나 땀의 느낌을 표현하고 있으며, 이른바 표면하 산란 쉐이더적인
특수한 처리는 적용하고 있지 않다. 피부도, 다른 소재와 같이 기본 쉐이더의 조정으로 그것 같게 보이게 하고 있다.


야마노우치 :
 
「여러가지 하려고 생각했습니다만 스킨 쉐이더의 적용은 하드웨어가 감당하기엔 퍼포먼스적으로 어렵더군요」

마키노 :
 
「 그렇지만, 여성 캐릭터 한정으로 특별한 처리가 들어가 있어요. 여성 캐릭터에게는 안보이는 광원이 붙어 돌고 있습니다 (웃음)」

여성 캐릭터는, 음영이 두드러지거나 Self Shadow가 강하게 적용되거나 하면 이쁜얼굴이 죽어버린다.
광원을 따로 설정하는 것으로, 얼굴의 음영이 나오게 하기 어렵게하는거처럼 , 라이팅으로 조정하고 있는 것이라고 한다.
반대로 남성은 음영이 진하게 나오는 것이 멋있게 보이기 위해, 그러한 기법은 특별히 행하지 않다고 한다.
VF5에 대해도, 여성 캐릭터는 「여배우 취급」이며, 시스템레벨로서 라이팅에는 신경을 쓰고 있다.


 
특별한 광원 적용(제품판은 이 상태)


 
특별한 광원 미적용 상태. 음영이 지나쳐 이쁜 얼굴이 죽어버린다.


 
남성 캐릭터는 기본적으로 미적용시켜 얼굴의 음영을 살려 멋지게 보인다.

VF5의 캐릭터 묘사를 주의깊게 보고 있으면, 광원이 이쪽에 향하고 있는 역광의 씬에서는,
본래라면 그림자가 되어야할 곳에서, 피부의 윤곽 부근이나, 의복의 윤곽으로부터 빛이 새어 오는 표현을 볼 수 있다.
HDR 렌더링과는 다르다, 마치 표면하 산란 시뮬레이션의 결과와 같은 표현과 같다고 생각할 수 있다.


 
재키의 머리카락이나 피부로부터 빛이 투과 하고 있는 것처럼 보인다.


 
아키라의 의복이나 팔에도 같은 유사 표면하 산란적인 효과가 보인다
 
이 「역광 테칼 표현」은, 「광원 위치가 역광 」「그 면의 법선의 방향에서 판단해 그 역광의 광원을 빼앗아 있다고
판단할 수 있다」라고 하는 일정 조건을 채우는 개체가, 「시선에 대해서 윤곽으로부터 빛이 넘쳐 나올 것」이라고 판단되어
거기를 광원색을 Brand해 그리는 것으로 실현되고 있다.

쉽게 말하면, 광원이 이쪽으로 향하고 윤곽을 빼앗을 때는, 그 윤곽을 광원색으로 바르고 빛이 흘러넘치고 있도록 하는 것이다.
NVIDIA가 GeForce 7800시리즈때 공개한 「Luna」데모로 표현한 유사적인 표면하 산란에서는 대상물의 두께에 비례한 빛이
넘쳐 나와 표현하고 있는데 반해 VF5에서는, 그러한 복잡한 처리는 하고 있지 않다

VF5의 이 「역광에 있어서의 테칼」은, 실질적으로, 간소한 처리이지만, 불규칙인 경우가 있어 Self Shadow 그림자인 부분으로부터
는 빛이 나와 버리거나……라고 하는 에러가 있었다고 한다.그러나, 이것도 디자이너측의 파라미터 조정으로 부자연스럽게 안 되는
정도로 억제해 버렸다는 것.

초간략판의 유사 표면하 산란 처리이지만, 장면 전체적으로 보면 꽤 좋은 마무리가 되어 있다.
뺨, 손이나 목덜미라고 하는 피부가 투명한 느낌은 물론, 의복에도 같은 처리가 적용되었다.
「옷감이 그만큼 두껍지 않다」→「부드러운 것일 것이다」라고 하는 이미지가 머리속에 전해져 온다.
 
야마노우치 :
 
「이러한 그래픽 효과를 보고 싶은 사람은  슌이나 레이페이등의 대머리 캐릭터에게 주목해 주세요.
매우 깨끗이 대머리가 빛나기 때문에(웃음)」
 
 
액체 금속적인 질감을 가진 마지막 적, 듀랄에 대해서는 약간 예외적으로 스페셜 쉐이더가 적용되어 있다.
4개의 각각 다른 듀랄중에서 출현 조건이 엄격한 두개에 그 스페셜 쉐이더가 사용되고 있다.








 
위에서부터,반사 듀랄(이전 시리즈에도 등장), 박막 듀랄, 굴절 듀랄, 돌 듀랄

하나는 박막 간섭 쉐이더의 듀랄.시선 각도나 주위의 정경에 의해 이상한 이방성의 무지개색광택을 하는 질감으로 되어 있다.
정점 쉐이더를 이용해 빛의 회절(Diffraction) 시뮬레이션을 실행? ?무지개색을 산출하고 있다. 빛은 색에 따라서 파장이 다르지만
그 다른 파장의 광끼리의 간섭을 픽셀 단위로 계산해, 그 결과로부터 최종적인 색을 결정하고 있다.

현재, 3D게임으로의 실용을 향해서 연구가 진행되고 있는, 「계산으로 texture를 생성하는 새로운 방식」인 Procedural Texture 의
수법을, 어느 의미에선, 미리 적용한 예 라고 말할 수 있다.







박막 간섭 쉐이더 듀랄 등장 씬
 
야마노우치 :
 
「이 빛의 회절 계산에는 굴절 벡터의 계산도 행해지기 때문에 빛이 굴절하는 듀랄이 된것입니다.(굴절듀랄)」
굴절 듀랄은, 요구한 굴절벡터에 근거해 듀랄이외에 렌더링 되고 있는 그 프레임으로부터 샘플을 얻어 오는 것만으로 실현될 수 있다.






 
굴절 듀랄 등장 씬
 
덧붙여서, 이 두개의 듀랄은 일정 조건을 채우지 않으면 화면상에 나타나지 않으므로 열심히 플레이해야 볼수 있다.
■ 업계처음!!! 수면의 표현에 정점 texture 링(VTF)에 의한 디스플레이스먼트맵사용
VF5의 효과중 눈을 끄는 요소의 하나가 수면의 표현이다.

VF5에 있어서의 수면은 크게 나누어 2가지 하나는 수위의 얕은 「웅덩이」, 다른 하나는는 비교적 수량이 높은 「물가」다.
수위의 낮은 웅덩이에 대한 수면 표현은 비교적 전통적인 접근방식으로 되어 있다. 미리 준비한 배경을 적당한 해상도로 texture 에
렌더링 해 「반사 맵」(≒환경 맵)을 생성. 이것을 적용하는 것으로 실현하고 있다.


 
반사 맵에 반사 모델을 묘화한 화면.
여기에 비치게 하는 캐릭터의 묘화에는 간단한 쉐이더를 사용해 부하를 경감
 



최종 화면.
 
이 웅덩이의 수면에는, 단지 주위의 배경이나 캐릭터가 비치고 있을 뿐만 아니라, 흔들리는 파문도 그려진다.

이 파문은, 수위의 요철을 나타내는 Height Map 파동 시뮬레이션을 행해 동적으로 생성해, 여기로부터 법선 맵을 생성하고,
이것과 방금전의 반사 맵을 양쪽 모두 사용해 최종적으로 환경 범프 맵핑을 실행해서 실현되고 있다.
파동 시뮬레이션이라고 하면 어쩐지 어려운 감이 있지만, 하고 있는 것은 기본적으로 심플하다.

구체적으로는 그 시점에서의 물의 높이, 속도, 힘이라고 하는 요소를 texture에 입력해, 이러한 정보로부터 다음 상태의 수면의 높이를
계산한 texture를 생성. 이 처리는 픽쉘 쉐이더에서 실행되므로 CPU는 개의치 않는다. 산출된 수면의 높이의 값은 요철을 나타낸 Height Map texture로서 취급해, 이것을 법선 맵으로 변환해 환경 범프맵핑을 행하는 것이다. 플레이에 열중한다면 제대로 모를지도
모르지만,  캐릭터가 수면에 다리를 실으면, 그 진동으로 파문이 퍼진다고 하는 연출이 잘 표현되고 있다.
그리고 수량이 많은 「물가」에서는, 한층 더 정점 레벨로 수면이 상하하는 물결의 애니메이션이 더해진다.


 
왼쪽이 법선맵, 오른쪽이 Height Map. 캐릭터가 발생시키는 파문과 비에 의한 파문을 볼 수 있다.


 
사라의 부츠가 수면에 닿아서 파문이 일고 있다.


 
이 때의 법선맵과 Height Map 상태. 두 명의 캐릭터의 발자국과 비에 의한 파문을 볼수 있다.
 
카토 :
 
「이 수면의 메쉬 형상이 바뀌는 파동 애니메이션은, NVIDIA의 GeForce6/7계에게만 탑재되고 있는
정점 texture 링 (VTF:Vertex Texture Fetching)을 사용해서 실현되고 있습니다」
 
 
이 말에는 많이 놀랐다. 왜냐하면, VTF는 현시점에서는 거의 사용되지 않은, 말하자면 거의 쓰지않는 기능이기 때문이다.
VTF는 정점 쉐이더로부터 texture를 참조할 수 있도록 한 기능. texture라고 하면 화상이라고 하는 생각을 할수도 있지만,
프로그래머블 쉐이더시대에 돌입하고 나서는 texture의 쓰여지는 방법에 혁신이 초래되어 용도에 따라서는(쉐이더프로그래머의
설계에 따라서는) 범용의 벡터 데이터 배열로서 활용되는 것도 많아지고 있다. 이면에는, 범용 기억 영역으로서 픽쉘쉐이더 뿐만
아니라, 정점 쉐이더로부터도 texture 액세스를 행하고 싶다고 하는 요망이 나오는 것도 자연스러운 흐름.
이 요구를 구현화한 것이 VTF 기능이다.


 
높낮이를 기록한 Height Map· texture를 VTF 기능에서 정점 쉐이더로 읽어내,
이 값을 바탕으로  실제로 지오메트리를 변화시키는 처리를 디스플레이트맵핑이라고 한다.


 
NVIDIA 제작에 의한 VTF에 의한 디스플레이스맵핑의 데모. 이 발전형이  VF5의 수면의 처리
 
업계 첫 SM3.0 대응 GPU로서 GeForce 6800 시리즈가 발표된 당시 ,  VTF는 「SM3.0만이 가능한 대망의 기능」으로서
야단 법석으로 소개되었다.그런데 , 그 후, 경합의 ATI의 RADEON X1000 시리즈가 VTF 미서포트로 등장.
ATI대  NVIDIA의 싸움의 끝에, VTF는 거의 쓰지 않는 기능이 되어 버렸던 것이다.

그러나, ATI는 VTF 구현을 아예 무시하고 있는 것은 아니다. ATI 설계의 Xbox 360 GPU에서는 VTF가 서포트되고 있고,
차세대 DirectX 10세대 SM4.0 대응 GPU에서는 ATI도 VTF를 서포트하는 것이 확실시되고 있다.
물론 PS3의 GPU 「RSX」는 GeForce 7800 GTX 베이스이므로 VTF는 서포트되고 있다.

야마노우치 :
 
「우리에게 있어서 타겟 하드웨어는 린드버그이기 때문에.그 하드웨어를 풀로 활용하면 된다.
 VTF 편리해요∼.오히려 없으면 곤란하죠. 자원을 CPU에 되돌리지 않고 , 기본적인 지오메트리 프로세싱이 GPU만 막아주면
완결할 수 있다는 것이 아주 좋습니다」 파동 시뮬레이션은, 32비트 부동 소수점(FP32) texture상에서 픽쉘 쉐이더로 행한다.
이전에 보았던 「웅덩이」에서는 정수 texture로 파동 시뮬레이션을 하고 있지만 물가쪽으로는 FP32 texture를 이용한다.

이 이유는 단순명료한데, VTF에서는 FP32 texture로 한정되고 있기 때문이다.


 
왼쪽이 법선 맵, 오른쪽이 Height Map


 
VTF를 적용해 생성한 수면의 와이어 프레임


 
최종 화면
 
FP32 texture상에 생성한 Height Map을 VTF로 정점 쉐이더로 읽어들여 수면의 정점을 변화 시키는 디스플레이스먼트 맵핑
(Displacement Mapping)을 실행.한층 더 이 FP32 파동 Height Map을 법선맵화하고, 이것을 이용해 픽쉘쉐이더로 음영 처리를
실행한다.

카토 :
 
「근처에서 도시락을 사면 된장국이 붙어 옵니다만, 그 된장국이 들어간 컵을 흔들면서 생각난 아이디어가 있는데 (웃음).
VTF로 사용한 FP32의 파동 Height Map에는 물결의 높이라든지 속도와 힘의 정보가 있으므로, 픽셀단위의 라이팅시에,
이 정보를 활용하고 농담을 주고 탁함이라든지 투명한 느낌을 냈습니다.
VF5의 오수의 표현은 이것으로 실현되고 있습니다」


야마노우치 :
 
「팀내에서는 “된장국 쉐이더”라고 명명해져서 사용됩니다. (웃음)」

현재 상태로서는 폴리곤을 자동 분할하는 텍셀레이터가 GPU에 내장되어 있지 않기 때문에 VTF로 디스플레이스먼트맵핑을
적용할 때 , 그  3D모델측의 정점수(이 케이스에서는 수면의 정점수)를 미리 분할해 둘 필요가 있다.
덧붙여서 VF5에서는, 수면의 정점수는, 미리 100×100과의 해상도로 분할되어 있다.
 



수면의 모델을 와이어 프레임 표시한 Maya화면. 수면이 100×100인 것을 알 수 있다

이 「물가」에서도, 역시 캐릭터가 움직이면, 파동 시뮬레이션용 texture를 섭동시키므로,캐릭터의 움직임에 따라 물결이
움직이게 된다. 방금전의 웅덩이보다 다이나믹하게 수면이 움직이므로 외형의 임펙트는 꽤 강하다.

카토 :  
 
「찬 다리가 물을 감아올리는, 때로는 물보라가 발생합니다만, 이것에 주목해 주었으면 합니다.
VTF에 덕분에 물보라의 충돌을 texture를 사용해 정점 쉐이더로 검출할 수 있습니다.
물보라가 하나가 만들어지면 거기로부터 파문이 발생하도록 하고 있습니다.
아마, 이걸 눈치채고 있는 사람은 , 굉장히 적다고 생각합니다만 (웃음)」

물보라 자체는 하나 하나가 지오메트리를 가진 파티클로,  착수시의 수면에의 인타라크트는, 앞서 진술한 캐릭터가 다리로
수면을 인타라크트 하는 처리와 다르지 않다. 파동 시뮬레이션용의 FP32 파동 Height Map편에 착수한 시뮬레이션용의 초기치
(높이, 속도, 힘)를 설정하면 된다. 카토씨가 말하듯이 눈에 띄지 않는 것일지도 모르지만,

「웬지 모르게 전체적으로 리얼」이라고 하는, 리얼리티감을 내는 효과로서는 매우 유용한 일이라고 생각한다.


 
차는 것에 의해서 물보라가 일기 시작한 화면
 
 
먼 곳까지 난 물보라가 착수해, 파문이 발생해 나가는 상태를 알 수 있다
■ 설원도 VTF로 하고 있습니다!
이 VTF에 의한 디스플레이스먼트맵핑은 설원에도 응용되고 있다.
수면의 물결과 같은 움직임은 하지 않지만, 설면을 캐릭터의 다리로 밟으면, FP32 texture에 의한 하이트 맵이
캐릭터의 발자국 형상으로 눌러 내릴 수 있게 되어, 결과적으로 그려지는 설면이 발자국의 형태로 패인다


 
새로 내린 눈 상태


 
밟은 후
 
더군다나 눈의 음영에는 간이적인 표면하 산?시뮬레이션도 적용되어있다.
기법으로서는 ATI등이 이전 발표하고 있던 texture スペースのブラー에 의한 것이다.
설원에 내리쬐는 광량(실질적으로는 테칼, 스펙큘러)을 texture에 렌더링 해, texture 좌표계로 불러 얼버무리는 처리를 행한다.
바꾸어 말하면, 설원의 요철에 생겨나는 광택을 바로 위로부터 촬영해 그 화상을 얼버무리는 처리를 행하는 이미지다..


 
왼쪽이 의사 표면화 산란시키기 전의 디퓨즈&스펙큘러 결과. 오른쪽이 의사 표면화 산란시킨 후


 
의사 표면화 산란 없음


 
의사 표면화 산란 있음

이렇게 완성된 희미해진  광택 texture를 보통으로 적용하면,
스펙큘러 부분이, 마치 빛이 침투해 빠져 온 것 같은 작은 불로한 부드러운 음영이 된다.
 
카토 :
 
「VTF로 설원의 높이를 변이 시키고 있는 것입니다만, 높은 설면은 스펙큘러를 많이 해 반짝반짝 빛납니다만,
낮은 설면은 데퓨즈의 부분을  음영 처리를 하고 있습니다」
밟히지 않은 설면은 반짝반짝 빛나 새로 내린 눈의 느낌을 나타내고 밟혀 낮아진 설면은 말하자면
밟혀 더러워져 있는 느낌을 나타내고 있는 것이다.「스노우보드를 좋아해서, 작년 시즌에, 사진을 찍어 연구했습니다 (웃음)」
 

■ 세가의 VTF 활용은 세계 1위.

VTF는 안개(포그) 표현에도 응용되고 있다. 이것은 조금 감이 오지 않을지도 모른다.
가장 일반적인 안개는 시점에서 멀어지는 정경을 흐리게 하는 거리 안개일 것이다.
이것과는 별개의 케이스로, 안개나 연기가 자욱해 있거나, 또 그것이 바람으로 흐르고 있는 표현을 하는 경우에는,
반투명의“안개”texture나 연기 texture를 붙인 파티클(스프라이트)을 붙여 그리거나 움직이거나 한다.
이 수법은, 반투명의 겹침 쓰기 부하가 걸리는 것과 다른 3D모델과 겹쳤을 때에 날카롭게 잘라내져서 edge가 드러나 버린다.
하지만 VF5에서는 독특한 「VTF 포그」되는 것을 고안 해 적용했다.


 
안개 스테이지


 
포그 맵에 포그 파티클을 묘화 한 화면


 
그 texture를 VTF 포그로서 적용한 최종 화면


물가의 수면 처리에서는, 수면의 높이를 그레이 스케일로 나타내 Height Map으로서 활용되고 있던 FP32 texture를,
VTF 포그에서는, 안개의 농담 정보를 관리하는걸로 변경된다.즉, 안개의 농담의 분포를 FP32 texture로 나타내 준다.
팀내에서는 이것을 「포그 맵」이라고 부르고 있었다고 한다.
실제의 렌더링에서는, 물가의 수면과 같이 스테이지 필드에 대해서 평행으로 수평으로 보이지 않는 면을 배치해,
이 안보이는 수면의 각 정점으로부터, 그 포그 맵에 대해서 VTF를 참조해, 꺼낸 값을 「포그의 진함」으로서,
그 정점 칼라를 결정해 준다.즉, VTF로 포그 맵으로부터 꺼낸 값으로 높이 포그(Y포그)의 처리를 정점 단위로 실행해 준다.

이 방법이라면, 요구한 포그색을 최종적인 칼라 산출시에 선형 합성을  1회하면 자주 있는 반투명의 겹침 현상은 없어진다.
비교적 싼 처리로, 복잡한 안개의 농담을 필드상에 전개할 수 있다는 것이다. 게다가, 이 포그 맵을 스크롤 시키면, 복잡한 농담의
안개가 바람으로 흐르고 있듯이 보여진다.

카토 :
 
「그 뿐만이 아니예요. 예를 들면 울프의 자이언트 스윙등에서, 이“안개”가 긁혀 어지럽혀지는 효과까지도 할 수 있습니다!」








 
캐릭터 주변의 안개가 서서히 개여간다. 다운된 장소의 안개도 날아간다. 플레이 중에 조심히 봐 볼 것.

 
■ VF5는 FP16 베이스의 리얼 HDR 렌더링을 채용~톤 매핑에도 VTF를 활용!

최신 3D게임의 그래픽으로 흐름이 되고 있는 것이 하이·다이나믹·레인지 (High Dynamic Range Rendering)이다.
VF5에서도, 당연히 HDR 렌더링을 적용하고 있고 , 렌더링타겟버퍼는 αRGB 각 16비트 부동 소수점(FP16)의 64비트 버퍼
(이하 FP16-64비트)를 채용하고 있다


 
VP2편때에도 소개한 카와세씨 MGF사용
 
반사 맵/환경맵등도 HDR화해 두지 않으면 HDR씬이 비쳤을 때에 HDR 정보가 없어져 버린다
(RGB 각 8비트 정수에 말 수 있어 버린다). 본래는, 렌더타켓(frame buffer), texture등의 모든 자원을 FP16-64비트 버퍼와 같은
HDR 포맷으로 통일해 렌더링 해야 하지만, 현행 GPU에서는 버스 대역의 한계, FPtexture의 고속의 압축 수단이 없는 것으로부터
오는 비디오메모리의 용량적인 한계, 얼라이징 제거나 texture 필터링에 관련되는 사양 제한등에서 좀처럼 그렇게 할수는 없다.

VF5 개발 현장의 반응으로서는, FP16-64비트의 렌더링은 반투명 포함이 약간 늦은 반응도 있었지만,
그것보다 FP16-64비트 texture의 읽기가 늦고, 렌더링 파이프라인의 보틀넥이 되기 쉬웠다고 말한다.

야마노우치 :
 
「FPtexture의 읽기는 아마 필터링이 늦다라고 생각합니다.
작은 코드의 스텝수는 먹습니다만(FP16-64비트 texture를 필터링 첨부로 읽는 것보다는),
HDR 정보를 encode, 디코드해 정수 texture를 사용하는 방식이 빨랐지요」


 
texture는 유사 HDR 기법에 따르는 처리가 된다. 마루에 밖의 경치나 불길이 비치고 있는 점에 주목.
비쳐도 고휘도 부분의 정보는 없어지지 않은 것을 알 수 있다.
 
PC게임등에서는 HDR인 FP16-64비트 texture를 사용한 타이틀도 나오고는 있지만, 그것은 가변 프레임으로 문제 없는 PC게임이기
때문에 할 수 있었던 것으로, VF5와 같은 60 fps생명의 게임에서는 「풀HDR인 파이프라인 설계는 더이상 지금의 GPU로는 못한다」
라고 하는 것이다.

HDR 렌더링으로 완성된 HDR 프레임은 그대로라면 FP16-64비트 버퍼이며, RGB 각 8비트색체계의 디스플레이 장치에서는 표시할
수 없다.거기서 이것을 RGB 각 8비트색체계에 조정하는 포스트프로세스를 행한다. 이 때, HDR 프레임의 휘도량을 산출하고,
실제로 그 HDR 씬에 인간이나 카메라가 있으면 보게 된다, 또한,  적정 휘도에 보정하는 처리 「톤 매핑」(TONE MAPPING) 처리를
행하는 것이 일반적이다. 덧붙여 이러한 HDR 프레임에 대한 조광시뮬레이션적인 포스트프로세스까지를 포함해 HDR 렌더링이라고
부르기도 한다.

톤 매핑으로 인해 귀찮은 것은, 그 HDR 프레임의 적정 휘도를 요구하는 처리다.

HDR 프레임을 CPU에 되돌려 계산하거나 다시 한번 픽셀 파이프라인에 되돌리고 픽쉘쉐이더를 요구하거나……와 같은 방식에는
몇개의 수법이 있지만,어쨌든 조금 불필요한 수고와 시간이 걸린다. 거기서, VF5에서는, 이 톤 매핑 처리에 대해선, 독특한 방법을
적용하고, 그 문제의 극복을 시도하고 있다. ( 여기에서는 VTF를 사용해 약 1 패스분 처리의 단축을 실현하고 있다.)

1 x1픽셀에까지 축소한 HDR 프레임을 texture로 해, 이 texture를 VTF 기능을 사용해 정점 쉐이더측에서 읽어내,  영상의 평균 휘도를
정점 파이프라인측에서 계산해 버린다. 그 결과를 톤 매핑용의 정수로서 계속 되는 픽셀 파이프라인(픽쉘쉐이더)에 건네주어 버리면,
CPU도 사용하지 않고, 불필요한 렌더링 파이프라인을 돌리지 않고 톤 매핑을 실현할 수 있다. 톤 매핑에 의해서 적정 휘도에 안정될
때까지는 카메라나 눈의 눈동자의 조임이 움직이는 느낌을 모방하고 있으며, 역광의 씬이나, 옥내의 어두운 씬등에서 볼 수 있다..


 
동적 노출 보정 없음


 
동적 노출 보정 있음


 
동적 노출 보정 없음


 
동적 노출 보정 있음
 
■ 물리 시뮬레이션 엔진은 자사의 것을 사용
물리 시뮬레이션 엔진에 대해서는 세가내부의 것으로, 「VF4」의 담당자가 계속해 담당하고 있어,  기본 설계도 VF4로부터 계승된
것을 사용하고 있다고 한다. 충돌 판정용의 충돌 형상의 설정은, 기본적으로 로컬인 충돌을 검출하기 위한의 것으로,
캐릭터 대  캐릭터에서는 적용되지 않았다. 로컬인 충돌이라고 하는 것은, 구체적으로 말하면, 의복,  머리카락, 벌장작등의 악세사리
가 신체를 뚫고 지나가지 않게하기 위한 충돌을 말한다.


마키노 :
 
「충돌 형상은 구나 원주같은 걸로 지정하며 가고 있습니다.
벌장작은 복수의 관절로 되어 있는 것입니다만, 그것 같게 보이도록 우리 디자인 팀에서 설정, 조정했습니다」






 
격자모양에 라인이 끌리고 있는 부분이, 크로스 시뮬레이션이 적응되고 있는 부분


 
주저 앉았을 때.크로스 시뮬레이션이 적용되어 스커트가 자연스럽게 변형하고 있는 상태를 알 수 있다.
 
펀치가 어떻게 맞았기 때문에 어떻게 날아간다라든지, 하중을 이동해 펀치나 킥을 치는 것이 데미지가 큰……이라고 하는,
물리 시뮬레이션을 격투 시스템에 포함시켜 간다고 하는 시도는 없는 것일까?

야마노우치 :
 
「 못 집어 넣는건 아니지만. 「VF」라고 하는 시리즈에서는 어렵다고 생각합니다.
VF시리즈에는 이 때에 이렇게 입력, 저땐에 저렇게 입력이라고 하는것이 있는 암묵의 게임 룰이 있으니까요」

의복, 아이템, 머리카락, 악세사리는 지형이나 수면에 대한 충돌을 검출하고 있어,
예를 들면 다운시, 벌장작은 물에 뜨고, 긴 머리카락이 지면에 기어들어 가지 않고, 지면에 퍼지도록 되어 있다.


 
부자연스럽게 안보이게 배경과의 충돌도 처리하고 있다.띠가 지면속에 들어가지 않는점에 주목.


 
이번엔 띠가 수면에 떠 있다.

VF5에서는,  미리 만들어둔 모션, 혹은 모션캡쳐한 모션에 의한 캐릭터 애니메이션을, 플레이어의 조작이나 일정한 조건이 성립하면
재생하는 구조로 되어 있고, 리얼타임에 물리 시뮬레이션을 적용해 자세 제어를 하는것 같은 일은 하고 있지 않다.

이 이유는 「VF」시리즈라고 하는 절대 룰이 있기 위해서,「게임으로서」의 결론 지었다라고 한다.

야마노우치 :
 
「 「VF3」 때, IK(Inverse Kinematics:역방향 운동학)를 살린 게임성을 넣었습니다.
스테이지에 단차라든지 Undulation이 있을 때에, 제대로 캐릭터가 반응한다라고 하는 일을
당시의 프로그래머가 열심히 적용했습니다. VF4 이후, 않하게 되었습니다만...」
 
 
■ 마치며

업소용시스템으로서 린드버그만을 생각해 그 포텐셜을 120% 살리는 형태로 그래픽을 설계하며 갔다고 하는 경위가 재미있다.
특히 개발 타겟 GPU가 NVIDIA라고 하기도 하고,  PC게임 업계에서는 아무도 뒤돌아 보지 않았던 VTF 기능을 참신한 아이디어로
풀 활용하고 있는 것이 매우 독특했다. 그러나 「절대 60 fps 」라고 하는 명제를 완수 하기 위해서, 쉐이더 부하를 너무 높게 하지
않고 그 설계를 심플하게 두었다는 것은 예상외였다. 데퓨즈, 스펙큘러, 법선 맵이라고 하는 기본 요소만이 주어진 디자이너진이,
그 센스와 아이디어를 구사해  직접 가공- 기술적으로 「그것 같게 보이는 질감」을 만들어내고 간 것은 「일본이 아니라면」이라
고 하는 느낌도 든다.
 
 
또, 「60 fps 사수」를 철저히 한다면, 오히려 없애버리던지, 간단히 보이게 함으로 좋을 것인 그림자 생성을 퀄러티 있게
적용해 버리는 면에 있어서는, 「세계에 져서 될까 보냐」라고 하는,「일본의 기술자로서의 고집」과 같은 것도 느껴진다.
야마노우치씨는 「VF5는 전혀 그래픽을 전면에 광고한  작품이 아닌데요 (웃음)」이라고 겸손 하고 있었지만, 아케이드게임의
리얼타임 3D그래픽으로서 향후 틀림없이 벤치마크적인 존재로서 표준이 될 것이다.




 
현재, VF5는 아케이드에서 가동중이다. 게임센터에 들렀을 때에는 부디 그 멋진 그래픽을 보았으면 좋겠다.
또, PS3판의 이식도 진행중으로, 아케이드판 팀끼리 정보 공유를 행하면서 열심히 개발중이다.
도쿄 게임쇼 2006에서는 플레이어블의 PS3판 VF5가 공개되고 있었고 그 이식도에 있어서는,해상도가 1,280×720인점을
제외하곤 그림자의 앨리어싱(aliasing)이 나오는 것까지 이식해 버릴정도로(?) 높고 훌륭했다.
728x90
반응형

'공부하는 하스씨 > Graphics' 카테고리의 다른 글

Frame Buffer 이야기 (4)  (0) 2008.11.26
Frame Buffer 이야기 (3)  (0) 2008.11.26
Frame Buffer 이야기 (2)  (0) 2008.11.26
Frame Buffer 이야기 (1)  (0) 2008.11.26
게임 개발의 꽃 DirectX10과 3D 그래픽스  (0) 2008.10.11