Version: 5.3
이미지 이펙트 레퍼런스
안티앨리어싱(Antialiasing)

이미지 이펙트 작성(Writing Image Effects)

이미지 이펙트는 Unity에서 렌더링된 이미지를 후처리하는 방법입니다.

OnRenderImage 함수를 가진 모든 script는 후처리 효과로서 작동할 수 있습니다. 카메라 오브젝트에 추가하기만 하면 됩니다. 스크립트 함수는 전체 이미지 이펙트 로직에 관여합니다.

OnRenderImage 함수

This script function receives two arguments: source image as a RenderTexture and destination it should render into, as a render texture as well. Typically a postprocessing effect uses Shaders that read the source image, do some calculations on it, and render the result into the provided destination (e.g using Graphics.Blit). It is expected that the image effect will fully replace all pixels of the destination texture.

When multiple postprocessing effects are added on the camera, they are executed in the order they are shown in the inspector, topmost effect being rendered first. Result of one effect is passed as “source image” to the next one; and internally Unity creates one or more temporary render textures to keep these intermediate results in.

유의할 점은 다음과 같습니다.

  • 대상 렌더 텍스처는 _null_일 수 있으며, 이는 “화면에 렌더”를 의미합니다(예를 들면, 백버퍼). 이러한 현상은 카메라의 마지막 이미지 후처리 효과에서 발생합니다.
  • OnRenderImage가 완료되면 대상 렌더 텍스처가 액티브 렌더 타겟이 됩니다. 즉, 일반적으로 Graphics.Blit나 대상 텍스처로 수동 렌더링하는 동작이 마지막 렌더링 동작이 됩니다.
  • 이미지 이펙트 셰이더에서는 뎁스 버퍼 쓰기와 테스트를 비활성화하는 것이 좋습니다. 그렇지 않으면 Graphics.Blit를 진행하면서 대상 Z 버퍼에 의도치 않은 값을 쓰게될 수 있습니다. 거의 대부분의 이미지 이펙트 셰이더 패스는 Cull Off ZWrite Off ZTest Always 상태를 포함합니다.

불투명 이미지 이펙트 이후 렌더링

By default, an image effect is executed after whole scene is rendered. In some cases however, it is desirable to render an effect after all opaque objects are done (but before skybox or transparencies are rendered). Often depth-based effects like Depth of Field use this.

Adding an ImageEffectOpaque attribute on the OnRenderImage function allows to achieve that.

플랫폼별 텍스처(Texture) 좌표

이미지 이펙트가 한 번에 서로 다른 화면 관련 텍스처를 샘플링하는 경우, 플랫폼별 차이점을 참조하여 텍스처 좌표가 어떻게 사용되는지 파악해야 합니다.

일반적인 경우, 효과 “소스” 텍스처와 카메라의 뎁스 텍스처는 안티앨리어싱 설정에 따라 서로 다른 수직 좌표를 필요로 합니다. 자세한 내용은 렌더링 플랫폼별 차이 페이지를 참조하십시오.

스탠다드 에셋(Standard Assets)에서 헬퍼 이미지 이펙트 사용

효과 패키지에는 이미지 이펙트 제작 기반으로 삼을 수 있는 몇몇 베이스와 헬퍼 클래스가 있습니다. 모든 코드에는 UnityStandardAssets.ImageEffects 네임스페이스가 있습니다.

관련 항목

이미지 이펙트 레퍼런스
안티앨리어싱(Antialiasing)