https://www.youtube.com/watch?v=M7ICBYmZkds
위 튜토리얼을 따라했습니다.
Opaque Texture 설정
투명 효과를 내려면, 뒤에 있는 오브젝트가 보여야 한다.
정말로 투명해지는 게 아니라, 투명이 될 모델에 뒤에 있는 오브젝트가 텍스쳐처럼 그려지는 것이다.
뒤의 그림을 가져오기 위해, Opaque Texture를 체크해주어야 한다.
Opaque Texture 설정은 불투명 오브젝트를 다 그린 다음, 그 화면을 Texture로 저장해놓겠다는 의미이다.
그래서 반투명 오브젝트를 그릴 때, 저장해놓은 Texture를 이용할 수 있다.
그만큼 성능에 영향이 많이 가서, 모바일에서는 안 쓰는게 좋을 것 같다고 한다.
Shader Graph 설정
라이팅 연산 없이, 불투명 오브젝트로.
Material 설정
불투명 오브젝트로 그리지만, 반투명 오브젝트처럼 늦게 그리기 위한 설정.
뒤의 그림을 모델에 입히기
Scene Color 노드로 텍스쳐를 가져올 수 있다. (위에 설명한 Opaque Texture 설정 체크해야 함.)
화면 기준이니까, Screen Position 노드를 연결해준다.
웬만하면 Scene Color와 Screen Poisition 노드는 세트로 쓰일 것 같다?
(OutLine은 유니티의 Selection Outline 설정입니다.)
아직까지는 뒤의 텍스쳐가 그대로 입혀져서 정말 투명이 된 것 같다.
Offset을 줘서 굴절되는 느낌을 줘야 한다.
Offset으로 굴절되는 느낌 주기
UV에 Offset을 더해주었다.
확실히 굴절이 되니까 느낌이 살긴 하는데, 0.03이라는 일정 수치를 더해주었기 때문에
어느 방향에서 보던, 0.03만큼 아래로 굴절된다.
Normal 방향으로 굴절되도록 만들어보자.
Normal 방향으로 Offset 주기
굴절이 밋밋하지 않다.
Normal Vector 말고, Normal Map을 이용해서 좀 더 디테일을 준다.
Unlit Shader에서 Normal Map 사용하기
노멀맵 한 것과 안한 것의 차이가 거의 안 나서 결과는 캡처하지 않았다.
Lit Shader에서는 Normal Map 넣는 곳에 그냥 이어주기만 하면 알아서 계산해주지만, Unlit Shader에서는 직접 계산해줘야 한다.
Normal Map을 탄젠트 공간에서 월드 공간으로 바꾸려면, (탄젠트, 바이탄젠트, 노멀)을 구해서, 행렬을 만든 뒤, 곱해야 하는데,
Transform 노드를 쓰면 다 해주는 것 같다. 결과가 동일함.
Fresnel Effect 노드로 실루엣 보여주기
너무 투명하면 좀 Clocking 느낌이 안 살기 때문에, 테두리만 좀 넣어주자.
끝!
'기타 > Unity' 카테고리의 다른 글
UV 좌표로 텍스쳐 크기 조절하기 (0) | 2021.09.16 |
---|---|
Dissolve 효과 (0) | 2021.08.10 |
기본 라이팅 연산 (0) | 2021.08.09 |
[Unity] 캐릭터 파츠 교체하기 / 파츠 구조 변경 후 애니메이션 적용시키기 (0) | 2021.04.01 |
[Unity Github Desktop] CRLF 오류 (2) | 2019.12.10 |