Argumen Fungsi
Fungsi mengambil satu atau beberapa argumen input; gunakan sintaks berikut untuk mendeklarasikan setiap argumen.
[InputModifier] Nama Jenis [: Semantik] [InterpolationModifier] [= Initializers] |
[Pengubah] Nama Jenis [: Semantik] [: Pengubah Interpolasi] [= Initializer(s)]
Jika ada beberapa argumen fungsi, argumen tersebut dipisahkan dengan koma.
Parameter
Item | Deskripsi | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
InputModifier |
Istilah opsional yang mengidentifikasi argumen sebagai input, output, atau keduanya.
Parameter selalu diteruskan oleh nilai. in menunjukkan bahwa nilai parameter harus disalin dari aplikasi panggilan sebelum fungsi dimulai. out menunjukkan bahwa nilai terakhir parameter harus disalin, dan dikembalikan ke aplikasi panggilan saat fungsi kembali. inout adalah singkatan untuk menentukan keduanya. Nilai seragam berasal dari register konstanta; setiap pemanggilan shader vertex atau shader piksel melihat nilai awal yang sama untuk variabel yang seragam. Variabel global diperlakukan seolah-olah mereka dinyatakan seragam. Untuk fungsi tingkat non-atas, seragam identik dengan masuk. Jika tidak ada penggunaan parameter yang ditentukan, penggunaan parameter diasumsikan berada. |
||||||||||
Jenis |
Jenis argumen; dapat berupa jenis HLSL yang valid. |
||||||||||
Nama |
String ASCII yang secara unik mengidentifikasi nama fungsi shader. |
||||||||||
Semantik |
String opsional yang mengidentifikasi penggunaan data yang dimaksudkan (lihat Semantik (DirectX HLSL)). |
||||||||||
InterpolationModifier |
Pengubah interpolasi opsional yang memungkinkan shader untuk menentukan metode interpolasi. Pengubah interpolasi pada argumen fungsi hanya berlaku untuk argumen yang digunakan sebagai input ke fungsi shader piksel. |
||||||||||
Penginisialisasi |
Nilai opsional untuk inisialisasi; beberapa nilai diperlukan untuk menginisialisasi jenis data multi-komponen. |
Keterangan
Argumen fungsi tercantum dalam daftar argumen yang dipisahkan koma dalam deklarasi fungsi. Seperti dalam fungsi C, setiap argumen harus memiliki nama parameter dan jenis yang dideklarasikan; argumen ke fungsi HLSL secara opsional dapat menyertakan semantik, nilai awal, dan input shader piksel dapat menyertakan jenis interpolasi.
Jenis argumen fungsi bisa berupa struktur, yang dapat mencakup pengubah interpolasi per anggota. Jika argumen fungsi juga memiliki pengubah interpolasi, pengubah argumen fungsi akan menggantikan pengubah interpolasi yang dideklarasikan dalam Jenis.
Contoh
Contoh ini (dari Sampel BasicHLSL10) mengilustrasikan input yang seragam dan tidak seragam ke fungsi shader vertex.
VS_OUTPUT RenderSceneVS(
float4 vPos : POSITION,
float3 vNormal : NORMAL,
float2 vTexCoord0 : TEXCOORD,
uniform int nNumLights,
uniform bool bTexture,
uniform bool bAnimate )
{
...
}
Contoh ini (dari Sampel ContentStreaming) menggunakan struktur input untuk meneruskan argumen ke fungsi shader piksel.
VSBasicIn input
struct VSBasicIn
{
float4 Pos : POSITION;
float3 Norm : NORMAL;
float2 Tex : TEXCOORD0;
};
PSBasicIn VSBasic(VSBasicIn input)
{
...
}