런타임 버추얼 텍스처링 퀵스타트

랜드스케이프에 적용된 머티리얼로 빠르게 런타임 버추얼 텍스처를 구성하는 방법을 설명합니다.

Choose your operating system:

Windows

macOS

Linux

이 가이드는 에픽게임즈 런처의 학습 탭에서 이용할 수 있는 콘텐츠 예제 프로젝트의 머티리얼을 사용합니다. 이 머티리얼이 아래 단계에 꼭 필요한 것은 아니지만, 페인팅된 랜드스케이프 머티리얼로 올바르게 자동하도록 랜드스케이프를 구성해야 합니다. 진행하기 전에 랜드스케이프 퀵스타트 가이드를 확인하거나, 이 가이드에서 사용할 수 있도록 학습(Learn) 탭의 콘텐츠 예제 프로젝트 랜드스케이프(Landscapes) 맵을 열어주세요.

런타임 버추얼 텍스처링(Runtime Virtual Texturing, RVT) 퀵스타트에서는 여러분의 프로젝트에서 랜드스케이프와 비랜드스케이프 컴포넌트에 맞게 RVT를 구성하고 사용하는 방법을 설명합니다.

이 가이드를 시작하기 전에, 런타임 버추얼 텍스처는 몇 가지 이유로 랜드스케이프 지형과 함께 사용했을 때 가장 효과적이라는 점을 이해해야 합니다.

  • 복잡한 랜드스케이프 머티리얼이 셰이딩 결과물을 캐싱하여 퍼포먼스에 유리합니다.

  • 스플라인과 데칼 타입 이펙트로 퀄리티와 베리에이션이 향상됩니다.

  • 같은 RVT 에셋을 사용하여 비랜드스케이프 액터를 랜드스케이프와 블렌딩할 수 있습니다.

이 가이드를 마치면, 다음과 같은 내용을 이해할 수 있습니다.

  • 런타임 버추얼 텍스처 에셋 구성 방법 및 다양한 컴포넌트에 연결하는 방법.

  • 랜드스케이프 머티리얼에 런타임 버추얼 텍스처를 활성화하는 방법.

  • 레벨에서 런타임 버추얼 텍스처 볼륨을 구성하는 방법.

  • 추가 액터를 구성하여 런타임 버추얼 텍스처를 렌더링하는 방법.

1 - 프로젝트 구성

런타임 버추얼 텍스처를 사용하려면, 우선 프로젝트에서 반드시 활성화해야 합니다. 다음 단계를 따르세요.

  1. 메인 메뉴에서 편집(Edit) 메뉴의 프로젝트 세팅(Project Settings) 을 선택합니다. 엔진(Engine) > 렌더링(Rendering) > 버추얼 텍스처(Virtual Textures) 카테고리에서 버추얼 텍스처 지원 활성화(Enable virtual texture support) 를 true로 설정합니다.

    1_1_ProjectSettings.png

  2. 프로젝트를 재시작(Restart) 합니다.

2 - 런타임 버추얼 텍스처 에셋 생성하기

런타임 버추얼 텍스처 에셋에는 런타임 버추얼 텍스처 볼륨에 할당된 RVT 에셋을 위한 환경설정 디테일이 포함되어 있습니다. RVT 에셋은 데이터 공유가 필요한 씬의 다른 액터들과 머티리얼을 연결해서 사용할 수도 있습니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 우클릭하면 표시되는 컨텍스트 메뉴나 신규 추가(Add New) 버튼을 사용하여 머티리얼 및 텍스처(Materials & Textures) 카테고리에서 런타임 버추얼 텍스처(Runtime Virtual Texture) 에셋을 생성합니다.

    2_1_CB_AddNew_RVTAsset.png

  2. 런타임 버추얼 텍스처 에셋의 이름을 지정합니다. 이 가이드에서는 VT_Test 입니다.

  3. 에셋을 더블 클릭하여 프로퍼티를 설정할 수 있는 런타임 버추얼 텍스처 에셋 에디터를 엽니다.

    2_1_RVT_Asset_Window.png

    이 창에서 런타임 버추얼 텍스처가 지원하는 머티리얼 어트리뷰트의 크기, 타일 크기, 타입을 정의할 수 있습니다. 이러한 프로퍼티는 에디터에서 작업하는 동안 실시간으로 변경사항을 확인하며 조절할 수 있습니다.

    이러한 세팅의 상세 정보와 사용 방법은 버추얼 텍스처 세팅 페이지를 참조하세요.

