에서 내용을 볼 수 있구요.
아래 글은 번역글이라 아무래도 좀 딱딱한 감이 없지 않지요. 그래서 섭스턴스를 어쨌거나 편하게 정리해 보면 다음과 같습니다.
- 프로시져 메터리얼 (절차적 메터리얼) procedural material : 이라 부릅니다.
- 쉽게 말해서 3D MAX 메터리얼을 제대로 배워보신 분이라면 알 수 있는, 기본 텍스쳐 - 노이즈라던가, wood 라던가, 체커라던가, marble 이라던가… - 들을 의미하는 겁니다.
- 이런 텍스쳐는 다른 책에서는 ‘3차원 텍스쳐’ 라고도 불리기도 하는데요. 어쨌건 이것은 비트맵 이미지라기 보다는 벡터 이미지에 가까운 성질을 가지고 있습니다.
- 즉 수학적으로 계산된 렌덤한 이미지 패턴들을 섞어서 그럴듯 하게 만드는 것입니다.
덕분에 얻을 수 있는 것은 다음과 같습니다.
- 비트맵이 아니라 수학계산의 모임이므로, 해상도의 개념이 아닙니다. 해상도는 무제한.
- 단 , 수학공식으로 만든 텍스쳐라서, 약간 렌덤성이 있는 자연물 텍스쳐 스타일만 나옵니다.
- 해상도 개념이 아니라서, 용량걱정이 없습니다. 벡터처럼요.
- 그렇지만 수학공식으로 만든 텍스쳐라서, 손으로 터칭할 수는 없습니다. (손으로 터칭한 비트맵 이미지를 프로시져 메터리얼 안에 추가할 수는 있습니다만, 그렇게 하면 장점이 사라져 버리죠)
- 재미있게도 수학적으로 조합된 텍스쳐라서, 설정값만 바꿔주면 베리에이션이 엄청 다양하게 나옵니다.
- 게다가 런타임에서 (게임중에) 유동적으로 바꿔줄수도 있습니다.
- 용량걱정은 없지만, 런타임에서 연산하는거라 GPU와 CPU의 오버헤드 (연산량) 을 유발시킬 수 있습니다. 복잡하게 구성된 텍스쳐라면 더 그렇겠지요. 즉, 텍스쳐는 지금까지 메모리를 차지하는게 문제였었는데 이 텍스쳐는 CPU를 사용한다는 것이 문제라는 것입니다.
- 노말맵과 스페큘러 맵, 하이트 맵 등 모든 종류의 맵을 자동생성해 줍니다.
그럼 이걸 유니티에서 어떻게 쓰느냐?
기본적으로 섭스턴스 프로그램에는 크게 다음과 같은 프로그램이 있습니다.
플레이어 : 이미 제작된 텍스쳐를 기반으로 각종 옵션과 설정값들을 바꿀 수 있게 해 줍니다. 즉 베리에이션 생성기. 이것만으로도 굉장한 양의 텍스쳐를 제작할 수 있습니다. 슬라이드 바만 만져도 텍스쳐들이 달라지지요. 이건 공짜입니다.

