본문 바로가기
Computer Graphics/ShaderLab, HLSL

[ShaderLab] UV, 불 이펙트

by 진현개발일기 2024. 2. 27.

■ 기본적인 세팅

 

 

불 텍스처를 오브젝에 그대로 씌우기만한다면 검은색 배경화면이 분리되지 않은 채 그대로 적용이 됨. 이를 제거하기 위해 

RenderType은 Transparent로 두고 alpha:fade 키워드를 스니핏에 추가해준다. 또한 빛의 영향을 받지 않고 텍스처 본연의 색깔을 나타내기 위해 o.Albedo = c.rgb 코드를 주석처리한 뒤 o.Emission = c.rgb를 추가해줬다.

이를 통해 움직이지 않는 불 이미지를 생성했다.

 

기본 불 이미지를 적용해줄 뿐만이 아니라 불을 역동적으로 표현 하기 위해 불기둥 이미지를 적용 한 뒤 

불기둥 이미지의 uv를 유니티 내장된 _Time 변수(시간)에 따라 조절해주는 코드를 추가해줬다.

 

▼ 결과물

 

 

불을 더 사실적으로 표현하기 위해 저자께서 올려주신 리소스 중 노이즈를 추가했다.

 

그리고 방금 추가한 두번째 텍스처 (d)의  uv 중 v를 시간에 따라 조절해주도록 하고 노이즈의 rgb값에 wrinkle(주름) 변수 값을 곱해줌으로써 불의 주름(?).. 아지랑이?의 강도를 조절해주도록 하였다. 

마지막으로 최종 결과물 c (첫번째 텍스처)의 uv값이 0~1 사이의 범위를 넘어가지 않도록 하기 위해 찾아보니 saturate라는 함수가 있었다. 이를 이용해 0~1사이의 값을 넘어가지 않도록 제한해줬다.

 

▼ 최종 결과물

728x90