Unity/Shader

이펙트 쉐이더) 기본세팅

Jade Kim 2023. 12. 2. 23:04

 

 

정리 겸 이펙트용 쉐이더 작성에 관한 포스트를 쭉 써볼 생각입니다.

 

이것은 앞으로 다루게 될 모든 이펙트용 쉐이더의 기반이 되는 기본 쉐이더입니다. 

 

 

URP를 기반으로 Amplify Shader Editor를 사용합니다.

https://assetstore.unity.com/packages/tools/visual-scripting/amplify-shader-editor-68570

 

Amplify Shader Editor | 비주얼 스크립팅 | Unity Asset Store

Get the Amplify Shader Editor package from Amplify Creations and speed up your game development process. Find this & other 비주얼 스크립팅 options on the Unity Asset Store.

assetstore.unity.com

 

 

언리얼과 비슷하기도 하고, 필요 없는 옵션들을 상당히 깔끔하게 정리해주는 기능이 있습니다.

 

튜토리얼도 많아 쉐이더그래프가 나온 이후에도 현업에 여전히 즐겨 사용되는 툴입니다. 

 

 

 

URP를 사용하니 Shader Type을 Universal, 라이팅을 따로 사용하지 않으니 Unlit으로 선택합니다.

 

 

Surface는 Opaque에서 Transparent로 변경합니다.

 

Two Sided는 일단 Off로 해줍니다. 양면 렌더링을 해주는 옵션입니다.

 

원래 Built-in에서는 저걸 옵션으로 빼서 설정할 수 있었는데 왜인지 모르게 URP 탬플릿에서는 해당 기능이 빠졌으므로 차후에 수동으로 세팅하겠습니다.

 

Cast Shadows, Recieve Shadows 옵션은 둘다 꺼줍니다.

 

 

Shader Model은 따로 커스텀 데이터를 받아올 것이 아니므로 3.0 기본값으로 둡니다(커스텀 데이터를 받아온다면 채널 개수에 따라 4.0으로 설정해주셔야 합니다).

 

 

Blend_Mode라는 float1을 만듭니다. 기본값은 10으로 두겠습니다.

 

 

Auto-Register 옵션을 체크하고 Enum을 체크해 선택을 받아와 다른 값을 출력하게 만듭니다. Enums의 옵션에 Blend-10, Additive-1을 입력합니다.

 

 

이후 Blend Mode 설정란에 기본값을 Alpha Blended로 설정합니다.

이후 빨간 네모칸 친 곳에만 Blend_Mode를 연결해주면 머테리얼에서 Additive와 Blended를 설정할 수 있습니다.

 

 

마찬가지로 Cull_Mode라는 float1을 하나 만듭니다.

 

 

Blend Mode와 같이 선택 가능한 옵션들을 입력해 세팅합니다.

 

 

이런식으로 값 입력에 따라 다른 옵션을 출력하는 판별식을 짭니다. 이제 A == B에 결과값들을 넣어보겠습니다.

 

 

 

1번은 flont에 1, back에 0을 출력합니다. 2번은 front에 0, back에 1을 출력합니다. 3번은 front든 back이든 모두 1을 출력합니다. 해당 값들을 제자리에 넣어줍니다.

 

 

완성된 수식을 전부 더하고(어차피 셋중의 하나의 옵션만 최종 결과값으로 나오니 1 이상의 값이 나오지 않습니다) CullAmount라는 Local Var로 등록합니다.

 

 

이런식으로 노드를 마저 짜주시고 CullAmount는 알파 쪽에 곱해주시면 되겠습니다.

 

(Tint는 HDR옵션을 켜주시는게 편의성 면에선 낫습니다)

 

 

 

 

해당 쉐이더로 머테리얼을 만들어 확인해보면 정상 작동합니다.

 

Blend_Mode로 Blended와 Additive를 조절할 수 있고, Cull_Mode로 컬링 옵션을 조절할 수 있습니다.

 

 

 

 

 

 

 

이것으로 이펙트용 쉐이더 기본 세팅을 마칩니다.

 

이후 포스트에서는 현재 만든 쉐이더를 기반으로 다른 기능들을 추가해보겠습니다.