디자이너 : 아예 처음부터 프로시져 텍스쳐들을 조합해서 프로시져 메터리얼을 만들 수 있게 해 줍니다.
이건 유료 프로그램입니다.
노드 구조로, 손으로 그린 이미지를 프로시져 메터리얼에 넣어 만드는 것을 보시고 있습니다.
에어: 이건 아예 섭스턴스 엔진인듯 합니다. 디자이너도 포함된 것인듯.
리덕스 : 이건 텍스쳐를 압축하는 툴입니다. 일반 비트맵 텍스쳐를 DDS보다 훨씬 더 압축할 수 있지요.
근데 장단점이 있어서.. .이건 이전에 제가 쓴 글을 참고해 보심이 좋을듯.비트맵2메터리얼 : 크레이지범프와 비슷한 프로그램입니다. 비트맵 텍스쳐 하나로 노말맵이나 하이트맵, 스페큘러 맵등을 만들어 주는 기능을 가지고 있습니다.
유니티 엔진에는 그럼? 다 들어가 있습니까?
- 정확히 말하자면 , 유니티에는 일단 기본적으로 섭스턴스 엔진이 내장되어 있어서 섭스턴스 고유 포맷을 읽고 수정할 수 있습니다. 하지만 툴은 ‘섭스턴스 플레이어’ 만 들어가 있다고 생각하시면 됩니다. 리덕스나 비트맵2메터리얼을 별로 쓸 일도 없지요… 겜브리오 때라면 리덕스는 썼겠지만..
- 즉 유니티에는 프로시져 메터리얼을 ‘수정’ 해서 ‘사용’ 할 수 있는 기능은 내장되어 있습니다만, ‘제작’ 할 수 있는 기능은 들어있지 않습니다.
- ‘제작’ 하려면 디자이너를 사거나 해야 하는데, 추후 맥스에 내장된다는 얘기도 있으니 나중에는 그냥 맥스에서 만들 수 있을지도 모르겠습니다.
그럼 우리 게임에서 이걸 사용할 수 있습니까?
- 기본적으로 사용 못 할 이유가 없습니다. 그냥 제작되어진 메터리얼을 받아서 (혹은 사서) 쓰면 바로 적용됩니다. 아 , 물론 웹이나 스텐드얼론에 한해서지만요.
- 그치만 생각해야할 점이 있습니다. 이게 무조건 좋느냐? 라는 점에서 말입니다.
- 분명 텍스쳐 사이즈가 거의 없다는건 매력적인 일입니다. 그치만 CPU에서 연산하는 메터리얼이란 말입니다. 장점이 있으면 단점이 있는 법이지요.
그러므로 게임에 사용할 때에는 한 번 생각해야 할 필요가 있습니다.
- 만약 현재 메모리는 남고 CPU 부하가 심한 게임이 되었다면? 그럼 이건 가급적이면 써서는 안되는 메터리얼입니다.
- 만약 현재 메모리는 부족하고 CPU 부하가 여유있는 게임이 되었다면? 그럼 이건 적극적으로 써줘야 하는 메터리얼입니다.
그나마 다행한 것은, 이 메터리얼 기능이 엔진에 내장되어 있기 때문에 언제건 사용을 결정해도 상관없는 기능이라는 것입니다. 이런 것들은 최후까지 남겨 놓았다가 결정해야 하지요. ‘있다는 것’ 은 알고 있어야 하지만, ‘미리 결정할 필요는 없는 것’ 이라는 점은 무척 좋은 것입니다.
보통 최적화에는 두 가지가 있지요.
‘미리 정해놔야만 하는 최적화’ 와 ‘나중에 해도 별 상관없는 최적화’ 같은것 말입니다.
‘나중에 해도 별 상관없는 최적화’ 는 매우 간단하거나, 없어져도 큰 문제가 없는 것들을 의미합니다.
실시간 그림자라던가, DOF , 블룸과 같은 장식형 효과라던가, 텍스쳐 사이즈 같은 것들은 수정하기가 매우 간단하므로 맨 마지막에 최후의 수단으로 적용해야 하는 최적화 내용들입니다.
그렇지만, 3km 앞까지 보이고 진짜 갈 수 있다던가… 한 화면에 300명씩 보이는 전투가 기획되어 있다던가… 등등 근본적으로 해결해 놔야만 하는 최적화 내용들이 있습니다. 이런 것들은 ‘미리 정해놔야만 하는 최적화’ 지요.
이 섭스턴스의 경우에는 , ‘나중에 해도 별 상관없는’ 것에 속한다고 볼 수 있습니다. 넵 그렇습니다.
그러므로 지금부터 걱정할 필요는 없고, 프로젝트 중 후반부에 게임 봐 가면서 적용하는 것이 좋고, 그쪽이 효율적입니다.