모션 블러
언리얼 엔진은 렌더링된 이미지에 모션 블러 를 적용할 때 속도 GBuffer(Velocity GBuffer) 를 사용합니다. 이 기법은 리얼타임 애플리케이션에서는 매우 빠르지만, 단방향 콘텐츠에서는 보통 아티팩트가 발생하면 안 됩니다.
속도 GBuffer는 픽셀당 단일 벡터를 저장합니다. 이 기법으로는 섀도, 리플렉션과 같은 부차적인 모션을 블러할 수 없습니다. 또한 빠르게 움직이는 오브젝트의 이동 경로가 엇갈릴 때 아티팩트가 생길 수도 있습니다.
무비 렌더 큐: 템포럴 샘플 수
보통 단방향 콘텐츠 프로덕션에서는 렌더링 시간이 더 길어도 괜찮으므로, 프레임당 여러 개의 이미지를 렌더링하여 퀄리티를 개선할 수 있습니다. 각 렌더는 셔터 열림 시간에 거쳐 균등하게 배분됩니다. 이후 이러한 렌더가 결합되어 고퀄리티의 최종 프레임을 생성합니다.
정확한 프리뷰를 위해 디스플레이 속도를 실행시간에 잠금(Lock to Display Rate at Runtime) 옵션을 켰다면 템포럴 샘플(Temporal Samples) 이 적용될 수 있도록 반드시 해당 옵션을 꺼야만 합니다. 이 세팅은 템포럴 샘플의 이펙트를 오버라이드하기 때문입니다.
시퀀서(Sequencer) 틱은 정의한 템포럴 샘플의 수를 따릅니다. 그러므로 시뮬레이션에 전달되는 타임 스텝 또한 템포럴 샘플 수에 따라 변경됩니다.
또 한 가지 복잡한 점이 있는데, 시퀀서는 카메라 셔터가 열려 있는 프레임의 일부(보통 프레임 절반) 동안만 템포럴 샘플을 추가한다는 사실입니다. 따라서 셔터가 열려 있는 동안의 일련의 매우 짧은 타임 스텝과 셔터가 닫혀 있는 동안의 하나의 큰 타임 스텝이 이어서 시뮬레이션에 전달됩니다. 일부 시뮬레이션 타입은 이러한 불규칙한 스텝 문제로 인해 아티팩트가 발생할 수 있습니다.
위의 다이어그램에서는 시뮬레이션에 전달된 타임 스텝(빨간색)을 보여줍니다. 셔터가 열려 있는 동안의 타임 스텝은 셔터가 닫혀 있는 동안의 타임 스텝보다 8배 더 작습니다.
그리드 시뮬레이션은 프레임당 타임 스텝의 변화에 특히 취약합니다. 프레임당 9번 틱하는 그리드 시뮬레이션은 한 번 틱하는 동일한 시뮬레이션과 상당히 다르게 보일 것입니다. 셔터가 열렸을 때와 닫혔을 때의 타임 스텝 간에 변화가 있다면 이러한 차이가 더욱 뚜렷해집니다.
그리드 기반 시뮬레이션 작업을 하고 있다면 시스템의 고정된 틱 델타 시간(Fixed Tick Delta Time) 을 시퀀서 프레임 레이트 에 맞춰 설정하세요. 예를 들어, 시퀀서가 30fps로 설정되어 있다면 고정된 틱 델타 시간을 (1.0/30) 또는 0.33333으로 설정합니다.