이건 작년 초에 했던 짓임.

대충 게임학원 국비과정을 끝내고 취업을 못한 애들끼리 모여서 롤 모작을 해보기로 했음.

여튼 그래서 보통 게임에서 캐릭터를 마우스 커서를 올려뒀을 때 외곽선이 뜨는 효과가 필요하다 해서 구현하게 되었음.


당시 상황에는 이미 디퍼드 렌더링을 구현한 상황이었고, 디퍼드 렌더링으로 렌더링으로 한 메시들의 외곽선을 그려야 했음.

그 때 당시에 외곽선을 그리는 방법을 검색했을 때는 대체로 노말의 차이를 이용하여 외곽선을 그리는 방식들만 나왔는데

나( 그리고 팀원들)이 생각한 외곽선은 그런 게 아니었음.


그래서 생각한 방법은 GBuffer 중 한 장에 외곽선의 색상을 렌더링하고 다시 후처리를 통해서 그리는 방식이었지.


근데 이 아이디어는 좋았는데 문제가 있었음.

D3D10부터는 픽셀 셰이더에서 사용할 수 있는 랜더타겟이 8개지만 D3D9에서는 4개였음.

우리는 이미 디퍼드 렌더링을 하고 있기 때문에 GBuffer로 알베도, 노말, 깊이, 샤프니스 총 네 개를 이미 사용하고 있어서 외곽선을 그릴 수 없었음.

그래서 예전에 어디선가 들었던 것 중에 노말 패킹이라는 기법이 있다고 해서 검색을 적용을 했음.

노말 패킹이란, 기본적으로 x, y, z의 값으로 이뤄진 노말을 두 개의 값으로 압축시키는 기법이었음.

https://aras-p.info/texts/CompactNormalStorage.html


여튼 그래서 결론적으로 이렇게 외각선을 그릴 수 있게 되었음