Unity 텍스처 배열 가이드
개요
텍스처 배열은 GPU에 단일 오브젝트처럼 보이는 동일 크기와 형식의 2D 텍스처 컬렉션입니다. 각 텍스처 요소는 셰이더에서 샘플링할 수 있는 인덱스를 가지고 있습니다. 주로 커스텀 터레인 렌더링 시스템이나 다른 특수 효과를 구현할 때 유용하게 사용됩니다.
주요 특징
특징 | 설명 |
---|---|
형식 | 동일한 크기 및 형식의 2D 텍스처의 컬렉션 |
슬라이스 | 각 2D 텍스처 요소는 슬라이스 또는 레이어라고도 불립니다. |
플랫폼 지원 | Direct3D, OpenGL Core, Metal, OpenGL ES 3.0 지원 |
지원 확인 | SystemInfo.supports2DArrayTextures 를 사용하여 런타임 시 확인 가능 |
텍스처 배열 임포트 과정
소스 텍스처 파일에서 텍스처 배열을 임포트하려면 다음 단계에 따라 진행합니다:
- 소스 텍스처를 Unity 프로젝트로 임포트
- 프로젝트 뷰에서 결과 텍스처 에셋 선택
- 인스펙터에서 Texture Shape를
2D Array
로 설정 (Columns 및 Rows 프로퍼티도 조정) - 적절한 값으로 Columns 및 Rows 설정
- Apply 클릭
C# 스크립트로 텍스처 배열 생성 및 조작
C# 스크립트를 통해 텍스처 배열을 생성하려면 Texture2DArray
클래스를 사용하여 텍스처를 초기화하고, 픽셀 데이터를 설정한 뒤 AssetDatabase.CreateAsset
로 저장합니다.
// 텍스처 배열 초기화 예제
Texture2DArray textureArray = new Texture2DArray(width, height, depth, TextureFormat.RGBA32, mipChain, linear);
텍스처 배열을 렌더 타겟으로 사용하기
렌더 타겟으로 텍스처 배열을 이용하려면 RenderTexture.dimension
로 설정하고 Graphics.SetRenderTarget
의 depthSlice
인수를 사용하여 특정 텍스처 레이어를 렌더링할 수 있습니다.
셰이더에서 텍스처 배열 사용하기
셰이더에서 텍스처 배열을 사용하기 위해서는 적절한 컴파일 타겟 및 기능 요구 사항이 필요합니다. 아래는 텍스처 배열을 사용하는 기본 셰이더 구조입니다:
Shader "Example/Sample2DArrayTexture"
{
Properties
{
_MyArr ("Tex", 2DArray) = "" {}
_SliceRange ("Slices", Range(0,16)) = 6
_UVScale ("UVScale", Float) = 1.0
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma require 2darray
#include "UnityCG.cginc"
struct v2f
{
float3 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
float _SliceRange;
float _UVScale;
v2f vert (float4 vertex : POSITION)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, vertex);
o.uv.xy = (vertex.xy + 0.5) * _UVScale;
o.uv.z = (vertex.z + 0.5) * _SliceRange;
return o;
}
UNITY_DECLARE_TEX2DARRAY(_MyArr);
half4 frag (v2f i) : SV_Target
{
return UNITY_SAMPLE_TEX2DARRAY(_MyArr, i.uv);
}
ENDCG
}
}
}
추가 자료
이 가이드를 통해 Unity에서 텍스처 배열을 효과적으로 사용하고 관리할 수 있기를 바랍니다.