무비 렌더 큐 렌더 패스

무비 렌더 큐가 지원하는 렌더 패스의 레퍼런스

Windows
MacOS
Linux

렌더링 작업 세팅에 렌더 패스 를 포함하여 무비 렌더 큐 출력에 이를 추가할 수 있습니다.

슬라이더를 클릭 및 드래그하면 무비 렌더 큐가 지원하는 일부 렌더 패스 예시를 순환적으로 확인할 수 있습니다.

각 렌더 패스 세팅을 통해 개별 렌더링 모드로 무비를 출력할 수 있습니다. 선택한 모든 렌더 패스는 모두 최종 출력 폴더에 나란히 출력됩니다. 그 후 원하는 외부 포스트 프로덕션 또는 컴포짓 프로그램으로 출력된 것을 사용할 수 있습니다.

렌더 패스를 추가하면 애디티브 형식으로 최종 렌더에 적용되지 않습니다. 각 패스는 선택한 출력 형식의 개별 시퀀스로 출력됩니다.

UI에서 + 세팅 드롭다운 메뉴를 클릭하고 출력을 원하는 렌더링 모드를 선택하는 식으로 세팅 창에서 렌더 작업에 렌더 패스를 추가할 수 있습니다. 모든 렌더 패스 목록은 렌더 그룹에 표시됩니다.

이미지를 클릭하면 확대됩니다.

옵션 중 하나를 클릭하면 렌더링 세팅 목록에 추가됩니다.

이미지를 클릭하면 확대됩니다.

다른 세팅처럼 렌더 패스를 활성화 및 비활성화할 수 있고, 편집 가능한 프로퍼티가 있으면, 선택해 편집할 수 있습니다.

지원하는 렌더 패스

언리얼로부터의 메인 출력은 기본적으로 디퍼드 렌더링 세팅에서 제어됩니다. 이 세팅을 통해 뷰포트에서 표시되는 최종 이미지가 만들어집니다. 디테일 라이팅, 라이팅만, 패스 트레이서, 리플렉션, 언릿 등 일부 베리에이션도 제공됩니다. 이러한 베리에이션은 최종 이미지 제작 시에는 사용되지 않으며, 여기서는 레벨 에디터 뷰포트와의 패리티를 맞추기 위해 여기에 제공됩니다. 렌더 패스 전체 목록은 이 항목에서 자세히 설명됩니다.

디퍼드 렌더링

디퍼드 렌더링 옵션의 일부는 다음과 같습니다.

렌더 패스

예시 이미지 (클릭하면 확대)

설명

디퍼드 렌더링

뷰포트와 일치하는 해당 씬의 최종 이미지를 표시합니다.

디테일 라이팅

노멀 맵에 조합된 라이팅만 표시하는 특별 셰이더 베리에이션입니다. 씬의 지오메트리를 표시할 때 유용할 수 있습니다.

라이팅만

디테일 라이팅과 유사하지만, 라이팅에 영향을 미치는 노멀 맵이 없습니다.

패스 트레이서

프레임마다 축적되는 패스 트레이싱 데이터를 표시합니다. 이 모드에서 고품질 이미지를 유지하는 자세한 방법은 '패스 트레이서 렌더의 노이즈 줄이기'를 읽어보세요. 현재는 패스 트레이서가 일부 렌더링 기능만 지원합니다.

리플렉션만

월드 내 모든 것을 100% 리플렉티브로 만드는 특별 셰이더 베리에이션입니다.

언릿

라이팅 정보 없이 알베도만 표시하는 특별 셰이더 베리에이션입니다.

모든 디퍼드 렌더링 패스에는 동일한 프로퍼티가 존재하지만, 각 렌더 패스는 개별적으로 환경설정할 수 있습니다.

디퍼드 렌더링 옵션

ID

프로퍼티

설명

1

어큐뮬레이터에 알파 포함

활성화하면 알파 채널에 다중 템포럴/공간 샘플이 축적됩니다. 이 경우 r.PostProcessing.PropagateAlpha가 1이나 2로 설정되어야 합니다. 프로젝트 세팅 > 렌더링의 포스트 프로세스 세팅에서 알파 채널 활성화를 사용하면 활성화할 수 있습니다. 씬에서 하늘과 안개를 모두 제거해야 모든 픽셀이 불투명화되지 않도록 할 수 있습니다. 이 세팅을 활성화하면 축적 비용이 약 30% 추가되니 필요 시에만 사용해야 합니다. 이는 다중 템포럴 또는 공간 샘플을 사용하지 않는 렌더에 적용됩니다.

2

다중샘플 이펙트 비활성화

