Sampel (Objek Tekstur HLSL DirectX)
Sampel tekstur.
<Tipe> Templat Object.Sample( sampler_state S, Lokasi float [, int Offset] );
Parameter
Item | Deskripsi | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Objek |
Jenis objek tekstur apa pun (kecuali Texture2DMS dan Texture2DMSArray). |
||||||||||
S |
[in] Status Sampler. Ini adalah objek yang dideklarasikan dalam file efek yang berisi penetapan status. |
||||||||||
Lokasi |
[in] Koordinat tekstur. Jenis argumen tergantung pada jenis objek tekstur.
|
||||||||||
Offset |
[in] Offset koordinat tekstur opsional, yang dapat digunakan untuk jenis objek tekstur apa pun; offset diterapkan ke lokasi sebelum pengambilan sampel. Offset tekstur harus statis. Jenis argumen tergantung pada jenis objek tekstur. Untuk informasi selengkapnya, lihat Menerapkan offset koordinat tekstur.
|
Menampilkan nilai
Jenis templat tekstur, yang mungkin merupakan vektor tunggal atau multi-komponen. Format didasarkan pada DXGI_FORMAT tekstur.
Minimum Shader Model
Fungsi ini didukung dalam model shader berikut.
vs_4_0 | vs_4_1 | ps_4_0 | ps_4_1 | gs_4_0 | gs_4_1 |
---|---|---|---|---|---|
x | x |
- TextureCubeArray tersedia dalam Model Shader 4.1 atau yang lebih tinggi.
- Shader Model 4.1 tersedia di Direct3D 10.1 atau yang lebih tinggi.
Contoh
Contoh kode parsial ini didasarkan pada file BasicHLSL11.fx dalam Sampel BasicHLSL11.
// Object Declarations
Texture2D g_MeshTexture; // Color texture for mesh
SamplerState MeshTextureSampler
{
Filter = MIN_MAG_MIP_LINEAR;
AddressU = Wrap;
AddressV = Wrap;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION; // vertex position
float4 Diffuse : COLOR0; // vertex diffuse color (note that COLOR0 is clamped from 0..1)
float2 TextureUV : TEXCOORD0; // vertex texture coords
};
VS_OUTPUT In;
// Shader body calling the intrinsic function
...
Output.RGBColor = g_MeshTexture.Sample(MeshTextureSampler, In.TextureUV) * In.Diffuse;
Keterangan
Pengambilan sampel tekstur menggunakan posisi texel untuk mencari nilai texel. Offset dapat diterapkan ke posisi sebelum pencarian. Status sampler berisi opsi pengambilan sampel dan pemfilteran. Metode ini dapat dipanggil dalam shader piksel, tetapi tidak didukung dalam shader vertex atau shader geometri.
Gunakan offset hanya pada miplevel bilangan bulat; jika tidak, Anda mungkin mendapatkan hasil yang berbeda tergantung pada implementasi perangkat keras atau pengaturan driver.
Menghitung posisi texel
Koordinat tekstur adalah nilai floating-point yang mereferensikan data tekstur, yang juga dikenal sebagai ruang tekstur yang dinormalisasi. Mode pembungkusan alamat diterapkan dalam urutan ini (koordinat tekstur + offset + mode pembungkusan) untuk memodifikasi koordinat tekstur di luar rentang [0...1].
Untuk array tekstur, nilai tambahan dalam parameter lokasi menentukan indeks ke dalam array tekstur. Indeks ini diperlakukan sebagai nilai float berskala (bukan ruang yang dinormalisasi untuk koordinat tekstur standar). Konversi ke indeks bilangan bulat dilakukan dalam urutan berikut (float + round-to-nearest-even integer + clamp ke rentang array).
Menerapkan offset koordinat tekstur
Parameter offset memodifikasi koordinat tekstur, dalam ruang texel. Meskipun koordinat tekstur dinormalisasi angka floating-point, offset menerapkan offset bilangan bulat. Perhatikan juga bahwa offset tekstur harus statis.
Format data yang dikembalikan ditentukan oleh format tekstur. Misalnya, jika sumber daya tekstur ditentukan dengan format DXGI_FORMAT_A8B8G8R8_UNORM_SRGB, operasi pengambilan sampel mengonversi texel sampel dari gamma 2.0 menjadi 1.0, memfilter, dan menulis hasilnya sebagai nilai floating-point dalam rentang [0..1].
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk