말그대로 동그라미 그리기.
여러가지 상황에서 써먹을 수 있는 녀석들이라 정리해 두는 것이 유용하다
입체로도 응용할 수 있어서, 마둠파님의 InnerAo나 여러 볼류메트릭 기법등에서도 유용한 공식이니 정리해 두면 좋을듯.
첫 번째 방법
float dist = distance(IN.uv_MainTex, float2(0.5, 0.5));
UV의 각 수치를 0.5,0.5에서 얼마나 멀리 떨어졌는지를 계산한다.
이걸 Pow 처리하거나 이래저래 처리하면 요래조래 쓸 수 있다
o.Emission = pow(1-dist,7);
두 번째 방법
float dist2 = pow(cos(abs(IN.uv_MainTex.x * 2-1)) * cos(abs(IN.uv_MainTex.y * 2 - 1)),10);
이건 좀 복잡하니 설명을 해보자
dist2 = abs(IN.uv_MainTex.x * 2 - 1);
로 아래와 같이 만듭시다
이건 리니어한 결과물이다. 1 ~ 0 ~ 1 의 결과물
이걸 cos 시켜주면 다음과 같습니다
dist2 = cos(abs(IN.uv_MainTex.x * 2 - 1));
그냥 허여멀건한것 처럼 보이지만 사실 이게 cos그래프이니 배불뚝이 그래프입니다.
그리고 이걸 세로버전으로 하나 더 만들어서 ..
dist2 = cos(abs(IN.uv_MainTex.y * 2 - 1));
둘을 곱해줍니다. 입체일 경우에는 z 까지...
dist2 = cos(abs(IN.uv_MainTex.x * 2 - 1)) * cos(abs(IN.uv_MainTex.y * 2 - 1));
이제 이걸 pow 처리한 다음 이래저래 사용하면 됩니다
dist2 = pow(cos(abs(IN.uv_MainTex.x * 2-1)) * cos(abs(IN.uv_MainTex.y * 2 - 1)),10);
세 번째 방법
float dist2 =sqrt(dot((IN.uv_MainTex.x * 2-1),(IN.uv_MainTex.x * 2-1)));
그냥 UV를 dot 해준다 그리고 sqrt
'Shader ' 카테고리의 다른 글
유니티 내장 셰이더 함수들 (0) | 2019.09.13 |
---|---|
Camera Depth Texture : 카메라 뎁스 텍스쳐 (4) | 2019.02.01 |
Fake Interior Shader 페이크 인테리어 셰이더 (0) | 2019.01.27 |
AABB(Axis Aligned Bounding Box) 방식의 레이 충돌공식 (0) | 2019.01.24 |
고양이 입체 영상을 만들자! Parallax shader (0) | 2019.01.22 |
댓글