Tekstur 3D
Cubemaps

Tekstur array

Switch to Scripting

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.

Dukungan Platform

Array tekstur perlu didukung oleh API grafis yang mendasari dan GPU. Mereka tersedia di:

  • Direct3D 11/12 (Windows, Xbox One)
  • OpenGL Core (Mac OS X, Linux)
  • Mobile Website Index. Sitemap
  • OpenGL ES 3.0 (Android, WebGL 2.0)

Platform lain tidak mendukung array tekstur (OpenGL ES 2.0 atau WebGL 1.0). Gunakan SystemInfo.supports2DArrayTextures untuk menentukan dukungan array tekstur pada runtime.

Mengimpor array tekstur

Anda dapat mengimpor array tekstur dari file tekstur sumber yang dibagi menjadi sel. Ini disebut tekstur flipbook. Untuk melakukan ini:

  1. Mengimpor tekstur sumber ke Proyek Unity Anda.
  2. Dalam tampilan Proyek Anda, pilih Aset Tekstur yang dihasilkan. Unity menampilkan pengaturan impor Tekstur di InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
    Lihat di Glossary
    .
  3. Inspektur, set Texture Shape ke 2D Array. Unity menampilkan sifat Kolom dan Baris.
  4. Mengatur Columns dan Rows untuk nilai yang sesuai untuk tekstur flipbook Anda.
  5. Klik Apply.

Untuk informasi lebih lanjut, lihat Pengaturan impor tekstur.

Membuat dan memanipulasi array tekstur menggunakan skrip

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.

Menggunakan array tekstur sebagai target render

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.

Menggunakan array tekstur di naungan

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:

  • UNITY_DECLARE_TEX2DARRAY(nama) menyatakan variabel sampler array tekstur dalam kode HLSL.
  • UNITY_SAMPLE_TEX2DARRAY (nama, uv) sampel array tekstur dengan UV float3; komponen z koordinat adalah indeks elemen array.
  • UNITY_SAMPLE_TEX2DARRAY_LOD (nama, uv,lod) sampel array tekstur dengan tingkat mipmap eksplisit.

Examples

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
        }
    }
}

Lihat Juga

Tekstur 3D
Cubemaps