버그를 잡고 기능을 수정하였습니다 





일단 가장 기본적인 기능을 만들어 올려봅니다.


기존의 슈리켄에서는 메터리얼의 프로퍼티들을 수정할 수가 없었습니다. 그래서 따로 키 애니메이션을 줘야 했고, 그것이 파티클의 타이밍과 맞출 수가 없어서 뭔가 쭉정이처럼 이중으로 작업할 수 밖에 없었죠. 그나마도 제대로 맞지도 않고. 


그래서 언리얼에서는 일찌감찌 커스텀 데이터라는 개념이 있었습니다만 유니티는 이번에 드디어 생겼네요 


 


일단 이런게 있고




말풍선을 읽어보면 스크립트나 셰이더에서 읽을 수 있게 커스텀 데이터를 조절한다고 하네요. 

쉐이더에서 사용하려면 커스텀 버텍스 스트림을 사용해야 하고요 


그래서 만들어 봤습니다. 

커스텀 버텍스 스트림 쉐이더입니다 .

아래 쉐이더를 다운받으시면 됩니다. 





다운받아 메터리얼에 적용하시면 이렇게 됩니다. 

이 메터리얼을 파티클에 적용하시면 됩니다. 


텍스쳐는 두 개가 들어가는데, 첫 번째 텍스쳐는 이펙트용 이미지, 

두 번째 텍스쳐는 디스토션 이미지가 들어가는게 좋습니다. R 채널만 사용하며, 리니어 텍스쳐로 만들어 주는 것이 좋습니다. 



적용하면 뭔가 이상하게 보이실텐데요

이건 커스텀 데이터를 위해 잡아놓은 texcoord 에 쓰레기값이 입력되는 상태라서 그렇습니다. 제대로 연결을 안해서이죠. 연결하면 문제 없습니다만, 보기 싫으실지 몰라서 비효율적임에도 불구하고 일단 체크박스를 하나 만들어 놨습니다. 

아래 버튼을 끄면 제대로 보일겁니다. 에러인지 아닌지 확인하실 분을 위해 만든겁니다. 


이걸 꺼주시면 일단 제대로 보이실 겁니다. 

그렇지만 파티클 커스텀 데이터를 사용하시려면 꼭 켜 주십시오. 이건 임시 테스트용입니다. (사실은 파티클이 아닌 곳에도 사용 가능하게끔 만든 것이긴 합니다만... 비효율적 코드가 하나 들어가 있기 때문에 권장하는건 아닙니다. 아예 멀티 컴파일로 분기를 때리는게 낫겠지만 귀찮슈.... 웅엥웅)


이제 커스텀 파티클 데이터를 쓰기 위해서 

커스텀 버텍스 스트림을 가동시키겠습니다. 


코드 내에 커스텀 스트림을 아래처럼 만들어 놨기 때문에,




파티클에서도 커스텀 버텍스 스트림을 위 코드와 맞춰주시면 됩니다. 

필요없는건 지우시고, 필요한건 추가하시면 됩니다. 

반드시 똑같이 하시길. 




이제 기본적인 준비는 다 되었습니다. 


커스텀 데이터를 여시고, 버텍스 스트림에서 설정했던 것처럼 float4 vector 두 개를 만들어 줍니다. 

이제 우리는 8개의 조절자가 생겼습니다. 


각 조절자의 라벨링은 다음과 같습니다. 


물론 라벨링따위 안해도 됩니다만 ㅋㅋㅋ 이 글을 보시는 분은 어디가 어디랑 연결되었는지 알 수 없으니 

굳이 써 봤습니다 


그리고 위의 것은 아래의 셰이더의 이 부분에 각각 대응됩니다. 그냥 순서대로입니다. 알아보기 쉽게 만들어 봤습니다. 



맨 밑의 SrcBlend 와 DstBlend 는 역시 커스텀으로 조절할 수 있게 만들어 놓았습니다. 

저기 써진대로 구성하면 됩니다. 

즉 Add 를 만들려면 SrcAlpha 와 One 혹은 One One(Black Background) 으로, 

Alpha Blend를 만들려면 SrcAlpha 와 OneMinusSrcAlpha로

Multi를 만들려면 DstColor 와 Zero로 구성하면 됩니다. 



하여간 이렇게 만들어 놓으면... 


이제 최상단의 유투브 동영상처럼 조절하시면 됩니다. 




기능을 조금 바꾸고 버그를 수정했습니다. Fog와 충돌나던 기능을 수정하였고 ,

기존의 기능이 'UV 이동속도' 를 제어하는 기능이었다면 

이번에는 '절대 UV 위치' 를 제어하게 만들었습니다. 즉 그래프로 조절하시면 좋습니다. 

'회전' 도 마찬가지이고 모든 수치가 절대 수치로 만들어서 더 응용력이 좋아졌습니다. 



JP_Particle_FlowDistortion.shader




YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. 커피맥주 2017.12.04 12:17  댓글주소  수정/삭제  댓글쓰기

    늘 도움 많이 받고 있습니다.
    공유 감사합니다.

  2. Synapse 2019.05.29 12:11  댓글주소  수정/삭제  댓글쓰기

    안녕하세요! 변방의 이펙터 인데요 커스텀데이터가 무엇인지 궁금하던 차에 대마왕님의 글을 보게 되었습니다.
    아직은 감이 잘 오질 않지만 한가지씩 소화하고자 한가지만 문의 드립니다.

    이펙터다 보니 주로 사용하는 쉐이더는 모바일 파티클의 알파블랜드 쉐이더나 에딕티브쉐이더만 사용중이었습니다. 물로 경우에 따라 스텐다드 쉐이더나 별도 팀에서 구매한 쉐이더를 사용하기도 하지만 궁금한것은 올려주신 쉐이더를 사용해야만 위와 같은 커스텀데이터를 활용한 연출이 가능한것인지

    아니면 기존 쉐이더 모바일파티클의 알파블랜드나 애딕티브쉐이더를 가지고도 위와 같이 UV값을 변형하고 혼합방식을 활용한 연출등을
    가능하게 할 수 있는지 알고 싶어 문의 드립니다.

    정리하면 위와 같은 커스텀데이터 활용한 연출을 하려면 올려주신 쉐이더가 아닌 기존 모바일파티클 알파블랜드나 에딕티브 쉐이더를
    적용하고도 사용할 수 있을지 입니다.
    혹여 주실 말씀은 여기에 올려주실 수 없으시면 외람되지만 leedoyeong75@naver.com 으로 부탁드려도 될지 추가 문의 드립니다.

    그러면 두서없이 올린 글 읽어 주셔서 고맙습니다. 더욱이 바쁘신 와중에 불쑥 실례했습니다. 꾸벅!
    말씀 고대하며, 일교차 심한 요즘 건강 조심하세요 꾸벅!