Sample Virtual Texture 노드
설명
가상 텍스처를 샘플링하고, 셰이더에서 사용할 최대 4개의 벡터 4 컬러 값을 반환합니다. UV 입력을 사용하여 UV 좌표를 오버라이드할 수 있습니다. Sample Virtual Texture 노드는 하나의 UV 좌표를 입력으로 사용하고, 해당 UV 좌표를 사용하여 가상 텍스처의 모든 텍스처를 샘플링합니다.
Sample Virtual Texture 노드를 사용하여 노멀 맵을 샘플링하려면 노멀 맵으로 샘플링하려는 각 레이어로 이동한 후 Layer Type 드롭다운 메뉴를 열고 Normal을 선택하십시오.
기본적으로 이 노드는 프래그먼트 셰이더 단계에서만 사용할 수 있습니다. 이 노드를 사용하는 방법 또는 버텍스 셰이더 단계에서 사용하도록 설정하는 방법에 대한 자세한 내용은 셰이더 그래프에서 가상 텍스처링 스트리밍 사용을 참조하십시오.
프로젝트에서 가상 텍스처링을 비활성화하면 이 노드는 Sample 2D Texture 노드와 동일한 방식으로 작동하며, 각 텍스처에 대해 표준 2D 샘플링을 수행합니다.
셰이더 그래프 에셋을 컴파일하려면 Sample Virtual Texture 노드를 Virtual Texture 프로퍼티에 연결해야 합니다. 노드를 프로퍼티에 연결하지 않으면 노드에 연결이 필요하다는 오류가 표시됩니다.
가상 텍스처링 스트리밍에 대한 자세한 내용은 가상 텍스처링 스트리밍을 참조하십시오.
포트
이름 | 방향 | Type | 바인딩 | 설명 |
---|---|---|---|---|
UV | 입력 | 벡터 2 | UV | UV 좌표입니다. |
VT | 입력 | 가상 텍스처 | None | 샘플링할 가상 텍스처입니다. Virtual Texture 프로퍼티에 연결해야 합니다. |
Out | 출력 | 벡터 4 | None | 레이어 1을 RGBA로 출력한 값입니다. |
Out2 | 출력 | 벡터 4 | None | 레이어 2를 RGBA로 출력한 값입니다. |
Out3 | 출력 | 벡터 4 | None | 레이어 3을 RGBA로 출력한 값입니다. |
Out4 | 출력 | 벡터 4 | None | 레이어 4를 RGBA로 출력한 값입니다. |
설정
Sample Virtual Texture 노드에는 동작을 지정하는 데 사용할 수 있는 몇 가지 설정이 있습니다. 이러한 설정은 프로젝트에서 설정했을 수 있는 모든 스크립트와 함께 작동합니다. 설정을 확인하려면 그래프 인스펙터가 열린 상태에서 노드를 선택하십시오. 자세한 내용은 가상 텍스처링 스트리밍을 참조하십시오.
이름 | Type | 옵션 | 설명 |
---|---|---|---|
Lod Mode | 드롭다운 | Automatic, Lod Level, Lod Bias, Derivatives | 텍스처를 샘플링할 때 사용할 특정 Lod 모드를 설정합니다. |
Quality | 드롭다운 | Low, High | 텍스처를 샘플링할 때 사용할 품질 모드를 설정합니다. |
Manual Streaming | Toggle | Enabled/Disabled | 노드가 자동 스트리밍 또는 수동 스트리밍을 사용해야 하는지 여부를 결정합니다. |
Layer 1 Type | 드롭다운 | Default, Normal | 레이어 1의 텍스처 타입입니다. |
Layer 2 Type | 드롭다운 | Default, Normal | 레이어 2의 텍스처 타입입니다. |
Layer 3 Type | 드롭다운 | Default, Normal | 레이어 3의 텍스처 타입입니다. 이 옵션은 가상 텍스처에 최소 3개의 레이어가 있는 경우에만 나타납니다. |
Layer 4 Type | 드롭다운 | Default, Normal | 레이어 4의 텍스처 타입입니다. 이 옵션은 가상 텍스처에 최소 4개의 레이어가 있는 경우에만 나타납니다. |
생성된 코드 예제
다음 예제 코드는 이 노드의 가능한 결과 중 하나입니다.
float4 SampleVirtualTexture(float2 uv, VTPropertyWithTextureType vtProperty, out float4 Layer0)
{
VtInputParameters vtParams;
vtParams.uv = uv;
vtParams.lodOrOffset = 0.0f;
vtParams.dx = 0.0f;
vtParams.dy = 0.0f;
vtParams.addressMode = VtAddressMode_Wrap;
vtParams.filterMode = VtFilter_Anisotropic;
vtParams.levelMode = VtLevel_Automatic;
vtParams.uvMode = VtUvSpace_Regular;
vtParams.sampleQuality = VtSampleQuality_High;
#if defined(SHADER_STAGE_RAY_TRACING)
if (vtParams.levelMode == VtLevel_Automatic || vtParams.levelMode == VtLevel_Bias)
{
vtParams.levelMode = VtLevel_Lod;
vtParams.lodOrOffset = 0.0f;
}
#endif
StackInfo info = PrepareVT(vtProperty.vtProperty, vtParams);
Layer0 = SampleVTLayerWithTextureType(vtProperty, vtParams, info, 0);
return GetResolveOutput(info);
}