이미지 이펙트는 Unity에서 렌더링된 이미지를 후처리하는 방법입니다.
OnRenderImage 함수를 가진 모든 script는 후처리 효과로서 작동할 수 있습니다. 카메라 오브젝트에 추가하기만 하면 됩니다. 스크립트 함수는 전체 이미지 이펙트 로직에 관여합니다.
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.
유의할 점은 다음과 같습니다.
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.
이미지 이펙트가 한 번에 서로 다른 화면 관련 텍스처를 샘플링하는 경우, 플랫폼별 차이점을 참조하여 텍스처 좌표가 어떻게 사용되는지 파악해야 합니다.
일반적인 경우, 효과 “소스” 텍스처와 카메라의 뎁스 텍스처는 안티앨리어싱 설정에 따라 서로 다른 수직 좌표를 필요로 합니다. 자세한 내용은 렌더링 플랫폼별 차이 페이지를 참조하십시오.
효과 패키지에는 이미지 이펙트 제작 기반으로 삼을 수 있는 몇몇 베이스와 헬퍼 클래스가 있습니다. 모든 코드에는 UnityStandardAssets.ImageEffects
네임스페이스가 있습니다.