겜브리오 쉐이더 제작시 주의사항 by 김윤정

1. NSF 를 건드리면 반드시 NSB 를 삭제한 후 Asset Viewer나 MAX를 실행시켜, NSB가 생성되는지 확인할 것.
생성이 안되면 엔진에서 NSF를 읽지 못한 것이다.

2. NSF는 hlsl이 아니라 스크립트다. 때문에 띄어쓰기나 Tab에 매우 민감하다 (그런 것 같다)
이 부분 때문에 수많은 삽질을 한 관계로, NSF를 제작시 Tab과 스페이스바에 주의하라.

3. NSF를 건드리면 모든 뷰어를 종료하고 NSB가 생성되는지 확인해야 하지만,
hlsl을 건드렸을때에는 맥스가 실행중이라고 해도 바로 확인할 수 있다. 

4. 반드시 한 줄을 추가하고 실행되는지 계속 점검하라.
한 시간 동안 짜놓은 코드가 작동이 안될 때에는 찾을 방법이 없다.

5.  텍스쳐 UV 에니메이션의 키 값을 받아오는 명령은
CM_Defined     TexTransformBase     MatrixTexbase     4
이다. TexTransform의 계열에는 여러 종류가 있고, 커스텀 Attribute도 이런 식으로 넘길 수 있을 듯 하다.

6. Constantmap 에서 순서는 다소 애매한 느낌이 있다.

CM_Defined     WORLDVIEWPROJ     view_proj_matrix     0


에서 view_proj_matrix 는 레지스터를 나타낸다고 생각하면 좋다.그리고 레지스터를 자동으로 잡아준다고 생각하면 좋다. 
그리고 그 이후의 숫자는 Extra Data로, 기본적으로 0을 쓰면 된다.
물론 텍스쳐와 같이 여러 장을 쓸 때는 인덱스 넘버로 사용해서, 0부터 1,2,3 순서로 쓰면 된다.
그리고 같은 방식으로 이런 방식이 가능하다.

CM_Defined     WORLDVIEWPROJ     0     0


이것은 이름으로 받지 않는 형식이라, 앞의 숫자는 인덱스 넘버를 위한 엑스트라 데이터가 아니라 레지스터가 된다. 즉 사용하는 레지스터만큼 넣어주면 된다.
그 이후에 숫자가 더 들어갈 수 있는데, 이것은 초기값이다.

CM_Defined     MaterialEmissive    0     0     0


즉 위와 같은 형식이 가능하다는 ..

CM_Difine 된 것은 저렇게 구분해서 사용하면 되고, User Custom Attribute 를 사용할 때에는 이후 숫자가 레지스터를 수동으로 표시해주는 넘버부터 나오게 된다 (고 한다)







MyADD

<script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>