Jenis data skalar

HLSL mendukung beberapa jenis data skalar:

  • bool - benar atau salah.
  • int - bilangan bulat bertanda tangan 32-bit.
  • uint - bilangan bulat tidak bertanda 32-bit.
  • dword - bilangan bulat tidak bertanda 32-bit.
  • setengah - nilai titik mengambang 16-bit. Jenis data ini hanya disediakan untuk kompatibilitas bahasa. Shader Direct3D 10 menargetkan petakan semua setengah jenis data ke jenis data float. Setengah jenis data tidak dapat digunakan pada variabel global yang seragam (jika fungsionalitas tersebut diinginkan, gunakan bendera /Gec).
  • float - nilai titik mengambang 32-bit.
  • double - nilai titik mengambang 64-bit. Anda tidak dapat menggunakan nilai presisi ganda sebagai input dan output untuk aliran. Untuk meneruskan nilai presisi ganda antar shader, nyatakan setiap ganda sebagai sepasang jenis data uint . Kemudian, gunakan fungsi asuint untuk mengemas masing-masing ganda ke dalam pasangan uints dan fungsi asdouble untuk membongkar pasangan uints kembali ke ganda.

Dimulai dengan Windows 8, HLSL juga mendukung jenis data skalar presisi minimum. Driver grafis dapat menerapkan jenis data skalar presisi minimum dengan menggunakan presisi apa pun yang lebih besar dari atau sama dengan presisi bit yang ditentukan. Sebaiknya jangan mengandalkan perilaku penjepitan atau pembungkusan yang tergantung pada presisi khusus yang mendasarinya. Misalnya, driver grafis mungkin menjalankan aritmatika pada nilai min16float dengan presisi 32-bit penuh.

  • min16float - nilai floating point minimum 16-bit.
  • min10float - nilai floating point minimum 10-bit.
  • min16int - bilangan bulat bertanda 16-bit minimum.
  • min12int - bilangan bulat bertanda 12-bit minimum.
  • min16uint - bilangan bulat minimum 16-bit yang tidak ditandatangani.

Untuk informasi selengkapnya tentang literal skalar, lihat Tata Bahasa.

Skalar berikut diperkenalkan dalam HLSL Shader Model 6.0 (dalam Windows 10, versi 1607):

  • uint64_t - Bilangan bulat yang tidak ditandatangani 64-bit.
  • int64_t - Bilangan bulat bertanda tangan 64-bit.

Skalar berikut diperkenalkan dalam HLSL Shader Model 6.2 (dalam Windows 10, versi 1803), dan dapat digunakan jika -enable-16bit-types digunakan:

  • float16_t - Selalu nilai floating point 16-bit (dibandingkan dengan float 16-bit lainnya, yang mungkin atau mungkin tidak 16-bit).
  • uint16_t - Bilangan bulat yang tidak ditandatangani 16-bit.
  • int16_t - Bilangan bulat bertanda tangan 16-bit.

Untuk informasi selengkapnya tentang jenis 16-bit, lihat Jenis Skalar 16 Bit. Mereka membutuhkan dukungan 16-bit dalam perangkat keras, yang didukung oleh Turing atau lebih tinggi.

Perbedaan antara Direct3D 9 dan Direct3D 10:

Di Direct3D 10, jenis berikut adalah pengubah untuk jenis float:

  • snorm float - IEEE 32-bit signed-normalized float dalam rentang -1 hingga 1 inklusif.
  • unorm float - IEEE 32-bit unsigned-normalized float dalam rentang 0 hingga 1 inklusif.

Misalnya, berikut adalah deklarasi variabel float bertanda tangan 4 komponen yang dinormalisasi.

snorm float4 fourComponentIEEEFloat;

Jenis String

HLSL juga mendukung jenis string , yang merupakan string ASCII. Tidak ada operasi atau status yang menerima string; tetapi efek dapat mengkueri parameter dan anotasi string.

Contoh

// Top-level variable.
float globalShaderVariable; 

// Top-level function.
void function(
in float4 position: POSITION0 // Top-level argument.
              )
{
  float localShaderVariable; // Local variable.
  function2(...)
}

void function2()
{
  ...
}

Lihat juga