유니티 파티클이 작아질수록 깜빡거리는 문제와 해결 방법
유니티로 작업하다 보면 파티클 시스템을 활용해서 별빛이나 먼지 같은 작은 요소들을 표현하는 경우가 많다. 특히 우주 공간에 별이 반짝이는 느낌을 내고 싶을 때 파티클을 많이 쓰는데, 막상 설정을 조금만 잘못하면 화면에서 파티클이 작아질수록 깜빡거리는 현상을 경험하게 된다. 나도 이 문제 때문에 한참 헤맸고, 검색하다가 카페 글과 여러 의견을 통해 정리한 내용을 공유해본다.

문제의 시작 – 파티클이 깜빡거린다?
내가 원한 건 단순했다. 멀리서 다가오는 별빛 같은 파티클을 연출하고 싶었다. Particle System > Renderer > Min/Max Particle Size 값을 0.01 이하로 설정하면 딱 원하는 느낌이 나왔다. 작고 반짝이는 별이 화면에 흩어져서 진짜 우주 같은 분위기가 나더라. 그런데 문제는 그 값을 낮추면 낮출수록 파티클이 화면에서 깜빡거리는 현상이 생기는 거였다. 마치 GPU가 그려줄 수 없는 크기를 억지로 그리려다 보니 프레임마다 잡음처럼 반짝거리는 느낌이었다.
왜 0.01이 한계일까?
카페에서 본 설명이 제일 설득력이 있었다. 유니티의 기본 단위는 1m이고, 스프라이트 Import Settings에서 Pixel Per Unit(PPU)을 100으로 맞추면 100픽셀이 1m가 된다. 즉 1픽셀은 1cm 정도라는 말이다. 이 기준으로 봤을 때, 파티클 사이즈를 0.01로 내리면 사실상 1픽셀 단위보다 더 작은 크기를 요구하는 셈이다. GPU 입장에서는 픽셀보다 작은 걸 어떻게 그려야 할지 애매해지니까 결과적으로 깜빡거림이 발생한다는 거다.
결국 0.01은 단순히 숫자상의 값이 아니라, 유니티 단위와 픽셀 렌더링이 맞아떨어지는 최소 안정값이라고 볼 수 있다. 그 이하로 내리면 단위 에러처럼 보이는 현상이 나타나는 것도 당연한 셈이다.
단순 해결책 – 무조건 0.01 이상
첫 번째로 할 수 있는 건 파티클 크기를 0.01 밑으로 억지로 내리지 않는 거다. 0.01 이상에서만 쓰면 GPU가 안정적으로 그려주니까 깜빡임이 줄어든다. 만약 더 작은 별처럼 보이고 싶다면, 파티클 사이즈를 줄이는 대신 텍스처 자체를 작은 걸 쓰는 방법이 있다. 예를 들어 별 이미지를 8\~16px 정도로 아주 작게 만들고, 파티클은 0.01 크기로 유지하면 된다. 화면에서는 충분히 작은 별처럼 보이지만, 실제 렌더링은 안정적으로 돌아간다.
렌더링 모드 바꿔보기
두 번째 방법은 파티클 렌더링 방식을 바꾸는 거다. 기본적으로 Particle Renderer는 Billboard 모드를 많이 쓰는데, 이게 화면에 Quad를 띄우는 방식이라 아주 작을 때 픽셀 단위에서 흔들림이 심하다. 이럴 때는 Billboard 대신 Mesh나 Stretched Billboard를 쓰면 플리커 현상이 훨씬 줄어든다. 메쉬로 교체한다고 성능이 크게 떨어지지도 않기 때문에, 퀄리티를 중요하게 본다면 이 방법이 꽤 괜찮다.
카메라와 렌더 품질 세팅
세 번째 방법은 카메라와 렌더링 품질을 올리는 거다. Render Scale을 기본 1.0에서 1.25~1.5 정도로 올리면 내부 해상도가 올라가서 작은 파티클도 더 세밀하게 그려진다. 또 MSAA 같은 안티에일리어싱을 적용하면 별빛이 깜빡이지 않고 부드럽게 유지된다. PC나 콘솔처럼 성능이 여유 있는 환경에서는 이게 효과적이다. 물론 모바일처럼 성능이 빠듯한 환경에서는 Render Scale이나 AA를 과하게 적용하면 프레임이 확 떨어질 수 있으니 상황에 맞게 조절해야 한다.
성능 우선 vs 퀄리티 우선
여기서 중요한 건 프로젝트 성격에 따라 우선순위를 다르게 가져가야 한다는 점이다. 모바일이나 저사양 환경에서는 성능이 제일 중요하다. 이럴 땐 파티클 크기를 0.01 이상으로 유지하면서 아주 작은 텍스처를 쓰고, Billboard 모드를 유지하는 게 좋다. 대신 Min/Max Size를 0.01~0.03 사이로 랜덤하게 줘서 깜빡임 패턴이 퍼지도록 하면 훨씬 안정적이다.
반대로 PC나 콘솔에서 시네마틱 퀄리티가 목표라면 Mesh 렌더링으로 바꾸고, Render Scale과 MSAA를 적극적으로 활용하는 게 낫다. 여기에 Bloom 같은 후처리를 살짝 얹으면 별빛이 더 부드럽고 자연스럽게 표현된다.
공통적으로 지켜야 할 원칙
성능이든 퀄리티든 공통적으로 꼭 지켜야 할 원칙은 있다.
첫째, 파티클 사이즈는 절대 0.01 밑으로 내리지 말 것.
둘째, 카메라 Near/Far 클립을 너무 넓게 잡지 말 것. 클리핑 범위가 과도하면 정밀도 손실이 생겨서 플리커가 더 심해진다.
셋째, 필요하다면 Soft Particle 옵션을 켜서 Z-Fighting 문제를 완화할 것.
넷째, 멀리 있는 별은 카메라 거리 기반 LOD로 수량과 크기를 동적으로 조정하는 게 좋다.
내가 내린 결론
처음엔 왜 0.01 밑으로만 내려가면 문제가 생기는지 이해가 안 됐는데, 결국 유니티의 단위 시스템과 GPU 렌더링 한계가 맞물린 문제였다. 해결 방법은 생각보다 단순하다. 크기를 억지로 줄이지 말고, 작은 텍스처나 렌더링 방식 변경, 카메라 세팅을 활용해서 원하는 비주얼을 만드는 거다.
결론적으로 나는 모바일 프로젝트에서는 작은 별 텍스처를 써서 0.01 이상에서 안정적으로 표현하는 방식을 쓰고 있고, PC 프로젝트에서는 Mesh 렌더링과 Bloom을 곁들여서 시네마틱하게 별빛을 표현한다. 상황마다 선택지가 달라지긴 하지만, 공통적으로 0.01 아래로는 절대 안 내려가는 게 핵심이다.
마무리
파티클을 작게 만들수록 반짝거리며 깨지는 문제가 왜 생기는지, 그리고 어떻게 해결할 수 있는지 정리해봤다. 나처럼 이 문제 때문에 골치 아픈 사람들에게 조금이나마 도움이 됐으면 한다.
'자연과학, IT, 공학 > IT, 프로그래밍' 카테고리의 다른 글
| 유니티 어드벤처 게임 개발 중 겪은 입력 처리 오류와 해결 과정 (6) | 2025.08.17 |
|---|---|
| 유니티에서 대각선 이동 속도 문제 해결하기 (6) | 2025.08.17 |
| UI 캔버스 크기, 왜 이렇게 큰 걸까? (6) | 2025.08.17 |
| 유니티 완전 초보가 헷갈리는 부분 정리해봄 (6) | 2025.08.17 |
| Unity에서 한글 TMP 폰트 제대로 만드는 방법 총정리 (4) | 2025.08.17 |