Pembantu HLSL

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

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 muncul setelah arahan prapemrosektor D2D_INPUT_COUNT tersebut telah ditentukan.

#include <d2d1effecthelpers.hlsli>

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

Pengarah Praprosesor

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> : Menyatakan 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 pembantu D2DGetScenePosition ). Parameter ini hanya boleh disertakan jika perlu, karena hanya satu fungsi per shader yang ditautkan yang dapat menggunakan parameter ini. Menentukan nilai ini bersifat opsional.
  • D2D_CUSTOM_ENTRY : Menunjukkan bahwa fungsi shader piksel menggunakan 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.

Contohnya:

#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 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 (shader penuh atau fungsi ekspor).

Fungsi pembantu:

D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY

Penautan Shader Efek