안녕 개발형제들! 오늘은 포그에 대해 적어보려고해..!! 

우리 게임은 매일 포탈을 타고 이곳저곳 다니면서 재료를 구해서 장사하는 게임이야! 그래서 다양한 맵이 존재해
다양한 맵환경을 만드는게 재미있지만 또 힘들기도 해서 공통적으로 쓸 수 있는 시각 효과들을 많이 만들어두려고 하고 있어!

그중에 하나 만들어본 포그효과를 적어볼게.
우선 나는 유니티 URP를 사용중이야.. 아쉽게도 HDRP에 있는 볼류매트릭 포그는 사용 할 수 없어 ㅠㅠ(최신버전은 지원할지도..?) 어쩃든 그래서 그냥 야메로 만들어보았어...

우선 결과물부터 보면 이런 느낌이야

a17d2cad2f1b782a99595d5fe291afe464d447828309697166a5e208d985b9440fae15ebdb0f1018bf269d6e935ed850284316a182ed421eac14ea425eeac8b3c7eb

(막상 짤 만들고 보니까 좀 무섭네 ㅋㅋ 무서운 맵 만들때 참고해야겠다.)

구현 방법은 간단해!

1. 안개 쉐이더를 만든다
2. 파티클로 뿌린다.

생각해본 *핵심* 요소는 두 가지 인데, 하나는 쉐이더가. 하나는 파티클이 해결 해 줄 거야.


24b0d121e09c28a8699fe8b115ef046f564e919ca1




쉐이더부터 설명하자면 이런 그림이야. 아주 간단하지? Unlit을 기본으로 하고, 여기서 다른 건 중요하지 않고,
경계면(oqaue와 닿는 부분)에 알파 값 fade 주기..!! 이게 첫 번째 *핵심*이야

보통 안개 효과는 경계가 생기면 어색해지잖아? 그래서 불투명 오브젝트와 닿는 면에 fade를 주는거야! 간단한 빼기로 구현 할 수 있어. 
Scene Depth에서 렌더러 자체의 뎁스 값(Screen Position 노드의 A값)을 빼주고 보간을 통해서,  페이드 효과를 줄 수 있었어.
(이걸 반대로 하면(결과 값에 one minus) 물 쉐이더 만들 때 포말 효과를 만들 수 있음 ㅋㅋ)


아 그리고 나는 파티클을 이용해서 뿌려주려고 버텍스컬러를 곱해줬어, 이렇게 해야 파티클 컬러와 쓰까져!
여기까지가 쉐이더 끝.



24b0d121e09c28a8699fe8b115ef0468e7aae3ba


다음은 파티클 렌더러 설정에서 렌더 기준을 View포인트로 잡았어. 이건 빌보드 렌더링이랑 똑같은 효과를 주거든. 이게 두 번째 *핵심*이야
물론 쉐이더에서 만들어도 되지만 난 파티클 쓸 거라 여기서 설정했어!

나머지는 색깔 넣고 모양 정하고~ 입맛에 맞게 조리하면 끗!



24b0d121e09c28a8699fe8b115ef046c64f72c479c



이미지는 걍 큼직하게 할라고 요런식 으로 포토샵에서 브러쉬로 그렸어 ㅎㅎ 어차피 연하게 여러 번 겹칠 거라서 대충 그려도 괜찮더라ㅋㅋ.


이 방식은 볼류매트릭포그처럼 레이마칭 기반의
그래픽 구현보다 예쁘거나, 자연스럽거나, 빛을 산란 시켜주거나, 자연스럽거나.. 그런 건 없지만...(칙쇼 ㅋㅋ 치명적이네 ㅋㅋ)
대신..성능은 훨씬 잘 나오는 것 같아.

또 캐릭터가 포그 평면을 통과할때 약~간의 티가 날 수는 있어. 근데 이건 중첩도 올리고 투명도 낮추니까 괜찮더라 ㅎㅎ


24b0d121e09c28a8699fe8b115ef046c64f9294b9fe9



24b0d121e09c28a8699fe8b115ef046c69f2294c94e9


a15714ab041eb360be3335625683746f01534520d6a7ef89d63067f19812cd6e4ff6fe8e4a20a2ebb4276d13c7b91f



a17d2cad2f1b782a99595d5fe291afe464d447828309697166a5e208d985b9440fae15ebdb0f1018bf269d6e935ed8515fa9d548c56a97161c57d495e0f12a1d69c7



다양한 맵에 적용한 이미지 몇 장 올리고 마무리할게! 
이 외에도 다양한 텍스쳐나 컬러로 많은 표현을 할 수 있어! 예를들면 역병구름? 아니면 역병구름 같은?역병 구름 이라던지...역병 구름 같은 역병 구름...