3 - 런타임 버추얼 텍스처 머티리얼 생성하기

이러한 세팅의 상세 정보와 사용 방법은 버추얼 텍스처 세팅 페이지를 참조하세요.

이 단계에서는 런타임 버추얼 텍스처링 지원을 위해 간단한 랜드스케이프 머티리얼을 사용할 것입니다. 또한, 지원 플랫폼에서 버추얼 텍스처링을 사용할 수 없는 경우에 대비해 머티리얼을 원래 용도로 쓸 수 있게 해 주는 RVT용 머티리얼 표현식으로 로직을 구성해 보겠습니다.

RVT에 사용할 머티리얼을 구성할 때는 두 가지 사항을 고려해야 합니다.

  • 머티리얼의 일부는 RVT 에셋에 것입니다.

  • 머티리얼의 일부는 RVT 에셋으로부터 샘플링 하고 추가 로직을 적용할 것입니다.

콘텐츠 예제 프로젝트에서 가져온 이 예시용 랜드스케이프 머티리얼에는 눈, 풀, 바위에 해당하는 간단한 레이어 블렌드가 구성되어 있습니다.

이미지를 클릭하면 최대 크기로 볼 수 있습니다.

콘텐츠 예제 프로젝트의 머티리얼을 사용하지 않는다면, 위 방법을 재현하면 됩니다. 하지만 랜드스케이프와 함께 사용하려면 머티리얼을 제대로 구성해야 한다는 점을 명심하세요. 시작점이 필요하다면 랜드스케이프 퀵스타트 가이드를 따라해 보세요.

아래 섹션에서는 이 머티리얼을 여러 부분으로 나누어 RVT 에셋에 대한 쓰기 및 샘플링 방법을 시연합니다.

필수 머티리얼 구성

RVT 에셋과 함께 사용할 랜드스케이프 머티리얼은 일반 머티리얼과 동일하게 구성되는데, 유일한 차이는 머티리얼 어트리뷰트 사용(Use Material Attributes) 옵션을 활성화해야 한다는 점입니다. 이 옵션은 Make Material Attributes 표현식을 사용하여 지원되는 다양한 용도로 머티리얼을 리빌드하고 출력할 수 있도록 해줍니다.

  1. 기존 또는 사용할 수 있는 랜드스케이프 머티리얼을 엽니다. 그래프를 우클릭하고 Make Material Attributes 표현식을 검색합니다. 그래프에 추가합니다.

  2. Main Attributes 노드에서 Make Material Attributes 노드로 와이어를 연결합니다. 다음과 같은 모습이어야 합니다.

    이미지를 클릭하면 최대 크기로 볼 수 있습니다.

  3. 이제 Main Attributes 노드를 선택하고 디테일(Details) 패널에서 머티리얼 어트리뷰트 사용(Use Material Attributes) 옵션을 활성화합니다.

    3_1_3_EnableUseMatAttributes.png

  4. Make Material Attributes 노드의 출력에서 드래그한 뒤 Virtual Textures Feature Switch 노드를 생성합니다. 이 노드는 No 입력에 연결되어야 합니다. Material Attributes 의 출력에 연결합니다.

    3_1_4_RVTFeatureSwitchNode.png

이제 머티리얼이 다음과 같은 모습이어야 합니다.

이미지를 클릭하면 최대 크기로 볼 수 있습니다.

런타임 버추얼 텍스처 에셋에 쓰기