뎁스 오브 필드, 템포럴, 안티 에일리어싱, 모션 블러, 크로마틱 애버레이션과 같이 오브젝트 ID 렌더 패스를 사용할 때 바람직하지 않은 여러 픽셀을 블렌드하는 포스트 프로세싱 이펙트를 비활성화합니다. 이 세팅을 통해 렌더링 작업에서 포스트 프로세스를 제외할 수 있어 씬에서 수동으로 비활성화할 필요가 없습니다.

3

추가 포스트 프로세스 머티리얼

렌더링 완료 시 적용할 일련의 추가적인 포스트 프로세스입니다. 상당한 양의 시간이 추가될 수 있습니다. MovieRenderQueue_WorldDepthMovieRenderQueue_MotionVectors 가 기본적으로 포함되어 있습니다.

4

디폴트 레이어 추가

스텐실 레이어 배열에 이미 추가되어 있지 않은 모든 오브젝트가 포함된 추가 스텐실 레이어를 생성합니다(아래 참조). 이 기본 레이어는 별도로 렌더링됩니다. 이를 통해 나중에 리컴포짓할 소규모 오브젝트 그룹이 제외된 렌더를 생성할 수 있습니다.

5

스텐실 레이어

씬의 오브젝트 그룹이 포함된 스텐실 레이어 목록입니다. 해당 씬의 모든 오브젝트가 다시 렌더링되고, 이후 특정 레이어에 오브젝트가 포함되지 않은 픽셀은 클리핑되어 흑색이 됩니다. 그 후 포스트 프로세싱이 적용되며, 뎁스 오브 필드, 모션 블러, 템포럴 안티 에일리어싱 기능은 유지됩니다. 창 > 레이어를 통해 새 레이어를 생성할 수 있습니다. 스텐실 레이어는 레이어당 포스트 프로세싱 머티리얼을 지원하지 않습니다. 스텐실 레이어는 베이스 레이어의 추가 포스트 프로세스 머티리얼에 매치되기 때문이며, 커스텀 뎁스/스텐실을 지원하는 머티리얼만 호환됩니다.

스텐실 레이어

리얼타임 렌더링 시 화면에 콘텐츠를 드로해야 하는 여러 이펙트는 나중에 스크린 스페이스 리플렉션 또는 스크린 스페이스 앰비언트 오클루전 과 같은 스크린 스페이스 포스트 프로세스로 사용될 수 있습니다. 기존의 레이어링 시스템에서라면 계속해서 주위 환경의 리플렉션을 적용하여 캐릭터 하나를 렌더링할 수 있습니다. 이 작업은 일반적으로 리얼타임 렌더링에서는 가능하지 않아서, 대신 스텐실 레이어 가 구현된 것입니다.

스텐실 레이어를 통해 레이어별로 전체 씬이 다시 렌더링됩니다. 레이어에 속한 액터도 스텐실 버퍼에 렌더링됩니다. 이후 스텐실 버퍼 를 사용해 해당 레이어에 존재하기를 원하는 액터에서 벗어나는 픽셀을 클리핑합니다. 그림자를 드리우는 오브젝트가 계속 액터에 그림자를 드리울 수 있고, 액터가 다른 레이어에 그림자를 드리울 수 있다는 것이 장점입니다.

포스트 프로세싱 이펙트가 스텐실 버퍼에 렌더링되고 나면, 반투명 흑색을 각 픽셀에 쓰게 됩니다. 이 과정은 반투명화 후, 포스트 프로세스 전에 일어납니다. 이후 이 레이어에 포스트 프로세싱이 적용됩니다. 알파 채널을 유지할 수 있으므로 포스트 프로덕션에서 실제로 어떤 픽셀이 얼마나 영향을 받았는지 알 수 있습니다.

아래는 기본 레이어와 스텐실 레이어 예시 3개입니다. 뎁스 오브 필드와 같은 포스트 프로세싱 이펙트가 올바르게 적용된 것과 백그라운드 이미지에서 포그라운드 오브젝트도 클리핑된 것을 볼 수 있습니다. 이러한 이미지는 다시 합쳐져 최종 렌더링에 유사한 결과물을 생성합니다. 하지만 데이터에 적용된 프리멀티플라이 연산을 해제해야 합니다.

여러 스텐실 레이어로 나뉜 렌더입니다.

아래는 오리지널 이미지의 특정 레이어에 간단한 색상 시프트를 적용하는 Nuke의 예시입니다. 오리지널 이미지는 색 출력 세팅에서 알파 채널 축적 활성화, 톤 커브 비활성화로 렌더링되었습니다.

이미지를 클릭하면 확대됩니다.

