1. GPU를 사용한 스키닝
하드웨어 스키닝을 적용할 때 주의할 점은 Vertex Shader의 상수 제한을 넘지 않도록 해야하는 것이다.
무심코,
float4x4 matSkin[64];
이렇게 선언해서 사용했더니 아무것도 나오지가 않는 것이다.
이런 경우 컴파일이 되었다고 모두 된다고 생각하면 곤란하다.
상수 개수의 제한은 그래픽카드마다 다르기 때문에 컴파일러에서 판단하지 않는다.
shader3.0의 경우 256개가 최저인데 최저를 넘지 않도록 해야한다.
(http://www.gpgstudy.com/forum/viewtopic.php?topic=21892)
위와 같이 상수를 선언하면
64 * 4 = 256. 여기서 벌써 상수 제한을 넘어버리므로 다른 상수들을 전혀 참조할 수가 없게된다. 그래서 아무것도 출력이 되지 않는 것이다.
float4x3 matSkin[64];
위와 같이 선언해주면 하나의 행렬에 4개의 변수를 줄일 수 있다.
따라서, 64 * 3 = 192개 상수를 사용하게 된다.
2. 쉐도우맵
기본적인 쉐도우 맵에 poisson filter를 이용해서 PCF 값을 계산해 소프트 쉐도우를 구현했다.