Appearance
지오메트리 셰이더(3)~지오메트리 셰이더의 가속적 활용(3)
[칼럼 핵심 요약]
지느러미법으로 생성된 모피는 털 지느러미를 측면에 가까운 방향에서 본 경우는 흐릿한 느낌을 얻을 수 있지만, 머리끝이 시선 방향에 가까운 경우, 즉 머리 지느러미를 바로 아래에서 내려다 보이는 방향 관계로 보았을 때에는 머리의 볼륨감이 부족해진다는 약점이 있다.🌐 원문 링크: ジオメトリシェーダ(3)~ジオメトリシェーダのアクセラレーション的活用(3) (Mynavi News)
📅 원문 발행일: 2008-09-26 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- 본 칼럼에서 다루는 핵심 렌더링 기법은 현대 실시간 렌더링 엔진(DirectX 12, Vulkan, Unreal Engine, Unity)의 기초 이론을 구성하고 있으며, 최신 하드웨어 가속 기법 및 컴퓨트 셰이더와 결합하여 고도화되었습니다.
📖 본문 해설
[원문 리드문] > 지느러미법으로 생성된 모피는 털 지느러미를 측면에 가까운 방향에서 보았을 때는 푹신푹신한 느낌을 얻을 수 있지만, 머리끝이 시선 방향에 가까운 경우, 즉 머리 지느러미를 바로 아래에서 내려다 보이는 방향 관계로 보았을 때는 머리의 볼륨감이 부족해진다는 약점이 있다.
지오메트리 셰이더의 가속적 활용(3)~퍼 셰이더를 가속한다
지느러미법으로 생성된 모피는 털 지느러미를 측면에 가까운 방향에서 본 경우는 흐릿한 느낌을 얻을 수 있지만, 머리끝이 시선 방향에 가까운 경우, 즉 머리 지느러미를 바로 아래에서 내려다 보이는 방향 관계로 보았을 때에는 머리의 볼륨감이 부족해진다는 약점이 있다.
또 다른 퍼 쉐이더는 핀법의 퍼 셰이더의 약점을 보간·극복하는 듯한 특징을 가진 기법이다.
핀법에서는 머리카락을 세로 방향으로 잘라낸 단면도를 준비했지만, 또 하나의 방법에서는, 자라는 머리카락을 횡방향으로 둥글게 자른 것 같은 단면도를 준비하고, 이것을 종이를 쌓는 듯한 느낌으로 일정 간격을 열고, 겹쳐 그려 간다. 윤곽으로 한 단면도를 거듭해 원래대로 되돌리는 이미지가 되어, 이것이 정확히 외피(Shell)를 형성하도록 적층시키는 느낌이기 때문에, 이 어프로치의 퍼 쉐이더는 「쉘」(Shell)법이라고 불린다. 단면 텍스처로부터 입체적인 물건을 재구성하는 렌더링 기법에는 볼륨 렌더링이라고 하는 것이 있지만, 이미지적으로는 이것에 가깝다고도 말할 수 있다. 단면 이미지 텍스처에 투명 요소를 가미하여 반투명하게함으로써 머리카락의 투명한 느낌을 줄 수도 있습니다.
쉘 방법의 개념
쉘 방법은 적절한 간격으로 단면을 적층 시키지만,이 간격을 조밀하게 다량의 단면을 적층시키는 것이 모의 품질에 관여한다. 적층시키는 매수가 적으면 스카스카로 보이고, 적층시키는 매수가 많아서는 고부하가 된다. 별로 시선이 대상물에 접근하지 않는 것이라면, 최근의 3D게임에서는 4~8층 정도의 적층이 일반적인 것 같지만, 시선이 3D캐릭터에 의했을 때에는 적층수가 많은 쪽이 볼 수 있을 것이다.
그러나, 핀법과 마찬가지로, SM3.0 세대까지의 GPU에서는, 쉘법에 있어서도, 단면도 텍스처를 적용하는 폴리곤을, 3D 모델상에 사전에 넣어 둘 필요가 있었다.
지오메트리 셰이더를 활용하면, 이 사전의 투입을 하지 않고, 실시간으로 동적으로 생성하는 것이 가능하게 된다. 또, 시선과 대상물의 위치 관계에 따라, 단면도 텍스처의 적층수를 증감시키는 LOD적인 실장을 하는 것도 가능하다.
쉘법에 의한 퍼
그림
그림
PS2용 게임 소프트 「완다와 거상」에서는 털의 표현에 쉘법의 퍼 셰이더를 활용하고 있었다
그림
그림
PS2에는 지오메트리 셰이더가 없었기 때문에 3D 모델의 저작 단계에서 이 모피를 적층시켜야 했다
PS2에는 지오메트리 셰이더가 없었기 때문에 3D 모델의 저작 단계에서 이 모피를 적층시켜야 했다
단면도 텍스처는 단순한 이미지 텍스처만으로도 좋지만, 함께 대응하는 노멀 맵도 준비해 두고, 광원 벡터나 시선 벡터의 위치 관계에 따라 픽셀 단위의 이방성의 라이팅을 실시해 주는 것으로, 퍼에 독특한 광택감을 낼 수도 있다.
라이팅은 핀 때처럼 역시 머리 뿌리쪽은 하이라이트가 어두워지도록 조정하는 것이 좋을 것이다.
융단과 같은 짧은 머리에서는 시선에서 봐 머리가 "점"으로 보이는 머리카락에는 하이라이트가 약해지고 반대로 머리의 측면 ...... 즉 머리를 "선"으로 보일 때 잘 빛이 반사되어 하이라이트가 나오기 쉽다. 이 특성을 구현하기 위해서는, 통상의 확산 반사 처리에 더하여, 노멀 벡터가 시선 벡터와 상대하면 하이라이트를 약화시키는 이방성 처리를 하면 된다. 이 아이디어는 PS2용 게임 '완다와 거상'에 활용되고 있다. (계속)
통상의 확산 반사 라이팅에서는 광원에 상대하고 있는 만큼 하이라이트가 나온다
통상의 확산 반사 라이팅에서는 광원에 상대하고 있는 만큼 하이라이트가 나온다
시선과 면의 방향(노멀 벡터)이 마주하고 있는 곳에서는 하이트라이트가 감퇴하는 처리를 넣으면 짧은 머리의 표현의 음영이 리얼하게 된다
시선과 면의 방향(노멀 벡터)이 마주하고 있는 곳에서는 하이트라이트가 감퇴하는 처리를 넣으면 짧은 머리의 표현의 음영이 리얼하게 된다
(트라이Z 니시카와 젠지)