Landscape Material-2

Height Mask and Virtual Texture

Kang Min Kim
CodeAlpha
4 min readJan 18, 2023

--

10. Height Mask
11. Virtual Texture / Runtime Virtual Texture Blend

10. Height Mask

I-105 Download FRESH SNOW from Quixel Bridge
I-106 Create SnowLayer from M_AutoLandscape
I-107 Create MF_HeightBlend
I-108 Create SnowBlend nodes from M_AutoLandscape
I-109 Add SnowMaterial Layer
I-110 Check SnowLayer and SnowMask parameters
I-111 Create Layt from Landscape
I-112 SnowLayer artifact

MaterialAttributes Input 없이 단순히 I-02 의 노드만 사용하게 되면 눈이 끝나는 지점에서 위와 같은 아티팩트가 생긴다. 이를 해결하기 위해 MF_SlopeBlend 의 노드를 복사해 I-08과 같은 노드를 만든다.

I-113 Create MF_HeightBlendSubtractSlope
I-114 Replace MF_HeightBlend to MF_HeightBlendSubtractSlope
I-115 Check Snow relative parameters in MI_AutoLandscape
I-116 Use SnowEdgeAdjustMask parameters

SnowLayer 에 HeightMask 를 적용함으로써 위와 같이 부드러운 환경을 블렌딩을 구현했다. 이제 SlopeLayer 에도 동일하게 적용한다.

I-117 SlopeLayer TriplanarTextureScale
I-118 SlopeLayer TriplanarTextureScale issue

SlopeLayer 에 사용된 TriPlanarTexutreScale 을 조절할 경우 HeightMap의 아래쪽에 있는 텍스처의 해상도는 올라가지만 I-118 처럼 상단의 경우 패턴이 생긴다. 이를 제거 하기 위해 BlendMaterialAttributes 와 MF_HeightBlend 를사용해 보간한다.

I-119 NamedReroute
I-120 Use BlendMaterialAttributes and MF_HeightBlend
I-121 Reconnect Cached Parameters
I-122 Set proper value of TriplanarAdjustment parameter
I-123 Check the results

I-120 에서 Constant4Vector 를 파라미터화 하고 이름을 적절하게 변경해주었다. 이 변경을 통해 I-123과 같이 HeightMap 이 적용된 SlopeLayer를 사용하면 TriplanarAdjustment 과 SlopeLayer_TilingAdjustment를 사용해 높이 맵에 따른 텍스처 디테일 조절이 가능해 진다.

11. Virtual Texture / Runtime Virtual Texture Blend

가상 텍스처를 사용하게 되면 아래와 같은 이점이 있다. 이 기능을 사용하기 위해서는 Project Settings>Engine>Rendering>Virtual Textures 에서 Enable virtual texture support 를 체크 해주어야 한다. (에디터 재시작 필요)

  • 복잡한 landscape 재질에서 성능 향상
  • Landscape 액터가 아닌 액터에 Landscape 재질 사용 가능
I-124 Named reroute from SetMaterialAttributes output
I-125 Use Runtime Virtual Texture Output node

TransformVector 의 속성에서 Source>Tangent Space 로 Destination>World Space 로 설정한다.

I-126 Content Browser>RB>Textures>Runtime Virtual Texture>Rename to RVT_Landscape
I-127 Landscape>Set RVT_Landscape>Create Volumes
I-128 Use Runtime Virtual Textrue Sample

TransformVector 의 속성에서 Source>World Space 로 Destination>Tangent Space 로 설정한다.

I-129 Use Switch Parameter>Grouping to GlobalControl
I-130 Virutal Texture Off
I-131 Virutal Texture On
I-132 Create Runtime Virtual Texture
I-133 Virtual texture content set to World Height
I-134 Create New Virtual Textures on Landscape and set RVT_Height texture
I-135 Duplicate RuntimeVirtualTexture and rename it to RVTVolumn_Height

RVTVolumn_Landscape 를 복사 해 이름을 변경하고 Virtual Texture 에 RVT_Height 를 지정한다.

I-136 Download CEMENT RUBBLE from QuixelBridge
I-137 Set dressing actor on the landscape
I-138 Find Assigned Material
I-139 Find Parent material from MI_Cement_Rubble_riuvL_2k
I-140 Create M_MS_Default_Material_RVTBlend (Duplicated from original one)
I-141 Create MF_RVTBlend
I-142 RVT_Material and TransformVector is World Space to Tangent Space
I-143 Set RVT_Landscape on Runtime Virtual Texture Sample
I-144 RVT Height and its Virtual Texture
I-145 Create RVT Mask
I-146 Use BlendMaterialAttributes
I-147 Use MF_RVTBlend on M_MS_Default_Material_RVTBlend
I-148 Set M_MS_Default_Material_RVTBlend on MI_Cement_Rubble_riuvL_2k’s Parent material
I-149 UseRVTBlend
I-150 Check RVT mask based on height map

--

--