본문 바로가기
Shader

URP에서 Particle Vertex Stream으로 UV 조절하기

by 대마왕J 2020. 6. 25.

일단 파티클을 만들었습니다. Lifespan은 1~ 5 입니다. 

셰이더는 이렇게 . 매우 단순하죠 




이제 파티클 옵션에서 커스텀 데이터를 켜줍니다. 

float4 짜리 두 개를 켤 수 있지만 하나만 켜주죠 일단. 





그 다음 커스텀 버텍스 스트림을 켜줍니다. 

신통방통하게도 에러가 나네요 



일단 에러를 보면 버텍스 스트림에 Color가 없다는 말입니다. 

여기는 버텍스 스트림이니 칼라라면 .. 버텍스 칼라죠 !!! 





네 이렇게 하면 해결됩니다. 



다음에는 커스텀 데이터 추가입니다. 여긴 설명할게 좀 있는데, 

UV를 보시면 Texcoord0 의 xy만 쓰고 있습니다. 

그러므로 여기에 그냥 커스텀 데이터를 추가하면.. 




커스텀 데이터 float4를 추가하니까, Texcoord0번의 zw 와 Texcoord 1번의 xy가 들어가 버렸습니다. 이 무슨 혼종.



그렇습니다. 이것이 스트림. 그냥 순서대로 들어오는대로 그냥 밀어 넣는것이다 보니 순서대로 박혀 버린 것입니다. 

근데 이러면 못쓰죠 삭제. 


다시 이 상태에서 시작입니다. 



이제 스트림을 채워서 0번 Texcoord를 채워야 합니다. 

 그래서...


+ 를 눌러서 (안 쓸 거지만) UV2를 추가해 줍니다. 

Texcoord0번의 zw 자리까지 잘 채워졌네요 [각주:1]



다음은 이제 Custom1.xyzw 를 추가해 줍니다. (  ) 부분을 보면 아주 깔끔하게 Texcoord1.xyzw가 들어간 것을 볼 수 있습니다. 

에러는 이제 당연히 나겠죠. Texcoord1 번이 추가되었으니. 



그럼 셰이더에서도 Texcoord1번을 추가해 주면 됩니다. 

이름땜에 속으면 안됩니다. 

이 UV0가 Texcoord0 라는 말이고

UV1이 Texcoord1 이라는 말입니다. 


그러니까 UV라는 말 쓰지 말고 Texcoord라는 말을 쓰라고!!






이제 간단합니다. 이제 파티클의 Lifespan동안 옆으로 UV가 한 번만 움직이게 하려면 



요렇게 하면. 커스텀 r 값이 UV 옵셋 x에 들어가니까요 


이렇게 커스텀 데이터 1의 r 값을 커브로 바꿔주고 처리해주면 파티클의 생명값에 따라 1만큼 UV가 이동하게 할 수 있습니다. 



파일은 여기 


particle.unitypackage


  1. 평소 일반적인 경우 이 UV2는 라이트맵용 UV로 사용됩니다. 근데 뭐 이펙트에선 .. 쓸모없... [본문으로]
반응형

댓글