최근 작업하면서 쉐이더를 파티클에 적용하던 중 문제가 생겼다. 대부분의 경우 파티클에 얹으면 예쁘게 잘 나오지만, 커스텀 쉐이더의 경우 종종 설정에 따라 작동이 안할 수도 있기 때문이다.
대부분의 셰이더가 적용된 매터리얼의 경우 이렇게 예쁘게 나오지만, 종종 파티클로 인식을 하지 못할 경우 체크해야 할 게 몇가지 있어 기록을 위해 작성해봤다.
Q. 작업 환경이 다를 경우
만약 UI Image 컴포넌트를 사용하는 캔버스를 사용 중이라면 파티클 시스템과 랜더링 지원 기반이 다르므로 사용에 제한이 가는 옵션들이 있다. 예를들면 파티클 시스템은 버텍스를 기반으로 작동하고 마스킹을 위해 Sprite Mask 를 사용해야 하는 반면, Image 컴포넌트를 사용 중이라면 Sprite Mask 만 지원하는 파티클 시스템의 경우 출력은 가능하지만 마스킹 기능이 지원되지 않는다.
A. 이럴 땐 외부 스크립트를 불러와 사용할 수 있다. UI Particles 컴포넌트를 통해 UI와 동일하게 기능하도록 해주기 때문에 Image 컴포넌트 안에서도 파티클의 마스크 기능이 적용된다. > 관련 사이트 참조 : https://github.com/mob-sakai/ParticleEffectForUGUI
GitHub - mob-sakai/ParticleEffectForUGUI: Render particle effect in UnityUI(uGUI). Maskable, sortable, and no extra Camera/Rende
Render particle effect in UnityUI(uGUI). Maskable, sortable, and no extra Camera/RenderTexture/Canvas. - GitHub - mob-sakai/ParticleEffectForUGUI: Render particle effect in UnityUI(uGUI). Maskable,...
github.com
Q. 셰이더 전처리 기반이 파티클 시스템의 전처리 기반과 다를 경우
A. 내가 겪은 문제이자 이 글을 쓰게 만든 원인이다. 파티클 자체가 나오지 않는 경우엔 출력 자체에 문제가 있는 경우가 원인일 수도 있다. 작업한 쉐이더 코드 안에 파티클이 지원하지 않는 코드가 들어있지는 않은지 확인해보자. 아래는 파티클 시스템에서 필요로 하지 않는 항목들이다. (나는 주로 UI 캔버스에서 작업했기 때문에 셰이더도 UI 와 같은 2D 이미지 셰이더의 예시가 많을 수 있다)
- Clip 관련 구문 > 마스크 기능을 담당하는 코드가 있을 경우 sprite 마스크를 지원하는 파티클 시스템과 충돌해서 출력이 안될 수 있다. 내 경우 아래 코드를 지우니 정상적인 출력이 가능해졌다.
- 그 외에도 랜더 Queue가 올바른지, 알파 블랜딩 설정이 제대로 되어 있는지 확인해보자
'개발 > 유니티' 카테고리의 다른 글
구글 Image FX로 게임 아트 UI 쉽게 제작하기 (0) | 2025.03.09 |
---|---|
흑백 셰이더를 만들어보자(feat. dot 함수에 관하여) (0) | 2023.05.31 |