[W.I.P] [Tutorials]Understanding allegorithmic substance designer. PART-3

서브스턴스 디자이너 한국 개발자 그룹을 구독 하시려면.
http://subinkorea.blogspot.kr/


christian.kim@allegorithmic.com 로 메일신청.

안녕하세요.
JP 입니다.

이제는 모바일 게임에서도 노멀맵을 자주 사용 하는 시대가 되었습니다.

앞으로 오픈지엘 3.0 모바일 시대가 되면 더욱 더 필요 한 시점이 될거구요.

서브스턴스 디자이너에서는 몇가지 노말맵 생성기능을 제공 하고 있습니다.

PART-2 에서는 보편적인 Normal Mapper 필터를 잠깐 살펴 봤는데요. PART-3 에서는 Height Normal Blender 필터를 경유 하여 노말맵을 생성 하였습니다.

PART-3 의 목표는 서브스턴스에서 기본적으로 제공 하는 렌더링 엔진의 노말맵 연산에 사용 되는 Binormal 과 UV Space 간의 계산을 위한 노말맵의 녹색 체널에 대한 이야기를 살짝 다루면서 서브스턴스의 맥락과 이해에 좀 더 접근 해 보는 것에 두었습니다.

쉽게 말하면 원래 서브스턴스에서 내부적으로 제공 하는 DirectX 모드 와 OpenGL 모드에 따른 Y 체널 Invert Function 을 사용자 노드로 다시 구현 해 보는 것이죠.

이번 구현에서는 쉬운 이해를 위한 방법을 선택 하고 있고 좀 더 어려운 매개변수 개방을 위한 내부 함수(Internal built-in Function)로 변수 개방을 하지 않습니다.

이해를 위해서 간단한 노드를 구성 했어요.




그냥 딱 봐도 정상적으로 출력 되고 있어 보입니다.

테스트를 위해서 일단 렌더링 엔진을 확인 해 봐야겠습니다.



예문 작성을 맥에서 하고 있기 때문에 OpenGL GLSL 로 설정을 하였습니다.

SSE2 는 인텔 CPU 에서 제공 하는 소프트웨어 가속 렌더링 아티텍처 입니다.
서브스턴스는 내부적으로 Bool 타입을 green channel inverting function 을 제공 하고 있습니다.







Normal Format 을 보면 다이렉트 엑스와 오픈지엘을 선택 해 줄 수 있어요.


하지만 어차피 개념적인 이해를 위한 예제 이기 때문에 이것은 생각 하지 않겠습니다.


우리는 노멀맵이 세개의 체널로 부터 작성 되고 있다는 것을 알고 있습니다.
즉 녹색 체널을 반전 시켜야 하죠.





노드를 좀 더 활용 해 보기 위해서 channel split 으로 RGBA 체널을 분리 시키고 다른 필터를 경유 시킨 후에 Channel merge 하여 병합 후 Output 노드로 연결 하겠습니다.
무엇을 해야 할까요?
녹색 체널을 반전 하기 위해서 분리 노드와 병합 노드 사이의 G체널에 Invert 와 관련 된 필터를 연결 해 보는 것이죠.

역시 좌측하든의 라이브러리 창에서 invert 로 검색 해 보는 겁니다.




우리는 회색 체널을 반전 해야 하기 때문에 Invert Grayscale 필터를 사용 할 것입니다.




Invert Grayscale 필터를 연결 해 보니 노말맵의 위아래가 바뀐 결과를 볼 수 있어요.

왜 이런 체널 인버트를 해야 하는지는 Binormal 연산이 탄젠트 공간과 UV 공간 좌표계의 계산에 의해 이루어 진다는 겁니다.

다이렉트 엑스는 좌하단이 0.0 이고 오픈지엘은 좌상단이 0.0 의 UV 공간 좌표계를 사용 합니다.

쉽게 생각 하면 위아래가 뒤집혀 있다는 거죠.

렌더링 아키텍처에 따른 올바른 법선맵핑 연산을 위해서 가볍게 ... 뭐 아.. 그렇군. 정도로 이해 하시면 될거 같습니다.

보통 쉐이더 작성시에는 Y 값에 대해서 마이너스 값으로 치환 대입 하여 처리 하고는 하죠.

하지만 쉐이더에서는 지속적인 계산을 수행 해야 하기 때문에 중간 작업용 UberShader 등에서는 이런 Bool 타입 파라메터가 있고 if 문 등으로 처리 할 수 있지만 연산은 그다지 달갑지 않은 탓에 다이나믹 텍스처를 통해 초기 한번만 처리 하고 결과를 리턴 할 수 있도록 하는 것이 좋을 듯 합니다.



예제파일.




Game Developer Leegoon copyright all right reserved since 2010.

Comments