이제 Runtime Virtual Texture Output 표현식을 통해 RVT 에셋에 머티리얼 쓰기 를 수행해야 합니다. 이 노드는 이 가이드에서 만들었던 RVT 에셋을 참조하며, 해당하는 머티리얼 어트리뷰트(베이스 컬러, 러프니스, 노멀)를 이 노드의 입력 어트리뷰트로 사용할 수 있도록 해줍니다.

  1. 우클릭한 뒤 그래프에 Runtime Virtual Texture Output 노드를 추가합니다.

    이미지를 클릭하면 최대 크기로 볼 수 있습니다.

  2. 노드에 있는 각 머티리얼 어트리뷰트 입력의 와이어를 연결합니다. 베이스 머티리얼에 사용되지 않는 어트리뷰트의 경우 상수 값을 대신 사용합니다.

    3_2_2_ConnectRVTOutputInputs.png

이제 머티리얼이 다음과 같은 모습이어야 합니다.

이미지를 클릭하면 최대 크기로 볼 수 있습니다.

이 머티리얼의 첫 번째 부분에서는 모든 레이어 블렌딩과 로직이 일어납니다. 모든 카메라 독립적 셰이딩이 RVT 에셋에 캐싱될 수 있습니다. 다른 오브젝트(스플라인, 데칼)는 RVT 시스템에 의해 이 노드의 출력으로 컴포지팅될 것입니다.

런타임 버추얼 텍스처 에셋에서 샘플링하기

이제 Runtime Virtual Texture Sample 표현식을 통해 RVT 에셋으로부터 머티리얼의 샘플링 을 수행해야 합니다.

그래프의 이 부분에서는 RVT 에셋이 샘플링되고 카메라 독립적 셰이딩이나 추가 셰이딩 연산을 적용합니다. RVT 에셋 어트리뷰트는 샘플링된 후 최종 머티리얼 출력으로 전송됩니다. 따라서 이 부분은 작업량이 적을수록 머티리얼 렌더링 비용도 낮아집니다.

  1. 우클릭한 뒤 Runtime Virtual Texture Sample 노드를 추가합니다.

    이미지를 클릭하면 최대 크기로 볼 수 있습니다.

  2. 우클릭한 뒤 Make Material Attributes 노드를 하나 더 만듭니다. Runtime Virtual Texturing Sample 노드의 출력을 Make Material Attributes 노드의 해당 입력에 연결합니다.

    3_3_2_AddConnectMakeMatAttribute.png

  3. Make Material Attributes 노드의 출력을 Virtual Texture Feature Switch 노드의 Yes 입력에 연결합니다.

    이미지를 클릭하면 최대 크기로 볼 수 있습니다.

  4. Runtime Virtual Texture Sample 노드를 선택합니다. 디테일(Details) 패널에서 버추얼 텍스처(Virtual Textures) 에셋 선택 박스를 사용하여 이 가이드에서 만든 RVT 에셋을 지정합니다.

    3_3_4_AssignRVTAssetTOrvtSampleNode.png

  5. Virtual Texture Feature Switch 노드의 출력을 메인 Material Attributes 노드의 입력에 연결합니다.

    3_3_5_VTFeatureSwitchTOmainAttributes.png

  6. 머티리얼을 저장 하고 닫습니다.

이제 머티리얼이 다음과 같은 모습이어야 합니다.

이미지를 클릭하면 최대 크기로 볼 수 있습니다.

4 - 런타임 버추얼 텍스처 볼륨 배치하기

