![]() ![]() ![]() |
제목 | [가마수트라] 아이폰에서 스텐실 그림자 만들기 | ||||||
---|---|---|---|---|---|---|---|
분류 | 게임 | 등록일 | 10.08.26 | ||||
출처 | 한국콘텐츠진흥원 | 조회수 | 0
|
||||
아이폰에서 스텐실 그림자 만들기
그림자는 장면에 깊이를 부여하고 캐릭터에게 현실감을 준다. 캐릭터가 뛰게 되면 캐릭터의 그림자와 캐릭터가 분리되면서 높이를 더욱 실감할 수 있게 된다. 그림자는 대부분의 3D 엔진에서 표준 사양으로 자리잡아가고 있다.
그림자를 만들기 위해 사용되는 공통적인 기술을 아이폰에서 사용할 수 없다는 것이다. 처리 능력이 제한되기 때문에 섀이더(shader) 기반의 기술이 적합하지 않으며 비싼 메모리에 대한 투자가 필요한 경우가 많다. 동적인 텍스처가 필요한 그림자 솔루션에서도 하드웨어 비용보다 더 비싼 메모리 투자가 필요하므로 이 역시 적절하지 않다.
스텐실 그림자 기법을 아이폰에서 사용할 수 있는 방법에 대해 자세히 알아보기 전에 먼저 스텐실 그림자가 어떻게 만들어지는 것인지 알아보는 것이 중요할 것이다. 최상위 수준에서는 이기법은 직선적이다. 먼저 장면 내 오브젝트가 렌더링된다.
스텐실 버퍼를 마스크로 사용하여 전체 화면의 그림자가 그려진 쿼드(quad)가 장면 전체에 걸쳐 렌더링된다. 오브젝트의 모서리를 볼륨으로 연장하는 방법에는 여러 가지 방법이 있으며 이와 같은 일을 할 수 있는 다른 소스도 많이 있다. 이 기사 에서는 그림자 볼륨을 생성하는 방법을 알고 있으며 기하학적 구조의 볼륨을 연장하는 방법을 사용해 보았다고 가정하고 이 방법에서 보다 중요한 부분인 볼륨의 렌더링에 대해 집중적으로 다루기로 한다.
주제를 넘어선 것이다. 이 기법의 아이디어는 볼륨을 두 번 렌더링하는 것이다. 처음에는 컬링되고 z-테스팅이 이루어진 뒷면 으로 볼륨을 렌더링하며 스텐실에 1 을 더한다. 두 번째로 앞면을 컬링하고 z-테스팅하여 볼륨을 렌더링한 후 스텐실에서 1 을 뺀다.
있고 다른 기하학적 구조가 없는 곳은 그림자가 없다. 뒷면과 앞면 사이에 어떤 기하학적 구조가 있다면 앞면 렌더링되지만 뒷면은 렌더링되지 않기 때문에 스텐실 버퍼의 값은 양수가 된다.
흔하지 않던 수년 전에는 제한된 기능만을 제공하는 하드웨어에서 일정한 함수 파이프라인만을 사용할 수 있었다. 스텐실 버퍼는 첨단적인 하드웨어에서만 필요한 것으로 여겨졌지만 거의 모든 하드웨어에 알파 채널을 가진 버퍼는 있었다. 이 알파 채널이 많은 기능을 수행했으며 일부 경우에서는 스텐실의 역할로 사용되기도 했다.
수 있고 스텐실과 알파 버퍼 모두 빼기 연산을 할 수 있다. 그러므로 첫 번째 시도로서 모든 스텐실 연산을 이와 비슷한 알파 연산으로 바꾼다.
* 자세한 내용은 첨부(PDF)화일을 참고하시기 바랍니다.
|
|||||||
첨부파일 |