아마 완다와 거상 이후였던거 같습니다만, 어느새 유행이 되어 버린 듯한 인상의 RimLight. allgd 어디선가 어떤 분이 구현해 놓으신 글이 있길래 나중에 봐야지.. 하고 넘어갔던걸 다시 찾아봤더니 블로그가 폭파 되었더군요. 그냥 자료 찾아서 대충 구현 해봤습니다.
링크 : Fake Rim-Lighting, RenderMan Shader Tutorial
한줄 요점 정리. 1.0f - dot(페이스 노말, 카메라에서 버텍스 까지의 단위 벡터).
이것으로 다음과 같은 결과물이 나옵니다.
이것에다 smoothstep 을 이용해 바깥쪽으로 밝기를 모아주면..
완료. 좀 더 예쁘게 보이게 하려면 그래픽 팀원들과 좀 더 이야기를 나눠봐야 하지 않나.. 싶습니다만..
 | RimLight.zip (302.6 KB) |
| | |
Microsoft DirectX SDK (November 2007) 의 DX9 Sample 에서 작성했고, 아마 최근 버젼에서도 무난히 컴파일 되리라 봅니다. 컴파일 안되셔도 다른거 볼거 없이 RimLight.fx 의 다음 두줄만 보셔도 됩니다.
vCameraToVertex = normalize(g_CameraPos - vPos);
Output.Diffuse.rgb = smoothstep(1.0f - g_RimWidth, 1.0f, 1 - max(0,dot(vNormal, vCameraToVertex)));
PS : DX 기본 UI 는 대체 왜 만든건지.. orz
MFC 스러워서 프로그래머가 쓰기에 좋긴 하지만..
이미지 출처 : Fake Rim-Lighting, RenderMan Shader Tutorial
|