티스토리 뷰
이전 포스트 ([Image Effect] 블러(Blur) 이미지 효과- 02 Trail Renderer 모션벡터 획득 (tistory.com))에
이어 진행됩니다.
이번 포스트에선 아래와 같이 모션벡터를 담는 텍스쳐를 이미지 이펙트로 활용하는 방법에 대해 다뤄 봅니다.
우선 제가 사용하는 이미지 이펙트의 혼합 같은 경우, 정석적인 방법이 아닌 그저 제가 아는 지식의 한계가 이모양이라 이렇게 사용한다는 점 양해를 먼저 구합니다. (다른 방법이 있다면 저 좀 알려주세요..ㅠ)
본론으로 들어가, 제가 이미지 이펙트를 사용할 때는 아래와 같은 코드를 이용합니다.
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
[ExecuteInEditMode]
[ImageEffectAllowedInSceneView]
// 다양한 이미지 효과를 혼합해서 사용하는 스크립트다.
public class CustomImageEffects : MonoBehaviour
{
// EffectDesc는 이미지 효과의 Description을 담는다.
[Serializable]
public class EffectDesc
{
public Material mat;
public bool isActive = true;
}
public List<EffectDesc> imageEffects = new List();
public EffectDesc FindEffect(string matName)
{
return imageEffects.FirstOrDefault(x => x.mat.name == matName);
}
// RenderImage함수를 활용해 EffectDesc에 있는 마테리얼 쉐이더 패스에 씬 텍스쳐를 넘긴다.
[ImageEffectOpaque]
private void OnRenderImage(RenderTexture src, RenderTexture dest)
{
RenderTexture[] textures = new RenderTexture[imageEffects.Count + 1];
if (imageEffects.Count == 0)
{
Graphics.Blit(src, dest);
return;
}
var currentSource = textures[0] = src;
for (var i = 1; i < textures.Length; i++)
{
textures[i] = RenderTexture.GetTemporary(dest.descriptor);
}
var currentDest = dest;
// 현재 씬 Texture를 여러 마테리얼에 넘겨가며 혼합한다.
for (var i = 1; i < textures.Length; i++)
{
if(!imageEffects[i-1].isActive) continue;
currentDest = textures[i];
Graphics.Blit(currentSource, currentDest, imageEffects[i-1].mat);
currentSource = currentDest;
}
Graphics.Blit(currentSource, dest);
// 사용된 텍스쳐를 해제한다.
for (var i = 0; i < textures.Length; i++)
{
RenderTexture.ReleaseTemporary(textures[i]);
}
}
}
이 코드를 통해 2번째 포스트에서 만들었던 Trail Renderer 객체를 찍는 카메라가 생성할 RenderTexture를 1번재 포스트에서 생성한 쉐이더를 이용해 블러링하면 영상과 같은 결과물이 나옵니다.
전체적인 프로젝트를 확인할 수 있게 패키지 파일을 공유합니다.
'개발 > Shader' 카테고리의 다른 글
| [Unity/URP] Built-in Shader 작업물을 URP로 포팅하기 위한 도큐먼트 (0) | 2021.06.13 |
|---|---|
| [Unity/URP] URP에서 Built-in Function이나 Variable에 접근하기 (0) | 2021.06.13 |
| [Image Effect] 유니티 블러(Blur) 이미지 효과- 02 Trail Renderer 모션벡터 획득 (0) | 2021.01.04 |
| [Image Effect] 유니티 블러(Blur) 이미지 효과- 01 기본 셰이더 (0) | 2021.01.03 |
| [Snow Footprint] 04.프로젝트 분석 (完) (0) | 2017.12.25 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- shader
- 유니티
- #Shader #셰이더 #Tessellator #눈발자국 #발자국
- designer
- unity
- HLSL
- ue4
- 블러효과
- normal
- ImageEffect
- 컴퓨터네트워크
- 컴네
- 소공
- 네트워크
- Substance
- 이종식
- 컴퓨터구조론
- 법선
- Noise
- Substance Designer
- 소프트웨어공학
- 모션블러
- 인하대
- Unreal
- 이미지이펙트
- 정리
- 이미지 효과
- 유니티 셰이더
- 노영태
- MotionBlur
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
글 보관함