[Unity Shader] Intersection

ILSINN·2025년 4월 16일

Unity Shader

목록 보기
4/6

개인 공부 기록용 글입니다.
작성자가 이해할 정도로만 정리해 놓은 것이니 설명이 매우 불친절합니다.
작성 기준 유니티 버전 : 6000.0.32 f1 (HDRP)

유니티 에셋 스토어에서 물 쉐이더를 찾아다가 이런식으로 오브젝트 교차되는 부분에서 하이라이트가 적용된 쉐이더를 찾아 볼 수 있음.
저거 어떻게 하는 거지?
두 평면간의 교선 방정식을 사용하나 생각했는데 생각보다 간단하고 쉬웠다...

가장 중요한 교차되는 곳 구하는 부분
교차되는 곳 = 다른 오브젝트에 의해 가려지는 곳 이라고 가정을 하고 다음을 구성한다.
Scene Depth를 통해 카메라에 실제로 보여지는 부분을 구한다.
값이 클수록 가장 멀리 있다는 뜻이다.
그리고 Scene Position을 통해서 오브젝트가 실제로 존재해야 하는 예상 값을 구한다.

그리고 두 값의 차를 통해서 교차되는 곳을 찾아낸다.

실제 값을 확인하지는 않았지만 내 예상으로는,
0에 가깝다 : 예상 거리와 실제 거리가 같다 = 교차점
음수 : 예상보다 앞에 뭔가가 있음 = 가려짐
양수 : scene depth가 더 멀다 = 예상보다 더 먼곳에 픽셀이 있음.

그 결과에 one minus를 거치면, 교차점에 가까울수록 1에 근사하고,
saturate를 붙여서 [0,1]의 closed interval에 값을 제한한다.

이후 적당한 power 값을 넣고 Lerp하면 교차점에서 그래디언트한 색을 뽑을 수 있다.

power = 6으로 설정한 결과물.
여기서 물결만 추가한다면 에셋스토어에서 볼 수 있는 그런 쉐이더랑 근접하게 만들어 질 것이다.

profile
유니티유니티유니티

0개의 댓글