[Unity] 텍스쳐와 UV를 이용한 셰이더 (Tiling, Offset, Scrollout)

2023. 6. 5. 15:00Unity

728x90
반응형

Tiling & Offset 셰이더로 만들기

Tiling과 Offset 적용을 변수 프로퍼티 추가로 셰이더로 만들 수 있다. [Tiling And Offset]은 유니티 내에 기본 노드가 있어서 추가하여 연결만 해주면 된다.

 

 

Tiling & Offset_ScrollSpeed

ScrollSpeed 변수가 추가된 셰이더이다.

 

 

Tiling & Offset_ScrollSpeed2

[Tiling And Offset] 노드에서 Offset은 Vector2 타입이라 [Vector 2] 노드를 만들었고 가장 처음 [Time] 노드도 만들었다.

 

[Fraction] 노드는 Time 값이 전달되는 중간에 소수점 이하의 값만 얻어오기 위해 넣는다. Time 값은 0~1 사이에서 계속 증가하다가 0으로 초기화되는 상황을 반복한다. 따라서 무한히 스크롤 되는 효과를 얻을 수 있다.

 

Speed 값은 [Fraction] 노드 전에 Time 값과 곱해지는데, 이후에 속도를 곱하면 0~1 값을 벗어나면서 스크롤의 Loop가 깨질 수 있다.

 

Tiling은 X축 하나만 들어가 있기 때문에 U 방향으로만 타일링이 된다.

 

 

ScrollOut

파티클 시스템에 의해 제어되는 셰이더이기 때문에 Time으로 제어하지 않고 Vertex Alpha로 제어한다. Color over Lifetime의 알파 값이 투명 -> 불투명, 즉 0 -> 1 값으로 변해야 한다.

 

 

ScrollOutStretch

Stretch 변수로 기울기를 얼마나 낮출지 값을 주고 Vertex Color 값과 합친다. Vertex Color 값은 -1~1로 함수를 바꿨고 -1~0 부분에서는 보이지 않는 부분이다.

같은 Stretch 변수 값으로 누운 기울기의 나머지를 Vertex Color를 [One Minus] 노드를 거친 역과 곱하고 위에 계산한 값과 [Add] 노드에서 합친다. 역을 곱하는 이유는 Vertex Color 탄생인 0일 때 1을 곱하고 Vertex Color 소멸인 1일 때 0을 곱하기위함이다. 나머지 기울기는 파티클 생성시에만 더해지고 사망시에는 더해지만 안되기 때문.

 

 

ScrollOutStretchFade

바로 전 ScrollOutStretch의 마지막에 FadeSide 프로세스를 [Multiply] 노드로 곱한 셰이더이다.

 

 


참고자료

 

아티스트를 위한 유니티 URP 셰이더 입문 - YES24

셰이더(Shader)를 HLSL(High Level Shader Language)로 다루고 싶은 아티스트를 위한 입문서다. 아티스트들의 눈높이에 맞추어 기초 그래픽스 이론과 셰이더 개념을 설명하고, 이를 유니티 엔진에서 활용할

www.yes24.com

 

728x90
반응형