이미지를 클릭하면 확대됩니다.

스텐실 레이어의 경우 반투명 오브젝트는 뒤에 있는 다른 레이어의 불투명 오브젝트를 표시하고, 포그라운드 오브젝트가 백그라운드 레이어를 오클루드하는 부분에서 백그라운드 레이어에 검은 구멍이 표시되니 진정한 레이어 시스템이 아닙니다.

패스 트레이서 렌더 시 노이즈 줄이기

패스 트레이서 렌더링 모드는 렌더링하는 매 프레임의 패스 데이터를 축적합니다. 이 때문에 이미지 픽셀이 채워지면서 이미지에 노이즈가 발생하며, 카메라 프레임의 콘텐츠가 현저히 변경되는 경우 특히 그렇습니다.

이미지를 클릭하면 확대됩니다.

이러한 노이즈를 줄이려면, 안티 에일리어싱 세팅에서 공간 샘플 수를 늘려야 합니다.

증가된 공간 샘플 수

이 경우 이미지가 여러 번 렌더링되며, 추가 샘플 덕분에 패스 트레이서가 간극을 더 효과적으로 채우게 됩니다. 패스 트레이서의 노이즈를 효과적으로 줄이려면 공간 샘플 수를 늘려야 합니다. 샘플 수를 늘리면 이미지 출력에 필요한 시간이 크게 증가합니다.

샘플 1, 8, 16, 32, 64, 128개를 이용한 패스 트레이서 렌더 예시입니다.

현재로서는 노이즈가 전혀 없는 렌더링은 불가능합니다.

언리얼 엔진 4.26의 패스 트레이서 렌더 모드는 실험단계입니다. 향후에 기능이 더욱 향상될 예정입니다.

오브젝트 ID

디퍼드 렌더

오브젝트 ID 렌더

언리얼 엔진 4.26의 오브젝트 ID 렌더 패스는 실험단계입니다. 또한, 언리얼 에디터에서만 사용 가능하고 shipping 빌드에는 사용할 수 없습니다.

오브젝트 ID 렌더 패스는 씬 내부의 각 컴포넌트에 고유 ID를 할당한 이미지를 출력합니다. 포스트 프로덕션 툴세트에서 이 이미지를 사용하여 씬 안의 개별 오브젝트를 선택하고 해당하는 마스크를 생성할 수 있습니다. 이를 통해 특정 오브젝트에 선택적으로 변경 사항을 적용할 수 있습니다. 예를 들어, 전체 이미지 색에 영향을 주지 않고 오브젝트 하나 또는 일련의 오브젝트의 색상을 변경할 수 있습니다.

오브젝트 ID 패스에서 사용 가능한 정보를 얻으려면 몇 가지 요구 사항을 만족해야 합니다. 이를 지원하려면 아래 단계별 설명에 따라 렌더 큐를 활성화 및 셋업하세요.

  1. 플러그인 > 빌트인 > 렌더링 을 열고 무비 렌더 큐 추가 렌더 패스 플러그인을 활성화합니다. 플러그인 활성화 후 에디터를 재시작해야 합니다. 이렇게 하면 무비 렌더 큐 세팅 메뉴에 오브젝트 ID가 옵션으로 추가됩니다.

    추가 렌더 패스

  2. 작업 세팅에 오브젝트 ID (제한) 렌더 패스를 추가합니다.

    오브젝트 ID 세팅

  3. 오브젝트 ID 패스와 함께 컴포짓하고자 하는 다른 렌더 패스의 다중샘플 이펙트 비활성화true 로 설정합니다. 이렇게 하면 모션 블러, 뎁스 오브 필드, 안티 에일리어싱 및 여러 픽셀 레이어를 블렌드하는 다른 포스트 프로세스가 제외되어 모든 오브젝트의 에지가 선명해집니다. 이렇게 해야 오브젝트 ID 패스가 최종 이미지와 올바르게 정렬됩니다.

  4. 디퍼드 렌더링 세팅의 디퍼드 렌더러 데이터에서 추가 포스트 프로세스 머티리얼 을 펼치고 MovieRenderQueue_WorldDepthMovieRenderQueue_MotionVectors 머티리얼 모두를 활성화합니다.

    이미지를 클릭하면 확대됩니다.

  5. 렌더링하는 모든 카메라의 스크린 퍼센티지100 으로 설정되었는지 확인하세요. 이렇게 해야 오브젝트 ID 패스가 최종 이미지와 올바르게 정렬됩니다.

    스크린 퍼센티지 100 퍼센트

  6. 작업에 안티 에일리어싱 세팅을 추가하고 공간 샘플 수 를 최소 8 로 설정합니다. 이렇게 하면 템포럴 안티 에일리어싱이 지원되지 않는 한계를 극복하는데 도움이 됩니다. 템포럴 샘플 수 를 사용하면 원하는 결과가 도출되지 않을 수 있는데, 이는 각 샘플 사이의 간극을 메우는 모션 블러가 적용되지 않기 때문이며, 오브젝트 여러 복제본이 단순히 서로 겹쳐진 모습이 됩니다.

    공간 샘플 수를 8로 설정

  7. 세팅에 .exr 시퀀스 출력 모드를 추가하고 다른 모든 출력은 비활성화 또는 제거합니다. 다중 레이어 프로퍼티를 활성화합니다.

    다중 레이어 EXR 설정

