[Amplify] Fire Shader 불 쉐이더 만들기

 

테스트 버전
Unity 2022.1.24f1 / AmplifyShaderEditor 1.9.1.2

기본적으로 노드가 비슷하기 때문에 유니티의 기본 Shader Graph에서도 만들 수 있음.

 

 

#. 불 쉐이더를 만들자!

트위터에서 아래의 글을 보고 Amplify로 만들어보기로 결정.

 

 

 

#. 최종 아웃풋 미리보기

URP Unlit Opaque AlphaTest로 작성함.

 

 

 

일렁거리는 Dissolve만들기

우선 SmoothStep부터 만들어준다. 

 

Noise Generator로 위쪽으로 Panning되는 노이즈 하나 만들어주자.

Noise 설정은 Simple, Scale 35, 0-1Range 체크. 

 

이제 이 두개의 노드를 step으로 연결해주자.

좀 더 불꽃처럼 일렁거리는 느낌을 주기위해서는 UV에 랜덤성을 줘야하는데,

Normal을 UV에 작은값으로 곱해주면 자연스러운 Distortion이 더해진다.

사용된 노멀맵은 EffectTextureMaker 를 사용함. (상업으로 이용해도 된다고 함)

Noise Generator의 모양과 노멀맵 모양에 따라서 여러 불꽃모양이 나올 수 있으니 여러개를 넣어가면서 테스트하면 좋다.

 

만들어진 Noise는 Local Var로 등록하자.

 

 

 

#. 경계면 생성하기

경계면에 해당하는 부분을 생성해야하는데,

두개의 Dissolve를 만들고, Dissolve 값을 약간 다르게 준 다음 Subtract로 빼주기만 하면 된다.

Remap의 MinNew에 해당하는 Smoothness 값은 동일하게 가져가고

Dissolve 값만 살짝 다르기 때문에 LineWidth라는 변수를 두고, Dissolve에서 값을 빼도록 했다. 

 

 

#. 색상 곱해주기

경계 면과 아랫부분에 각각 색상을 곱해주고, Add로 하나로 합쳐준다.

Glow 효과를 위해서 별도로 변수를 만들어주고 최종 Color 값을 곱해준다.

쉐이더를 Opaque로 설정했기 때문에 AlphaClipThreshold는 별도로 0.01을 넣어줬다.

백페이스 컬링에서 TwoSided도 체크하는 것 잊지말자.

 

 

#. 완성

Dissolve값이 있기 때문에 디졸버로도 사용가능하다.

 

 

 

댓글

Designed by JB FACTORY