==============================
원래대로라면 Poiyomi Stencil기능을 소개하려고 했는데
이게 3.5 버전에서는 오류가 있고, 현재 후원자용인 4.0버전부터 잘 동작하는 것 같아서
잠깐 포이요미는 쉬어가고, 이번에는 갤럼들이 요청한 쓸만한 셰이더들을 건져 왔다.
이미 가지고 있는 브붕이도 있겠지만...
==============================
소개한 셰이더와 물건들은 유니티 패키지,
프리팹 형태로 저장해뒀으니 구글 드라이브에서 링크를 받아야 한다.
https://drive.google.com/open?id=1UA6vz-w9mLWkIJDWJVO6Yjr-sYZYuzHd
==============================
1. World overlay 셰이더
https://booth.pm/ja/items/1161778
데칼(Decal)의 기능과 매우 유사한데, 이는 셰이더쪽에 관심있는 브붕이들이 찾으면 될 것 같다.
먼저 패키지에 동봉 된 Z테스트 프리팹을 아바타 안에 집어넣는다.
위치는 상관없지만 웬만하면 Armature 바깥이 좋다.
왜 라이트를 아바타에 집어넣느냐면, 이 셰이더는 물체의 거리감..?
아무튼 깊이값을 계산하기 위해서 빛 때문에 생기는 물체의 그림자 강도를 보고
뭐가 가까이 있고 멀리 있는지 구별한다고 생각하면 된다.
Z테스트 프리팹을 아바타 안에 넣지 않을 경우 가끔 오류가 발생할 수 있다.
셰이더를 소개하면서 발사시킨 월드 파티클이 손을 따라 움직이지 않게 하는 법도 소개하고자 한다.
이게 다른 강좌글에 있는지, 없는지는 잘 모르겠지만 이 방법을 사용하지 않을 경우
내가 파티클을 발사하고 바로 움직일 때, 공중에 떠 있는 파티클도 나를 따라 움직이게 된다.
물론 나를 따라서 회전도 같이 하므로 발사되는 총알같은걸 만들 때 곤란하겠지.
파티클 발사 시작점으로 정할 위치인
손목(Right/Left wirst)이나 Hand.R, Hand.L 등에 RigidBody 컴포넌트를 추가한다.
손가락에서 발사하고 싶으면 Indexfinger같은데에 넣으면 되겠지.
Constraints가 안 보이면 단어 왼쪽에 삼각형 누르면 되고.
RigidBody컴포넌트의 세팅을 동그라미대로 한다.
Angular Drag 0
Use Gravity 체크 해제
Constraints열어서 포지션과 로테이션 XYZ모두 체크
그럼 이제 아마추어 바깥에 빈 오브젝트를 생성하기 위해
아바타 이름에 우클릭 하고 Create Empty
새로 만든 오브젝트에 Fixed Joint 컴포넌트 추가
세팅은 동그라미대로 하면 된다.
RigidBody에서는
Angular Drag 0
Use gravity 체크 해제
Fixed Joint에서 Connected Body누르고
Scene 눌러서 아까 RigidBody를 추가한 부위를 선택한다.
빈 오브젝트랑 RigidBody를 넣은 부위를 서로 연결시키는 작업이다.
Fixed Joint를 넣은 빈 오브젝트에 또 빈 오브젝트를 만든다.
이는 나중에 제스쳐나, 애니메이션으로 파티클을 끄고 켜는 것을 감안한 것이다.
추가한 빈 오브젝트에 파티클 프리팹을 집어넣는다.
셰이더는
Scale: 메인 텍스쳐의 타일 크기
Range: 중심으로부터 셰이더가 보여지는 범위
이 두가지 수치를 조절하면 된다.
이제 즐감
==============================
2. Liquid 셰이더
컵 프리팹을 넣어보자.
해당 셰이더를 넣은 실린더를 컵의 빈 공간과 동일하게 맞췄고
Fill Amount로 용량을 조절하면 된다.
바 월드에서 자주 쓰는건데 컵을 회전시켜도 액체는 수평을 유지하는 셰이더,
스크립트가 필요하지 않아 아바타에도 넣을 수 있다.
Tint: 색
Fill Amount: 액체 높이,
Top Color: 상단 액체 표면의 색
Foam Line Color: 테두리 색
Foam Line Width: 테두리 굵기
Rim Color: 액체 측면에 림 라이트 색을 추가
Rim Power: 림 라이트 강도
==============================
3. SilentWater 셰이더
물 프리팹을 쓰면 된다.
VR환경에서 테스트 해 봤는데 2개로 보이거나 딱히 문제점은 없던 셰이더.
실제로 꽤 많은 월드에서 SilVR Water셰이더(물체와 반응하여 표면에 원형 파문이 생기는 셰이더)대신
이 셰이더를 쓴다. 비교적 가벼우니까.
다만 포스트프로세싱 Bloom이 강한 월드에서
메탈릭 수치를 높이면 스카이박스의 빛을 강하게 반사하게 되는 것은 주의해야한다.
Depth 색과 Depth Distance수치는 지평선을 나타낼 때 쓰면 된다.
복잡해보여서 사용하기에 어려울까봐 미리 텍스쳐와 적당한 수치를 집어넣었다.
Wave에는 노멀맵이 필요하며 Foam에는 그레이스케일 이미지를 써야한다.
Wave Strength는 노멀맵의 강도로 생각하면 되고
Wave Scroll은 노멀맵(파도)가 움직이는 방향과 세기 등을 조절할 수 있고
Wave Reflection Distortion은 물 표면이 일렁이면서
물 표면에 비치는 물체가 함께 일렁이게 할 강도인데 좀 어지러우므로 쓰지 않는게 좋다.
Foam은 얕은 바다에서 아래를 볼 때 빛이 파도에 의해 일렁이는걸 표현한거다.
==============================