이제 런타임 버추얼 텍스처링을 지원하는 머티리얼을 구성하였으니, 레벨에서 원하는 곳으로 이동한 다음 런타임 버추얼 텍스처 볼륨 을 배치하여 RVT 머티리얼을 표면(여기서는 랜드스케이프 지형)에 적용합니다.

  1. 액터 배치(Place Actors) 패널에서 볼륨(Volumes) 카테고리에 있는 런타임 버추얼 텍스처 볼륨(Runtime Virtual Texture Volume) 을 검색한 뒤 씬으로 드래그합니다.

    이미지를 클릭하면 최대 크기로 볼 수 있습니다.

  2. RVT 볼륨을 선택한 상태로 버추얼 텍스처(Virtual Texture) 섹션의 버추얼 텍스처(Virtual Texture) 머티리얼 지정 박스로 이동한 뒤 이 가이드의 2단계에서 생성한 런타임 버추얼 텍스처 에셋을 지정합니다.

    4_x_RVTVolumeSetRVTAsset.png

  3. RVT 머티리얼을 적용하고 싶은 영역을 모두 커버하려면 RVT 볼륨의 스케일을 적절히 조절해야 합니다. RVT 볼륨을 선택한 뒤 디테일(Details) 패널의 바운드의 트랜스폼(Transform from Bounds) 섹션에서 사용할 소스 액터(Source Actor) 를 선택합니다. 이 예시에서는 Landscape_2 를 사용합니다.

    4_2_TransformFromBoundsSettings.png

  4. 바운드 설정(Set Bounds) 버튼을 클릭하여 선택한 액터의 바운드에 맞춰 런타임 버추얼 텍스처 볼륨의 스케일을 조절합니다.

    4_x_scaleboundsscene.png

    런타임 버추얼 텍스처에서 쓰기와 샘플링을 수행하는 모든 액터는 RVT 볼륨의 바운드 안에 있어야 합니다.

  5. 씬 액터(Landscape_2)를 선택하고 디테일(Details) 패널의 버추얼 텍스처(Virtual Texture) 섹션에서 버추얼 텍스처에서 그리기(Draw in Virtual Textures) 옆의 엘리먼트 추가(Add Element) 아이콘을 클릭합니다.

    4_x_RVTlandscapeaddelement.png

    에셋 지정 드롭다운으로 원하는 런타임 버추얼 텍스처 에셋 을 선택합니다.

    4_x_RVTlandscapeassignRVTasset.png

런타임 버추얼 텍스처 볼륨을 랜드스케이프 지형에 배치하고 스케일을 조절했으며, 런타임 버추얼 텍스처 에셋을 랜드스케이프에 지정했다면 지형 머티리얼이 바로 보일 것입니다. 올바르게 구성되지 않은 부분이 있으면 랜드스케이프가 검은색으로 렌더링됩니다.

5 - 액터를 런타임 버추얼 텍스처로 렌더링하기

랜드스케이프의 머티리얼을 구성했으니 이제 지형을 따라 이어지는 도로 스플라인처럼 런타임 버추얼 텍스처로 렌더링되는 다른 씬 액터를 구성할 수 있습니다. 런타임 버추얼 텍스처를 출력하기 위해 구성되고 배치된 RVT 볼륨 안에 위치한 모든 액터는 랜드스케이프에 적용된 런타임 버추얼 텍스처 에셋의 일부로 캡처되고 렌더링됩니다.

