본문 바로가기
유니티 최고/유니티 구현

[Unity] 유니티 URP를 이용한 화면 노이즈 효과 구현

by Lee_story_.. 2024. 8. 21.
728x90

 

게임을 구성하다보면 씬 전환이나, 카메라 전환시에 나타나는 화면을 구성해야하는 경우가 생깁니다. 

일반적인 ui나 영상, 그리고 이펙트 등 여러가지 방법으로 구성할 수 있는데,

 

그 중 이번글에서는!

많은 공포게임이나, 모니터 전환? 등의 상황에서 자주 사용하는 화면 노이즈 효과를 직접 구현해 보기로 하였습니다!

 

 

그럼 바로 시작!


먼저!

 

다양한 노이즈 화면들 중 어떤식으로 구성하면 좋을까에 대해서 생각해보았습니다.

 

저의 경우는 노이즈 효과의 경우 크게 2가지를 중점으로 진행하기로 하였고, 다음과 같습니다.

1. 화면의 지직거림

2. 화면의 줄무늬 또는 늘어짐의 효과들 

 

이런 화면의 경우에는 떠오르는 방법이 그리 많지 않았습니다. 

바로 다양한 이펙트와 머터리얼을 만들 수 있는 URP!

 


 

URP의 경우는 많은 머터리얼들과 이펙트, 질감 등을 효율적으로 표현하는데 사용되는 렌더링 파이프 라인입니다!

 

 

많은 기능들을 포함 하고 있지만, 

 

코드만 짜고있던 저에게는 쉽지않은것 같습니다...

 

 

그래도 이번기회에 한 번 공부한다고 생각하고 사용해보았습니다.

 

유니버설 렌더 파이프라인 사용 - Unity 매뉴얼

유니버설 렌더 파이프라인(URP)은 Unity에서 제작한 사전 빌드된 스크립터블 렌더 파이프라인입니다. URP는 아티스트 친화적 워크플로를 통해 모바일, 고사양 콘솔, PC 등 다양한 플랫폼에서 최적화

docs.unity3d.com

 


 

그럼 이제

URP그래프를 활용해서 노이즈 화면을 구성해 보겠습니다.

 

먼저 Unlit shader Graph를 생성해 줍시다.

그리고 UI 캔버스를 통해 나타내 주기위해, 우측상단의 settings에서 Sprite Unlit 설정해 주었습니다.

 

 

그리고 기본적으로 나타내줄 텍스쳐를 아래처럼 입력해 주었습니다. 

 

 

 

그 다음 치직 거림을 만들어 주기위한 노드를 설치해야하는데,

기본적으로 Noise에 대한 노드는 URP에서 Simple과 Gradient, 2가지를 제공해줍니다.

 

 

 

둘의 차이는 노이즈 생성 방법으로,

 

Simple의 경우에는

Value Noise ==>> 무작위 값들을 생성하고 그 사이를 보간하여 노이즈를 생성하여 좀 더 부드러운 결과를 생성

 

Gradient

Perlin Noise ==>> 자연계의 불규칙한 노이즈를 컴퓨터 그래픽스로 표현한 것으로 특정 함수를 사용한다고 합니다.

 

.....

간단하게! 

Simple은 말 그대로 간단하고 효율적으로 노이즈를 생성!

Gradient는 거기서 좀더 자연스러운 노이즈 결과를 생성 한다고 합니다.

 

 

이 Noise 노드들을 이용해서 가장 간단한 노이즈 효과를 구성해줍시다.

 

시간에 따라 회전하는 노이즈를 생성해주고, 거기에 그라데이션 색을 입혀 만들어 주었습니다. 

이렇게만 만들어 주면, 아래처럼 일반적인 노이즈 화면을 구성할 수 있습니다 ㅎ

 

 

 

여기서 조금 더 업그레이드해서 

만약 노이즈 효과를 특정 텍스쳐에 적용시키고 싶다면!

 

먼저 아래처럼 구성해줍시다!

 

==>> 좌우 치직 거림을 표현하기 위한 구성으로 Multiply의 값이 클수록 텍스쳐를 옆으로 늘려버림!

 

각각 값을 1 , 5 설정한 텍스쳐

 

여기서 추가적으로 치직거림을 위한 번쩍임을 추가

 

 

최종적으로는 아래와 같은 형태로 묶이게 됩니다.

 

 

 

여기까지가 끝!

이제 이 URP 그래프를 우클릭하여 머터리얼을 하나 생성해준뒤

 

 

 

씬에 캔버스를 하나 생성해 주고, 그 자식에 Raw Image 생성

머터리얼 부분에 방금생성한 노이즈 머터리얼을 넣어주면!

 

음.... 저는 만족!

 

 

 

이번글에서는 URP 그래프를 이용해서 노이즈 효과들을 구현해 보았는데, 

생각보다 막 어렵지는 않았던것 같습니다. 

 

그렇다고 막 완벽하진 않았지만, 진행중인 게임에 적용시켜 보니 나쁘지 않은 것 같기도?

당장 진행중인 일들만 끝나면, URP쪽도 한번 공부해봐야할 것 같습니다..ㅠ

 

 

 

 

 

 

 

 

 

 

 

 

댓글