본문 바로가기
유니티 엔진

Making the Post Effect : Blur - 3 (Post Effect 만들기 기본 : 블러 만들기 3 )

by 대마왕J 2015. 12. 28.

이제 블러를 세로로 한 번 더 해서 완성해 보죠.

 

이전의 셰이더도 사실 세로로 블러를 할 수 있도록 준비되어 있었습니다.

 

이전의 가로 블러 셰이더에서

 

 

세로 블러 셰이더를 만들어 줍니다.

 

 

 

위의 저 부분만 바꿔주면 세로 버전의 블러 shader가 되는 것이죠 잇힝

 

 

 

이렇게 하고 나니까

... 다시 한 번 버퍼 연산이 필요하겠죠?

 

버퍼 연산은 이렇게 흘러갑니다.

 

0. 임시버퍼를 생성합니다. 다운샘플링 버퍼와 가로 블러 버퍼. 크기를 줄여서 잡습니다.

1. 다운샘플링 버퍼에다가 소스를 랜더링합니다. 근데 1/n 크기로 잡혀 있으므로 알아서 다운샘플링 됩니다. 

2. 가로 블러 버퍼를 생성하고 거기다가 다운샘플링한 버퍼를 넣는데, 가로 블러 셰이더를 적용해서 넣습니다.

3. 가로 블러가 적용된 버퍼를 목적지 버퍼에 넣는데, 세로 블러 셰이더로 해서 넣습니다.

4. 생성된 두 개의 임시버퍼 (다운샘플링 버퍼, 가로 블러 버퍼) 를 해제해 줍니다.

 

 

전체 코드는 다음과 같습니다.

 

 

 

 

그럼 여기서 보면. 이렇게 됩니다.

 

0. 임시버퍼를 생성합니다. 다운샘플링 버퍼와 가로 블러 버퍼. 크기를 줄여서 잡습니다.

RenderTexture downsampling = RenderTexture.GetTemporary(source.width/4, source.height/4);
RenderTexture vertical = RenderTexture.GetTemporary(source.width/4, source.height/4);

 

1. 다운샘플링 버퍼에다가 소스를 랜더링합니다. 근데 1/n 크기로 잡혀 있으므로 알아서 다운샘플링 됩니다. 

Graphics.Blit (source, downsampling);

 

2. 가로 블러 버퍼를 생성하고 거기다가 다운샘플링한 버퍼를 넣는데, 가로 블러 셰이더를 적용해서 넣습니다.

Graphics.Blit (downsampling, vertical, material2);

 

3. 가로 블러가 적용된 버퍼를 목적지 버퍼에 넣는데, 세로 블러 셰이더로 해서 넣습니다.

Graphics.Blit (vertical, destination, material3);

 

4. 생성된 두 개의 임시 버퍼 (다운샘플링 버퍼, 가로 블러 버퍼) 를 해제해 줍니다.

RenderTexture.ReleaseTemporary (downsampling);
  RenderTexture.ReleaseTemporary (vertical);

 

 

 

간단하죠???????????

쉽잖아요

아니라면 뭐 어쩔 수 없고. 이 글은 쉽게는 쓰지만 사실 좀 대충 쓰긴 하는 거거든요. 강의용이나 튜터리얼 용이라면 더 그림이나 자료도 많이 넣어야지만, 편하게 설명하는 글이니까 뭐.

 

 

하여간 이렇게 가로 세로 블러를 주면

 

 

 

 

와 이케 됩니다. 와와와

 

드디어 블러가 되었죠.

 

이걸 이터레인션을 줘서 전체 과정을 한 번 더 반복하면 훨씬 더 퀄리티 높은 블러가 되는 것입니다.

하면 할수록 퀄리티는 높아지지만 무거워진다는게 문제긴 하지만 ㅎㅎ

 

그럼 이렇게 블러가 나왔으니 ..

 

다음에 이걸 응용할 곳은 또 무궁무진하단 말씀 ㅋㅋㅋㅋㅋ

 

 

 

 

반응형

댓글