Bagikan melalui


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.
Nilai Deskripsi
in Input saja
Inout Input dan output
out Hanya output
Seragam Input hanya data konstanta

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)
{
  ...
}

Functions (DirectX HLSL)