Bagikan melalui


Pembantu HLSL

Untuk membantu penulis efek menulis shader piksel yang dapat ditautkan, d2d1effecthelpers.hlsli mendefinisikan satu set ekstensi bahasa HLSL dalam bentuk metode dan makro pembantu.

Untuk menambahkan d2d1effecthelpers.hlsli ke proyek Anda, tambahkan pernyataan #include dalam file HLSL. d2d1effecthelpers.hlsli terletak di lokasi yang sama dengan header Direct2D lainnya seperti d2d1.h; ini dapat direferensikan dari halaman properti file HLSL dengan menambahkan makro $(WindowsSDK_IncludePath) ke properti Sertakan Direktori Tambahan. Perhatikan bahwa pernyataan #include harus datang setelah arahan preproscessor D2D_INPUT_COUNT tersebut telah ditentukan.

#include <d2d1effecthelpers.hlsli>

Direct2D tidak mendukung penautan shader komputasi atau vertex. Namun, jika efek Anda menggunakan shader vertex dan shader piksel, output shader piksel masih dapat ditautkan.

Direktif Praproscesor

Arahan pra-prosesor diperlukan untuk mengomunikasikan informasi tentang efeknya. Ini termasuk jumlah input dan jenis pengambilan sampel dari setiap input. Nilai berikut harus ditentukan dalam kode shader efek di atas titik entri shader yang relevan jika berlaku.

  • D2D_INPUT_COUNT <N> : Mendeklarasikan jumlah input tekstur ke efek. Jika efek memiliki jumlah input variabel, nilai ini harus dilingkup dengan tepat ke setiap titik entri shader. Menentukan nilai ini adalah wajib.
  • D2D_INPUT<N>_SIMPLE : Mendeklarasikan input Nth untuk menggunakan pengambilan sampel sederhana. Jika tidak ditentukan, input Nth default ke kompleks. Menentukan nilai ini bersifat opsional.
  • D2D_INPUT<N>_COMPLEX : Mendeklarasikan input Nth untuk menggunakan pengambilan sampel yang kompleks. Jika tidak ditentukan, input Nth default ke kompleks. Menentukan nilai ini bersifat opsional.
  • D2D_REQUIRES_SCENE_POSITION : Menunjukkan bahwa fungsi shader memanggil metode pembantu yang menggunakan nilai posisi adegan (yaitu, fungsi D2DGetScenePosition helper). Parameter ini hanya boleh disertakan jika perlu, karena hanya satu fungsi per shader tertaut yang dapat menggunakan parameter ini. Menentukan nilai ini bersifat opsional.
  • D2D_CUSTOM_ENTRY : Menunjukkan bahwa fungsi shader piksel mengonsumsi output shader vertex kustom, dan dengan demikian akan mendeklarasikan parameter inputnya. Semua input shader vertex kustom menggunakan pengambilan sampel yang kompleks, dan tidak dapat menggunakan output fungsi shader lain (yaitu hanya pasca-ditautkan). Menentukan nilai ini bersifat opsional.

Misalnya:

#define D2D_INPUT_COUNT 3
#define D2D_INPUT0_SIMPLE
#define D2D_INPUT1_SIMPLE
#define D2D_INPUT2_COMPLEX
#include <d2d1effecthelpers.hlsli>
          

Fungsi Pembantu

Fungsi pembantu digunakan sebagai pengganti untuk beberapa fungsi intrinsik HLSL asli. Pada waktu kompilasi, fungsi pembantu ini didefinisikan ulang oleh Direct2D ke dalam versi yang sesuai tergantung pada jenis target kompilasi (fungsi shader atau ekspor penuh).

Fungsi pembantu:

D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY

Penautan Shader Efek