본문 바로가기
유니티/shaderGraph

유니티 셰이더 그래프 예제 06 외곡효과 구현, Unity shader graph distortion

by NGVI 2021. 4. 20.

유니티 셰이더 그래프 예제 06 외곡효과 구현, Unity shader graph distortion

외곡 효과를 만들어 보겠습니다.

 

특정한 면 뒤로 보이는 이미지 외곡되는 효과입니다.

이를 위해서는 선제적으로 기존 화면이 한번 랜더링이 되어야 하고, 이것을 가져다 써야 합니다.

 

요것이 되기위해서넌 URP 기준으로(다른 것도 비슷할듯)

몇가지 사전 처리가 되어 있어야 합니다.

먼저 mainCamarar가 Opaque Texture 허용이 되어 있나 확인해주세요.

 

mainCamarar가 Opaque Texture의 확인

다음으로

해당 파일들

URP 설정파일들의

Opaque Texture의 확인

Opaque Texture의 확인이 되야 합니다.

 

요게 되야 우리는 사전에 그려놓은 화면을 참조할 수 있는 조건이 됩니다.

 

 

준비가 되었으니,

Lit Shader Graph를 하나 생성, 이름은 적당히 해주세요

 

Graph Inspector설정

설정참고

surface를 Transparet로 설정

-그릴 객체는 사전화면에 찍히지 않고, 투영시킬 화면만 그릴꺼기 때문에

 

일단 스크린을 얻어와서 그냥 뿌리는 것부터

설정참조 01

해당 픽셀에 해당하는 스크릭 uv와 scene color을 참조해서 base 칼라 넣습니다.

 

실행결과

먼가 파랏 빛이 돌지만, 일단 이번 주제에서 중요한 점은 아니니까 적당히 넘어가 주시고,

일단 화면이 나의 객체이 입혀졌습니다.

 

이번에는 외곡 시킬수 있는 UV 움직임을 만들어 봅니다.

외곡 움직임을 만들 노드들

시간을 이용해 타일링에 움직임을 주고, 그것 다시 Twirl 노드에 연결시켜 회전 움직임을 만들어 냅니다.

 

Gradient Noise를 작은 값으로  Scale 1정도로 생성시켜 uv에 위에서 생성한 값을 넣으면 회전하는 이미지가 됩니다.

 

해당 값을 Remap으로 -1~1 -> 0.2~2로 범위를 축소하고 Fresnel effest를 Power 0.25정도의 작은값으로 생성시켜 곱합니다. 

우리가 필요한건 중앙에 수치가 높아야 하므로 반전시키고(One Minus노드사용), 제곱시켜 각 값들의 차이를 만들어 냅니다.

 

Screen position에 위의 작업물을 더합니다.

위의 작업물을 더하여 출력시킨다.

결과물

결과물

적당히 동작되고 있습니다.

 

전체노드 정보

적당히 외곡효과를만들어 보았습니다.

작업들에 도움이 되셨으면 합니다.

 

감사합니다.

댓글