Unity의 수채화 화풍 포스트 이펙트

3907 단어 GLSLShaderUnity

이번에는 아래의 어드벤트 캘린더에도 게시했습니다.



· ARKit Advent Calendar 2018 : Unity와 ARkit로 전뇌콜 앱을 만든 이야기
htps : // 코 m / 아우 소메 / ms / 5b8 예 2b62c0076fbc569

이전 Twitter에서 화제가 되었던 UE4에 의한 수채화 화풍 포스트 이펙트



를 Unity로 만들어 보았습니다.


아래 트위터에 게시한 동영상



■ OnRenderImage를 사용합니다.



인수로서 렌더링 된 결과를 RenderTexture로 받을 수 있으므로, 그에 대해 셰이더로 필터를 걸는 것으로 이펙트를 걸 수 있다.
OnRenderImage 함수 내에서Graphics.Blit(renderTarget1, renderTarget2, uvShiftMaterial);
하면 렌더 타겟에 셰이더를 할당할 수 있습니다.

인수에 건네주는 renderTarget과 머티리얼을 몇개인가 미리 작성해 두어,
여러 번 반복해서 머티리얼과 renderTarget을 교환해 나가는 것으로 그림을 만들어 갑니다.
필요한 경우, 그 동안 3D 모델의 재질도 교체합니다.

판화로 색을 거듭해 가는 것 같은 작업이군요!

1. 베이스가 되는 렌더링 결과




Unity의 StandardShader와 아웃라인용 머티리얼로 아웃라인을 노멀 방향으로 밀어낸 상태.

2-1. 외곽선만 렌더링 결과




일부 머티리얼을 교체하여 윤곽선만 추출한 상태.

2-2 윤곽선에 노이즈 필터를 적용한 렌더링 결과




이전 윤곽선의 렌더링 결과에
・노이즈 텍스처로 마스크
・노멀 맵으로 왜곡
추가했다.

아래 단편 셰이더의 설명입니다.



//일반 맵으로 왜곡float4 n = tex2D(_ShiftNormalTex, i.uv * 4. ); //4は歪みのサイズ
float4 col = tex2D(_MainTex, i.uv + n.xy * 0.03 ); //0.03はstrength


3. 디퓨즈 렌더링 결과




디퓨즈에 색을 붙인 것만.

4. 텍스처 컬러만 렌더링 결과




텍스처 컬러만을 렌더링한 것.

5. 하이라이트 전용 렌더링 결과




하이라이트만을 렌더링한 것.

6. 그림자 마스크만 렌더링 결과




그림자를 렌더링한 후 노이즈를 더한 것.


1~6 모두를 합성한 렌더링 결과





아웃라인 + 디퓨즈 + 컬러 + 하이라이트 + 그림자
을 모두 합성한 결과입니다.
비유한다면, 분위기적으로는 Photoshop의 레이어 모드를 변경하거나, 필터를 걸거나・・・라고 하는 식으로 합성해 나가는 느낌입니다.

마지막으로



컨디션 나쁘고 잡담한 기사가 되어 죄송합니다・・・

좋은 웹페이지 즐겨찾기