Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

Libwan

[Parallax Occlusion Mapping] 본문

Unreal/Material&Shader

[Parallax Occlusion Mapping]

Libwan 2022. 5. 15. 15:21

Parallax Occlusion Mapping (POM)

 

표면의 깊이 디테일을 표현하기 위한 그래픽스 기법중 하나.

 

유사한 결과를 낼 수 있는 다른 기법으로는 Bump offset , Displacement 등이 있음.

 

기법 특성상 평평한 면을 기준으로 음각을 표현하는데 특화


표면의 Side view

Parallax Mapping 의 골자는 카메라가 평면(Fragment)의 한 점 P0 를 바라볼때

 

HeightMap(깊이) 가 고려된 Texture의 한 점 P1'를 나타내는 Texcoord P1 을 찾아 P0의 좌표를 P1으로 옮기는것임.

 

따라서 P1'의 근사치 P2'를 구하기 위해 우리는 P0의 카메라벡터에 역수를 취한 벡터를 보정한 값 V0에 P0'를 곱하여 P2'를 찾는다.

 

(경사가 음각이 주를 이룰경우 일반적으로 정규화된 벡터 V0의 X,Y를 Z값으로 나누어주어 더 큰 벡터를 얻어 보정하는 방식 등이 있고,

그림처럼 상황에 따라(경사도가 양각인 상황 등에선) 이상한 결과를 가져올 수도 있으니 적절히 선택한다)


 

Steep Parallax Mapping

 

위에서 설명한 Parallax Mapping은 경사가 가파를 시 근사값의 오차가 커지기 때문에,

 

높이를 단계별로 나누어 여러번 검사하는 Steep Parallax Mapping을 적용해 볼 수 있다.

Parallax Mapping을 각 높이별 위치에서 검사하며, 해당 위치의 HeightMap과 비교해 HeightMap보다 값이 적을 경우 해당 위치를 리턴받는다. 당연히 검사하는 step의 밀도가 높아질수록 정확도가 상승한다.

 


Parallax Occlusion Mapping

 

무턱대고 step의 밀도를 높이는건 과한 비용을 요구하기 때문에, 더 나은 결과를 위해 고려할 수 있는 기법이다.

 

위에서 설명한 Steep Parallax Mapping에서 반환된 P3'값 ( 첫번째로 탐색된 Height보다 낮은 위치의 값) 과 그 이전값(P2')을 선형으로 보간해 근사치를 구한다.

 

이 역시 근사치이지만 이전의 값보다 더욱 정확도가 높아짐을 알 수 있다.

 

 


Parallax Occlusion mapping 함수를 제대로 이해하고 활용하기 위해 공부하였다.

 

 

 

참고자료: https://learnopengl.com/Advanced-Lighting/Parallax-Mapping

 

LearnOpenGL - Parallax Mapping

Parallax Mapping Advanced-Lighting/Parallax-Mapping Parallax mapping is a technique similar to normal mapping, but based on different principles. Just like normal mapping it is a technique that significantly boosts a textured surface's detail and gives it

learnopengl.com

 

'Unreal > Material&Shader' 카테고리의 다른 글

[FakeAxisUv]  (0) 2025.01.01
[RadialBlur]  (0) 2023.05.30
[Parallax Occlusion Triplanar Mapping]  (0) 2022.05.18
[Material] - Infinity Panning From Center  (0) 2022.05.04