Array tekstur adalah koleksi tekstur ukuran/format/flags 2D yang sama yang terlihat seperti objek tunggal ke GPU, dan dapat dipesan dalam shaderProgram yang berjalan di GPU. More info
Lihat di Glossary dengan indeks elemen tekstur. Mereka berguna untuk menerapkan sistem rendering terrainPemandangan di tempat kejadian Anda. Terrain GameObject menambahkan pesawat datar besar untuk adegan Anda dan Anda dapat menggunakan jendela Inspektur Terrain untuk menciptakan lanskap rinci. More info
Lihat di Glossary kustom atau efek khusus lainnya di mana Anda membutuhkan cara yang efisien untuk mengakses banyak tekstur dengan ukuran dan format yang sama. Elemen array tekstur 2D juga dikenal sebagai irisan, atau lapisan.
Array tekstur perlu didukung oleh API grafis yang mendasari dan GPU. Mereka tersedia di:
Platform lain tidak mendukung array tekstur (OpenGL ES 2.0 atau WebGL 1.0). Gunakan SystemInfo.supports2DArrayTextures untuk menentukan dukungan array tekstur pada runtime.
Anda dapat mengimpor array tekstur dari file tekstur sumber yang dibagi menjadi sel. Ini disebut tekstur flipbook. Untuk melakukan ini:
Untuk informasi lebih lanjut, lihat Pengaturan impor tekstur.
Untuk membuat array tekstur dari skrip C#, gunakan kelas Tekstur2DArray untuk menginisialisasi tekstur dan mengatur data pixelUnit terkecil dalam gambar komputer. Ukuran piksel tergantung pada resolusi layar Anda. Pencahayaan pixel dihitung pada setiap piksel layar. More info
Lihat di Glossary, dan menyimpan objek sebagai file aset menggunakan AssetDatabase.CreateAsset.
Biasanya, array tekstur digunakan murni dalam memori GPU, tetapi Anda dapat menggunakan Grafik Login, Tekstur2DArray.GetPixel dan Tekstur2DArray.SetPixel untuk mentransfer piksel ke dan dari memori sistem.
Elemen array tekstur juga dapat digunakan sebagai target render. Gunakan RenderTexture.dimension untuk menentukan terlebih dahulu apakah target render adalah menjadi array tekstur 2D. argumen depthSlice untuk Grafik.SetRenderTarget menentukan tingkat mipmap atau peta kubus untuk membuat. Pada platform yang mendukung "dilapisi rendering" (yaitu warna geometri), Anda dapat mengatur argumen depthSlice ke -1 untuk mengatur keseluruhan array tekstur sebagai target render. Anda juga dapat menggunakan warna geometri untuk membuat elemen individual.
Karena array tekstur tidak bekerja pada semua platform, naungan perlu menggunakan target kompilasi yang sesuai atau persyaratan fitur untuk mengaksesnya. Target kompilasi model naungan minimum yang mendukung array tekstur adalah 3.5
, dan nama fitur adalah 2darray
.
Gunakan array tekstur macros ini untuk menyatakan dan sampel:
Contoh naungan berikut sampel array tekstur menggunakan posisi simpul ruang objek sebagai koordinat:
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
// texture arrays are not available everywhere,
// only compile shader on platforms where they are
#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
}
}
}