이런 세팅을 추가한 후 무비 렌더 큐를 시작하면 최종 이미지, 오브젝트 ID, 월드 뎁스, 모션 벡터가 포함된 다중 레이어 EXR를 출력합니다.

이러한 데이터가 서드 파티 소프트웨어에서 이용 가능한지 읽기 위해 오브젝트 ID가 Cryptomatte [https://github.com/Psyop/Cryptomatte] 스펙 및 플러그인을 사용하여 EXR 파일에 저장됩니다.

월드 뎁스

월드 뎁스 는 레드 채널에 저장된 월드 유닛에 작성되는 뎁스입니다. 포스트 프로덕션에서 뎁스 오브 필드 를 재생성할 때 사용할 수 있습니다. 카메라 초점 길이 및 셔터 크기를 EXR 메타데이터에서 읽어서 인게임 뎁스 오브 필드와 자동 일치시킬 수 있습니다.

아래는 Nuke ZDefocus2 노드 예시입니다. 여기에서는 EXR 파일의 메타데이터를 읽어서 실시간으로 발견되는 블러와 유사한 블러를 연출합니다. WorldDepth 텍스처가 올바르게 샘플링되도록 붙여넣기 후 focal_point 프로퍼티를 재조정해주세요.

set cut_paste_input [stack 0]
version 12.0 v3
push $cut_paste_input
add_layer {FinalImageMovieRenderQueue_WorldDepth FinalImageMovieRenderQueue_WorldDepth.red FinalImageMovieRenderQueue_WorldDepth.green FinalImageMovieRenderQueue_WorldDepth.blue FinalImageMovieRenderQueue_WorldDepth.alpha}
ZDefocus2 {
 z_channel FinalImageMovieRenderQueue_WorldDepth.red
 math depth
 center 603.125
 focal_point {960 540}
 size {{"(input.width*(focalLength*focalLength / (fstop * (focalDistance - focalLength)))*.5 / sensorWidth)/10" x1 26}}
 max_size 100
 filter_type bladed
 legacy_resize_mode false
 show_legacy_resize_mode false
 name ZDefocus1
 selected true
 xpos 385
 ypos -147
 addUserKnob {20 User}
 addUserKnob {7 focalLength l "Focal Length"}
 focalLength {{"[metadata exr/unreal/camera/FinalImage/focalLength]"}}
 addUserKnob {7 focalDistance l "Focal Distance"}
 focalDistance {{"[metadata exr/unreal/camera/FinalImage/focalDistance]"}}
 addUserKnob {7 sensorWidth l "Sensor Width"}
 sensorWidth {{"[metadata exr/unreal/camera/FinalImage/sensorWidth]"}}
 addUserKnob {7 fstop l Fstop}
 fstop {{"[metadata exr/unreal/camera/FinalImage/fstop]"}}
}

모션 벡터 (속도)

모션 벡터는 X, Y의 [0,1] 좌표 스페이스에 저장되며 [0.5, 0.5]는 모션 없는 상태입니다.

다음과 같은 Nuke VectorBlur 노드를 사용하여 이미지에 모션 벡터를 적용할 수 있습니다. 언리얼은 다른 렌더링 패키지와 달리, 전체 화면을 대상으로 노멀라이즈된 모션 벡터를 저장합니다. 따라서 Nuke VectorBlur 노드에서 uv_offset을 ([0, 1]이 아니라 [-.5,.5]로 스케일을 재조정하기 위해) -0.5로 설정하면, 모션 블러 스케일은 해당 이미지의 너비에 따라 달라집니다.

set cut_paste_input [stack 0]
version 12.0 v3
push $cut_paste_input
add_layer {FinalImageMovieRenderQueue_MotionVectors FinalImageMovieRenderQueue_MotionVectors.red FinalImageMovieRenderQueue_MotionVectors.green FinalImageMovieRenderQueue_MotionVectors.blue FinalImageMovieRenderQueue_MotionVectors.alpha}
VectorBlur2 {
 uv FinalImageMovieRenderQueue_MotionVectors
 uv_offset -0.5
 blur_type uniform
 scale {{input.width}}
 soft_lines true
 name Unreal_VectorBlur
 selected true
 xpos 1338
 ypos -93
}

사용하는 소프트웨어에 따라 모션 벡터의 X와 Y 채널을 따로 스케일을 재조정해야 할 수 있습니다. 자세한 정보는 다음 항목을 확인해주세요.

포스트 프로세스에서 오브젝트 ID, 뎁스, 속도 조합

여러 공간 샘플, 뎁스, 속도를 조합하면 언리얼의 포스트 프로세싱 파이프라인에서 유사한 결과를 도출할 수 있습니다. 뎁스 오브 필드는 뎁스 맵을 통해, 그 다음 모션 블러는 속도 텍스처를 통해 조합합니다. 이렇게 하면 오브젝트 ID 매트를 사용해 오브젝트를 선택하고, 포스트 프로세스 적용 전에 색을 정정할 수 있습니다. 초기 렌더링 시 8개 이상의 공간 샘플을 통해 안티 에일리어싱을 재생성할 수 있습니다.

뎁스 오브 필드와 모션 블러를 통해 정확하고 선명한 하이라이트를 유지하려면 톤 커브를 비활성화(세팅 -> 색 옵션 -> 톤 커브 비활성화)한 후 씬을 렌더링해야 합니다. 이렇게 하면 sRGB 컬러스페이스에서 HDR 선형값이 출력됩니다. 뎁스 오브 필드와 모션 블러를 적용한 후에는 (선형 sRGB에서) 원하는 컬러스페이스로 변환할 수 있습니다. 톤 커브를 비활성화하지 않으면 뎁스 오브 필드와 모션 블러 적용 후 하이라이트가 매우 흐릿하게 보일 수 있습니다. 블러 적용 전에 HDR값이 크게 감소하기 때문입니다.

ColorOutput.png

아래의 Nuke 그래프 예시는 위에서 언급한 ZDefocus와 VectorBlur 노드를 사용합니다. Nuke에서 속도 텍스처를 사용하려면 레드 및 그린 채널을 교체(아래 그래프의 RG_TO_GR, ShuffleCopy 노드를 사용함)해야 합니다.

언리얼은 모션 벡터를 X와 Y 모두에서 노멀라이즈[0-1]하여 저장하므로, 추가적으로 레드 채널을 ImageHeight/ImageWidth(이 예시에서는 1080/1920) 또는 0.5625로 스케일 재조정해야 합니다. 속도 채널에서 -0.5를 빼고, 0.5625를 곱하고, 그 다음 속도 채널에 0.5를 다시 더하는 스케일 재조정을 거친 후 VectorBlur 노드로 연결합니다. 레드 채널 스케일 재조정에 실패하면 모션 블러 각이 올바르지 않게 됩니다.

이 Nuke 그래프는 8개의 공간 샘플, 오브젝트 ID 패스, 모션 벡터와 월드 뎁스로 렌더링된 EXR을 이용합니다. EXR 메타데이터에서 자동으로 뎁스 오브 필드 정보를 추출합니다. 크립토매트 노드를 사용하여 팬 날개 및 카펫의 마스크를 생성하고, 그렇게 생성된 마스크는 간단한 색상 시프트 마스크로 사용됩니다. 색상 시프트 적용 후에는 앞서 언급한 ZDefocus 노드가 적용되고, 그 다음 VectorBlur가 적용됩니다.

이것을 사용하려면 프로젝트 세팅에서 베이스 패스 중 속도 출력을 활성화해야 합니다. 이 프로젝트 세팅을 변경한 후에는 에디터를 재시작해야 합니다.

또한 `r.BasePassForceOutputsVelocity`CVar는 1로 설정해야 합니다. 엔진에 전체적으로 적용하려면 /Engine/Config/ConsoleVariables.ini를 편집하거나, 각 무비 렌더링 시작 시에 콘솔 변수로 적용하면 됩니다.

BasePassOutputsVel.png

[REGION:codeheader]
ConsoleVariables.ini
[/REGION]
[스타트업]
r.BasePassForceOutputsVelocity=1

UI 렌더러 (넌컴포짓)

UI 렌더러는 뷰포트에 추가된 슬레이트 또는 UMG 위젯을, 알파가 있는 개별 출력으로 렌더링합니다. 이것을 컴포짓 프로그램에서 최종 이미지와 조합하여, 렌더링할 UI 요소를 추가할 수 있습니다.

Select Skin
Light
Dark
언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