이 섹션의 스플라인은 이미 콘텐츠 예시에 구성된 랜드스케이프 스플라인입니다. 아래 단계를 다른 씬 액터와 머티리얼에 적용해도 같은 효과를 낼 수 있습니다.

  1. 드롭다운 메뉴의 모드(Modes) 로 이동한 뒤 랜드스케이프(Landscape) 를 선택합니다.

    5_1_SelectLandscapeMode.png

  2. 랜드스케이프(Landscape) 툴바에서 스플라인(Splines) 을 선택합니다.

    5_2_SelectEditSplines.png

  3. 레벨 뷰포트에서 스플라인의 한 부분을 선택합니다. 레벨 디테일(Details) 패널에서 세그먼트(Segments) 버튼을 클릭하여 스플라인을 구성하는 모든 세그먼트를 선택합니다.

    5_3_SelectSplineSegments.png

  4. 랜드스케이프 스플라인 메시(Landscape Spline Meshes) 카테고리에서 스플라인 메시(Spline Meshes) 배열을 엽니다. 스태틱 메시 SM_Street 를 지정해야 합니다. 더블 클릭하여 스태틱 메시 에디터를 엽니다.

    5_4_a_SplineStaticMesh.png

    머티리얼 슬롯(Material Slots) 에서 엘리먼트 0 M_Street 머티리얼을 더블 클릭하여 머티리얼 에디터로 엽니다.

    5_4_b_SplineStaticMeshMaterial.png

    이 스태틱 메시와 지정된 머티리얼에 엘리먼트 0을 선택한 것은 슬롯 0과 1에 부모 머티리얼이 사용되었고 엘리먼트 1은 엘리먼트 0의 자손 머티리얼 인스턴스이기 때문입니다. RVT 에셋에 렌더될 모든 머티리얼은 아래와 같은 단계를 사용해 런타임 버추얼 텍스처로 렌더될 수 있도록 구성해야 한다는 점을 유념하시기 바랍니다.

  5. 머티리얼 그래프에서 우클릭한 뒤 Runtime Virtual Texture Output 노드를 추가합니다. ColorRoughness 노드 출력을 Runtime Virtual Texture Output 노드의 BaseColorRoughness 입력에 연결합니다.

    5_5_SplineMaterialSetup.png

  6. 머티리얼과 스태틱 메시 에디터를 모두 저장하고 닫습니다.

  7. 레벨 뷰포트에서 랜드스케이프 스플라인의 한 부분을 선택합니다. 디테일(Details) 패널에서 세그먼트(Segments) 버튼을 클릭해 어태치된 모든 스플라인 세그먼트를 선택합니다.

    5_x_selectallsplinesegments.png

  8. 스플라인 세그먼트를 선택한 상태로 디테일(Details) 패널까지 스크롤을 내린 다음 버추얼 텍스처(Virtual Texture) 섹션에서 엘리먼트 추가(Add Elements)(+) 아이콘을 클릭합니다. 지정 드롭다운에서 해당하는 런타임 버추얼 텍스처 에셋 을 선택합니다.

    5_x_selectRVTassettoassign.png

  9. 이제 프리미티브(또는 이 데모의 랜드스케이프 스플라인)가 RVT로 렌더링됩니다. 하지만 프리미티브는 계속해서 볼 수 있습니다. 프리미티브가 메인 패스에서 보이지 않는 상태로 RVT에 렌더만 되도록 만들고 싶다면 모드(Modes) 드롭다운에서 레벨에 배치된 런타임 버추얼 텍스처 볼륨(Runtime Virtual Texture Volume) 을 선택하여 레벨 뷰포트를 다시 선택(Select) 모드로 설정합니다. 버추얼 텍스처(Virtual Texture) 섹션의 고급 프로퍼티에서 프리미티브 숨기기(Hide Primitives) 를 활성화합니다.

    5_x_rvtvolumehideprimitives.png

이제 게임 뷰로 볼 때 레벨 뷰포트에서 랜드스케이프 스플라인이 런타임 버추얼 텍스처 에셋으로 렌더링되고 지형의 표면에 적용되면, 더 이상 스플라인 프리미티브가 보이지 않습니다.

런타임 버추얼 텍스처링 제외

런타임 버추얼 텍스처링 포함

RVT를 사용하여 랜드스케이프 표면에 적용한 스플라인 머티리얼을 자세히 보겠습니다.

런타임 버추얼 텍스처링 제외

런타임 버추얼 텍스처링 포함

6 - 직접 해보기

이 가이드를 따라 작업하며 랜드스케이프 머티리얼을 구성하고 런타임 버추얼 텍스처를 사용해 봤으니, 이제 여러분의 액터의 머티리얼을 RVT로 렌더링하는 방법을 탐구할 수 있습니다. 아래의 제안 중에 골라서 시작해 보세요.

  • 데칼처럼 적용할 수 있는 다른 스태틱 메시를 RVT에 추가합니다. 마스크드 머티리얼과 함께 스태틱 메시 평면을 사용하여 데칼 같은 디테일을 지형에 추가하는 방법을 살펴보세요.

  • 폴리지 인스턴스를 사용하여 RVT로 렌더할 수 있는 메시를 페인팅해서 지형에 고유의 베리에이션을 만듭니다.

  • 여러 런타임 버추얼 텍스처 에셋을 사용하여 다양한 종류의 액터 및 런타임 버추얼 텍스처 볼륨으로 액터를 렌더하는 방식을 관리합니다.

  • 반투명 정렬 우선순위(Translucency Sort Priority) 를 사용하여 액터를 RVT로 렌더하는 레이어 순서를 설정합니다. 예를 들어, 0은 바닥 레이어가 되고 값이 높아질수록 위의 레이어가 됩니다.

언리얼 엔진의 이전 버전을 위해 작성된 페이지입니다. 현재 언리얼 엔진 5 버전을 위해 업데이트되지 않았습니다.