Featured image of post [Shader] 물 쉐이더 투명도 기능 수정 TKBG_Water

[Shader] 물 쉐이더 투명도 기능 수정 TKBG_Water

수진씨 요청. 물 쉐이더의 투명도 추가입니다. 이것은 물과 지형이 맞닿는 부분에 투명도를 주기 위한 기능으로, 쉐이더 2.0 에서
작동하기 위해 수동으로 버텍스 칼라를 적용하면 작동하도록 만들었습니다.

수진씨가 안보여서 그냥 올립니다. 커밋도 되어 있습니다.

작업방식은 간단합니다. 맥스에서 물을 만들 때 투명도를 주고 싶은 부분을 선택해서 버텍스 칼라를 빨강으로 만들어 주면 됩니다.

근데 솔직히 말하자면, 사실은 파랑이어도 됩니다. 꼭 빨강일 필요 없습니다.

원래 빨강임을 검출하기 위해서는, 간편하게 하려면 전체 버텍스 칼라를 검정으로 칠하고 나서 저 부분만 빨강으로 칠하는 작업을 해야 하는데, 간단하지만 꽤 귀찮은 작업이라서 그냥 빨강색만 칠하면 되게끔 만들고 싶었습니다.

그러다보니 빨강만 있는 부분을 검출하기 위해서 녹색과 파랑이 없는지를 검색해야 했었습니다. (흰색은 빨강 녹색 노랑이 모두 100% 씩 들어가 있기 때문에 빨강만 검출할 수가 없습니다)

그런데 웃기게도 그렇게 공식을 만들었더니, 쉐이더 2.0에서 처리할 수 있는 수식의 제한을 넘어가 버렸지 뭡니까. - 외부 코드로 빼서 include 시키면 되겠지만 그럼 또 무거워지고 관리도 힘들고… 이 작업에서 가장 어려운 부분이었습니다 -

그래서 이리저리 궁리 끝에, 공식으로 처리 안하고 단순히 ‘녹색이 있는가 없는가’ 만 검출하면 제한에 걸리지 않는다는 것을 알고 그렇게 만들었습니다. 뭐 덕분에 파랑색으로 해도 동일한 효과가 나오게 됩니다. 물론 나중에 파랑까지 쓰게 된다면 크게 뜯어야만 합니다. (그치만 더 효과 주문 안하겠죠? 안할거야…) 더 하면 곤란해요 후후후

또 한 가지, 보통 물의 투명도 (알파) 를 설정하려면 버텍스 알파를 쓰는 것이 일반적입니다만, 애석하게도 이미 버텍스 알파는 2번째 텍스쳐인 포말 텍스쳐에 사용하고 있었습니다. 이때 버텍스 알파를 쓰는게 아니라 칼라를 쓸 걸 그랬어… 꺼이꺼이….
그래서 할 수 없이 투명도에 Red 칼라를 사용하게 되었습니다. 이제와서 바꿀 수 없잖아요 … 흑흑흑…
나중에 혼동하지 마시길.

쿼 그렇게 만들었습니다.

이렇게 투명도가 먹게 됩니다.


단, 스페큘러는 남아있게 일단 만들어 놓았습니다. 물이 지면과 거의 닿아 투명해 지더라도, 스페큘러는 남아 있는것이 더 자연스럽지 않을까 해서요. 요청이 있다면 없앨 수 있습니다. 이상입니다.

Hugo로 만듦
JimmyStack 테마 사용 중