Appearance
범프 매핑의 앞에 있는 것(2)~패럴랙스 오클루전 매핑(POM)
[칼럼 핵심 요약]
개량형의 범프 매핑이라고 할 수 있는 「패럴랙스 매핑」이지만, 서두에서 말한 범프 매핑의 약점에 대해서 약간의 개선을 보았을 뿐, 부자연스러움은 있다. 그래서 다음에 고안된 것이 이 요철과 시선의 교차점을 구할 때의 정밀도를 올려가자는 접근법이다.🌐 원문 링크: バンプマッピングの先にあるもの(2)~視差遮蔽マッピング (Mynavi News)
📅 원문 발행일: 2008-05-23 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- 본 칼럼에서 다루는 핵심 렌더링 기법은 현대 실시간 렌더링 엔진(DirectX 12, Vulkan, Unreal Engine, Unity)의 기초 이론을 구성하고 있으며, 최신 하드웨어 가속 기법 및 컴퓨트 셰이더와 결합하여 고도화되었습니다.
📖 본문 해설
[원문 리드문] > 개량형의 범프 매핑이라고 할 수 있는 「패럴랙스 매핑」이지만, 서두에서 말한 범프 매핑의 약점에 대해서 약간의 개선을 보았을 뿐, 부자연스러움은 있다. 그래서 다음에 고안된 것이 이 요철과 시선의 교차점을 구할 때의 정밀도를 올려가자는 접근법이다.
개량형의 범프 매핑이라고 할 수 있는 「패럴랙스 매핑」이지만, 서두에서 말한 범프 매핑의 약점에 대해서 약간의 개선을 보았을 뿐, 부자연스러움은 있다.
예를 들어, 요철의 변화가 심한 경우에는, 대담한 근사로 구한 요철과 시선과의 교차점과의 어긋남이 커져 무시할 수 없게 되어 왔고, 여전히 요철의 전후 관계나 차폐는 무시되었다.
그래서 다음에 고안된 것이 이 요철과 시선의 교차점을 구할 때의 정밀도를 올려가자는 접근법이다. 이것은 픽셀 쉐이더의 프로그래머빌리티와 GPU 성능이 매우 향상된 DirectX 9세대/SM3.0 대응 GPU가 등장해 와서 처음으로 현실미를 띠고 온 기술이다.
이 개량판의 시차 맵핑에서는, 세세한 요철의 차폐(Occlusion) 관계가 배려되기 때문에 「시차 차폐 맵핑」(Parallax Occlusion Mapping)이라고 불리고 있다.
지금까지는 평면에 볼록을 붙인다고 하는 이미지였지만, 패럴랙스 오클루전 매핑(POM)에서는 평면에 오목을 새긴다……라고 하는 이미지로 실장되는 것이 스탠다드인 것 같다.
"시선과 요철의 충돌점을 구하여 그 위치의 노멀 맵을 꺼낸다"라는 근본적인 사고방식은 패럴랙스 매핑과 다르지 않다.
문제는 어떻게 요철과 시선의 충돌점을 효율적으로 구해 나가는가 하는 부분이 된다.
이것은 의외로 꾸준한 실시간 계산을 실시하여 실현한다.
구체적으로는, 폴리곤면으로부터 조사점을, 그 시선의 연장선 상에 따라 조금씩 잠재해 가고, 그 때마다, 요철과의 충돌 판정을 행해 가는 것이다. 충돌이 발견되면 그 바로 아래의 해당 노멀 맵을 참조하십시오. 노멀 맵에서 노멀 벡터를 꺼내고 나서의 음영 계산 자체는 범프 매핑이나 패럴랙스 매핑과 같다.
조사점을 시선을 따라 숨어서 진행하고, 그 위치 바로 아래의 하이트맵을 참조하여 그 높이가 진행된 시선의 높이보다 낮으면 아직 시선은 진행하게 된다.
한층 더 조사점을 시선을 따라 진행해 가고, 어느 쪽은 하이트맵의 높이 쪽이, 그 때의 시선의 높이를 웃도게 된다. 이것은 요철에 숨어서 충돌 점이 이전과 이번 사이에 있다고 결정할 수 있습니다. 「전회와 이번의 중간 지점에 충돌점이 있었다」라고 판단해 거기를 교차점으로 하는 타협을 해도 되고, 혹은 1회 되돌아가, 거기로부터 시선을 진행하는 거리를 짧게 해 정확한 충돌점을 요구하는 노력을 해도 좋을지도 모른다.
어쨌든, 이 기법의 묘화 품질을 결정하는 것은, 이 조사점을 시선을 따라 잠복시키면서 진행해 갈 때의, 스텝의 세밀함(분해능)이 된다.
묘화의 결과로서는, 패럴랙스 매핑과는 달리, 요철과 시선의 차폐를 비교적 바르게 취해 오게 되기 때문에, 앞의 오목 부분의 간극으로부터 뒤의 볼록 부분이 보인다… (계속)
그림