환영합니다
지난 강의에서 Runtime Virtual Texture(런타임 버추얼 텍스처, RVT)에 대해 알아보았고
RVT를 사용해서 배경의 능력을 향상 시킬 수 있는 것을 배웠습니다. 실제로 설정하기 위해
따라야 하는 단계가 상당히 있습니다
먼저, 프로젝트 설정에서 이에 대한 지원을 활성화 시켜야 합니다
그리고 RVT에 머티리얼 데이터를 출력해야 합니다
다음, RVT 에셋을 랜드스케이프에 할당해야 합니다
이 단계 다음으로 RVT 볼륨을 명시해야 합니다
마지막으로 RVT 데이터를 랜드스케이프에 다시 적용해야 합니다
복잡해 보이는 것을 알지만 함께 차근차근 진행하겠습니다
먼저 RVT 지원을 프로젝트 설정에 활성화 시켜야 합니다
프로젝트로 돌아옵니다
기억하시겠지만 이 섹션의 시작에도 했습니다
안하신 경우, 옵션을 찾는 방법을 다시 알려드리겠습니다. Edit으로 들어가서
Project Settings를 클릭합니다. 검색창으로 가서 'VIRTUAL
TEXTURE'를 검색합니다
여기에 Enable virtual texture support이 보입니다
섹션 시작에서 체크 표시 안하셨다면 지금 하시고 편집기를
재시작하셔야 합니다. 모든 셰이더가 재컴파일 되는데 시간이 걸릴 수 있습니다
상당히 간단한 단계입니다
좋습니다
첫 번째 단계를 완료했습니다
두 번째로 머티리얼 데이터를 RVT에 출력해야 합니다
이를 하기 위해, 새로 사용해야 하는 노드가 있습니다
여기에서 Runtime Virtual Texture Output 노드를 사용해야 합니다
보시다시피 데이터를 연결할 수 있는 많은 소켓이 있습니다. 다시 말하자면
랜드스케이프의 베이스 컬러를 BaseColor에 연결하고
스페큘러는 Specular에 노멀은 Normal에 연결해야 한다는 것입니다
프로젝트로 돌아가서 M_AutoLandscape를 열어줍니다
이 데이터를 출력해야 하는 것을 기억하고 이 노드를 확보해야 합니다
마우스 오른쪽 버튼을 클릭하고 'RUNTIME'을 검색합니다
그러면 RuntimeVirtualTextureOutput이 보입니다
이 랜드스케이프의 머티리얼 데이터를 이 출력 노드에 출력해야 합니다
지금 해보겠습니다
먼저 베이스 컬러가 필요합니다
이 머티리얼의 베이스 컬러를 어떻게 확보할 수 있을까요?
이 노드를 보시면 GetMaterialAttributes 노드를 사용하여
이 Layer Blend 노드의 머티리얼을 확보했습니다
이 모든 머티리얼 출력을 위해 같은 절차를 실행해야 합니다
지금 해보겠습니다
정리된 그래프를 유지하기 위해 먼저 이 노드를 여기로 살짝 끌어옵니다
여기서 Name Reroute(이름 경유) 노드 사용합니다
이름은 CachedDefaultLandscapeMaterialOutput으로 합니다
이름이 다소 길지만 설명이 필요 없는 이름입니다
좋습니다
이제 이 노드에 랜드스케이프 머티리얼의 전체 데이터가 있습니다. 이 데이터를 여기에서 사용합니다
이제 그 이름 경유 노드를 사용하고 그 다음 GetMaterialAttribute 노드를 사용합니다
우리가 필요한 어트리뷰트는 이 특성들과 관련된 것입니다
먼저 요소를 추가합니다
이 것이 베이스 컬러가 될 것이고 두 번째, 세 번째 그리고 네 번째 요소를 생성합니다
여기 메탈릭 소켓은 삭제하는데 이 드롭다운 메뉴를 선택하고 Delete를 클릭하시면 됩니다
요소를 계속 추가하여 베이스 컬러는 BaseColor에 스페큘러는 Specular에
Roughness(러프니스, 거친 정도)는 Roughness에 연결합니다
여기서 메탈릭은 노멀로 변경합니다
노멀을 Normal 소켓에 연결하기 전에 추가해야 하는 노드가 있습니다
먼저 노멀의 벡터 정보를 변환해야 합니다
이 핀을 끌고 나와서 'transform'을 검색합니다. 이 노드를 선택하시면
탄젠트 공간에서 월드 공간으로 변환한다고 나와있습니다
이를 하는 이유는 노멀 맵이 이 레벨의 스태틱(정적) 메시에서 제대로
작동하기 위해서 입니다
모든 정적 메시를 이 랜드스케이프 머티리얼과 블렌드하고 싶다면 이 단계가 필수적입니다
이를 통해 모든 것이 제대로 작동할 수 있도록 보장합니다
따라서 노멀을 탄젠트 공간에서 월드 공간으로 변환하고 Normal 소켓에 연결해 줘야 합니다
이 소켓을 WorldHeight입니다
여기는 랜드스케이프 전체의 월드 높이 정보를 저장하고 있습니다
나중에 머티리얼을 블렌드하기 위한 마스크를 생성할 때 사용할 수 있습니다
연결하는 데이터는 비교적 간단합니다
WorldPosition 노드를 부르고 ComponentMask를 불러와 z 정보를 마스크하시면 됩니다
이것이 월드 높이가 됩니다
이제 이것을 WorldHeight에 연결합니다
좋습니다
모두 끝났습니다
랜드스케이프 머티리얼의 머티리얼 데이터를 RVT에 출력했습니다
기억하실 것은 벡터를 변환해야 하는 것입니다
노멀을 탄젠트 공간에서 월드 공간으로 변환해야 합니다
이렇게 두 번째 단계를 완료했습니다
세 번째 단계로 RVT 에셋을 랜드스케이프에 할당하는 것입니다
생각해보시면 머티리얼 데이터를 출력했으나 어디에 출력했는지 모릅니다
그렇기 때문에 랜드스케이프에 RVT를 할당해야 하는 것입니다
그리고 이 텍스처에 모든 출력 데이터를 저장할 수 있습니다
지금 해보겠습니다
프로젝트로 돌아왔습니다
AutoLandscapeMaterial에 새로운 폴더를 생성합니다. 이름은
RuntimeVirtualTexture로 정하고 더블 클릭하여 열어줍니다
여기에 출력 데이터를 저장할 RVT 에셋을 만듭니다
따라서
마우스 오른쪽 버튼을 클릭하고 Textures로 들어갑니다
여기에 Runtime Virtual Texture가 보이실 겁니다. 이름은 RVT_Landscape으로 합니다
RVT는 Runtime Virtual Texture의 약자입니다
여기에 랜드스케이프의 머티리얼 데이터를 저장할 수 있습니다. 에셋을 만든 후
랜드스케이프에 할당해야 합니다
랜드스케이프를 선택하고 검색창에 갑니다
여기에 'vitrual'을 검색하시면 바로 Draw in Virtual Textures가 보입니다
여기에 데이터를 저장하고 싶은 텍스처를 지정할 수 있습니다
여기 요소 추가 버튼을 클릭하여 버추얼 텍스처를 지정할 수 있습니다
이 드롭다운 메뉴를 클릭하면 새로 만들어진 에셋을 선택할 수 있습니다
이제 모든 출력 데이터가 이 버추얼 텍스처에 가게 됩니다
이렇게 세 번째 단계를 완료했습니다
이와 같이 RVT 에셋을 랜드스케이프에 할당했는데 여기서 끝이 아닙니다
출력 데이터가 제대로 작동하기 위해
RVT 볼륨을 지정해야 합니다
프로젝트로 돌아왔습니다
이를 위해 두 가지 방법이 있습니다
보시면 Create Volumes 버튼이 있습니다
클릭하시면 RuntimeVirtualTextureVolume이
생성된 것을 보실 수 있고 이 랜드스케이프에 맞춰져 생성이 됐습니다
위로 날아가면 랜드스케이프가 완벽하게 들어가는 볼륨이 있는 것을 확인하실 수
있습니다
월드 아웃라이너에 RuntimeVirtualTextureVolume이 있는 것이 보입니다
F2를 눌러 이름을 RVTVolume_Landscape으로 변경합니다
버튼을 누르면 버추얼 텍스처가 자동으로
직접 RVT_Landscape 에셋을 사용하도록 설정됩니다
따라서 비교적 간단한 단계입니다
말씀드린 바와 같이 두 가지 방법이 있습니다
다른 방법은 Place Actors(액터 배치)로 들어가 Volumes로 들어가는 것입니다. 여기서
버추얼 텍스처 볼륨을 직접 끌고 와서 바운드를 설정하실 수 있습니다
SetBounds 버튼을 누르고 이 아이콘을 눌러 랜드스케이프를 고릅니다. 그리고 수동으로
이 버추얼 텍스처를 할당합니다. 같은 결과를 얻으실 수 있을 것입니다
RVT 볼륨을 특정한 후 이와 같은 결과가 보이실 겁니다
또 한 단계를 끝냈습니다
마지막으로 이 저장된 데이터를 랜드스케이프에 다시 사용해야 합니다
이를 위해서 또 다른 노드가 필요합니다
노드의 이름은 Runtime Virtual Texture Sample입니다
Texture Sample 노드와 매우 유사합니다
즉, RVT를 샘플링하는 것이며 여기 출력 소켓을 보실 수 있는데
랜드스케이프 머티리얼에 다시 연결하실 수 있습니다
프로젝트로 돌아가서 AutoLandscapeMaterial 폴더에 들어가 더블 클릭하여
M_AutoLandscape 머티리얼을 열어줍니다. RVT를 출력한 후
이 출력 데이터를 랜드스케이프에서 다시 사용해야 합니다
이를 위해 마우스 오른쪽 버튼을 클릭하고 'runtime virtual texture'를 검색합니다
여기에서 RuntimeVirtualTextureSample이 보입니다. 선택하시고 원하시는 버추얼
텍스처를 선택합니다
선택된 것이 우리의 버추얼 텍스처 에셋이 됩니다
이 드롭다운 메뉴를 클릭하고 RVT_Landscape을 선택합니다
이제 이 에셋에 저장된 데이터를 사용합니다
여기에서 버추얼 텍스처 콘텐츠를 노멀, 러프니스에서 베이스 컬러, 노멀, 러프니스와
스페큘러로 변경합니다
기억하실지 모르겠지만 여기가 텍스처 에셋에 출력하는 데이터입니다. 다음으로 여기 데이터를
재사용해야 합니다
따라서 또 다른 SetMaterialAttributes 노드를 사용합니다. 여기에서 각자의 소켓을
이 텍스처 샘플 노드에 노출합니다
먼저 베이스 컬러가 필요하고, 스페큘러, 러프니스 그리고 노멀이 필요합니다
그리고 여기 메탈릭을 삭제하고 두 번째는 스페큘러가 되고
세 번째는 러프니스
네 번째는 노멀이 됩니다. 베이스 컬러는 베이스 컬러에, 스페큘러는 스페큘러에, 러프니스는 러프니스에 연결합니다
노멀의 경우 다시 변환 시켜야 합니다
위에서 보이는 것과 같이 노멀을 탄젠트 공간에서 월드 공간으로 변환하고 런타임 You see above we transform the normal from tension space to workspace and we stored it in a runtime
버추얼 텍스처 에셋에 저장했습니다
올바른 섀도를 위해 다시 변환해야 합니다
그러기 위해 이 핀을 끌고 나와서 'transform'을 검색합니다
이제 소스를 선택해야 합니다
소스는 월드 공간이 되고 탄젠트 공간으로 다시 변환 시켜야 합니다
그리고 노멀 소켓에 연결합니다
좋습니다
이 것이 우리의 런타임 버추얼 텍스처가 되고 이 출력을 캐시합니다
그래서 이름 경유 노드를 사용합니다
이름은 CachedRVTLandscapeMaterial로 합니다. 최종 출력으로
이 캐시된 노드를 사용할 수 있습니다
이 모든 노드를 선택하고 코멘트를 달아줍니다
제목은 RVT Texture Sample로 합니다
좋습니다
다시 Final Output으로 돌아갑니다
이 부분이 최종 출력을 통과하기 위해
머티리얼 어트리뷰트에 연결해야 합니다
그러나 다른 특성들과 마찬가지로 키고 끄는 기능을 부여하고 싶습니다
여러분이 하기 비교적 쉬울 것으로 생각됩니다
이를 위해 단순하게 스위치 파라미터를 사용하면 됩니다
이름은 UseRuntimeVirtualTexture로 지정합니다. 선택하는 경우에는
CachedRVTLandscapeMaterial이 최종 출력이 되게 하고 싶고
선택을 취소하는 경우, 이 것이 최종 출력이 되게 하고자 합니다
이 코멘트 상자를 조금 넓히고 이 노드들을 옆으로 옮깁니다. 그리고
CachedDefaultLandscapeMaterialOutput을 사용해서 이를 False에 플러그하고 이 부분을
최종 출력에 플러그합니다
이제 그래프를 약간 정리합니다
잊기 전에 이 파라미터를 고유의 그룹에 넣습니다
그룹명은 00-GlobalControl로 지정하고 정렬 우순위는 1으로 설정하고 적용을 클릭합니다
다시 레벨로 돌아갑니다
이제 RVT를 사용할 수 있을 것입니다. 사용하기 위해 머티리얼
인스턴스로 들어가서 전원을 켜줍니다
이것이 RVT 사용 전이며 체크를 하면
RVT 사용 후로 바뀝니다. 차이점을 못 느끼겠다고 생각하실 수 있습니다
lighting(라이팅)포함 모드로 들어가고 최적화 뷰모드로 들어가 셰이더 복잡도로 가시면
랜드스케이프 전체가 녹색으로 바뀐 것을 보실 수 있습니다
체크를 해제하면 다시 붉은색으로 변합니다
이와 같이 성능을 향상 시킬 수 있습니다. 이를 확인하기 위해 Frame Rate(프레임 레이트)를 볼 수 있습니다
이 버튼을 가면 FBS 보기 버튼이 있습니다. 누르면
여기 보이는 것이 런타임 버추얼 텍스처의 Frame Rate(프레임 레이트)입니다. 체크를 해제하면
런타임 버추얼 텍스처를 사용하지 않을 때 Frame Rate(프레임 레이트)입니다. 차이가 아주 큽니다. 이것이 마지막 단계입니다
이 런타임 버추얼 텍스처 데이터를 랜드스케이프 머티리얼에 재사용해야 합니다. 이제 여러분도
같은 것을 할 차례입니다
이렇게 따라하실 단계들이 있습니다
런타임 버추얼 텍스처를 설정하기 위한 체크리스트로 사용하실 수 있습니다
나중에 런타임 버추얼 텍스처에 문제가 발생한다면
이 리스트를 차근차근 살펴봐서 틀린 점을 찾으시면 됩니다
여기서 중요한 점은 런타임 버추얼 텍스처 에셋에 머티리얼 데이터를 출력하실 때
노멀을 월드 공간으로 변환하는 것입니다
그리고 랜드스케이프 머티리얼에 다시 사용할 때 노멀을 다시 탄젠트 공간으로 바꾸셔야
합니다
여기가 중요한 부분들이고 이를 하지 않으며 올바르지 않은 섀도 속성이 보일 것입니다
비디오를 잠시 멈추시고 도움이 필요하시면 다시 영상을 참고하시기 바랍니다
다시 오신 것을 환영합니다
RVT를 성공적으로 설치하셨나요?
성공적으로 설치하셨기를 바랍니다
실행 할 단계가 상당히 많다는 것을 알고 있습니다
체크리스트를 따라 차근차근 진행하시면 문제 없이 설치가 가능하실 것입니다
전에 런타임 버추얼 텍스처는 다이내믹 한 Object(오브젝트)를 지원하지 않는다고 언급했지만
머티리얼 인스턴스에서 속성을 수정할 수 없다는 의미는 아닙니다
런타임 버추얼 텍스처 사용을 체크한 직후 이곳에서 속성을 조절할 수 있습니다
예를 들어 잔디 레이어가 약간 어두워 보이는 것 같습니다
이런 베이스 컬러들을 여기에서 조절할 수 있습니다
예를 들어 대비를 낮출 수 있습니다. 0.9로 조절해 보겠습니다. 그리고 여기에 밝기를
올려줍니다
이와 같이 머티리얼 인스턴스에서 속성을 조절할 수 있습니다
더 이상 카메라와 시간에 접근할 수 없다는 차이가 있습니다
이번 강의에서 랜드스케이프에 런타임 버추얼 텍스처를 설치했습니다
보시다시피 이를 사용하여 Frame Rate(프레임 레이트)를 향상 시켜 scene(씬)의 성능을 올렸습니다
다음 강의에서 여기에 저장된 높이 데이터 사용 방법을 알아보겠습니다
다음 강의에서 뵙겠습니다