shaderc.net
1.0.0
Google Shaderのネットバインディング。
このサンプルはVK.NETを使用してシェーダーモジュールを作成します。成功すると、 Resultオブジェクトは、 ShaderModuleCreateInfo PCODEフィールドに適した生成されたSPIRVコードにネイティブポインターを保持します。このポインターは、 Resultが処分されるまで有効であり続けます。
using ( Compiler comp = new Compiler ( ) ) {
using ( Result res = comp . Compile ( "test.vert" , ShaderKind . VertexShader ) ) {
if ( res . Status == Status . Success ) {
VkShaderModuleCreateInfo ci = VkShaderModuleCreateInfo . New ( ) ;
ci . codeSize = res . codeSize ;
ci . pCode = res . code ;
vkCreateShaderModule ( VkDev , ref moduleCreateInfo , IntPtr . Zero , out VkShaderModule shaderModule ) ) ; Shadercerライブラリは、C/C ++のように#includeステートメントを追加する機能を提供します。この機能は、 Optionsクラスコンストラクターで有効になっているかどうか、デフォルトが有効になっています。
Options opt = new Options ( false ) ;デフォルトのOptionsインスタンスは、インクルード解像度を有効にするCompilerコンストラクターによって作成されます。コンパイラコンストラクターにカスタムオプションインスタンスを提供できます。
Compiler comp = new Compiler ( opt ) ;
comp . Options . InvertY = true ; C/C ++と同様に、ローカルまたはグローバルに含まれる場合があります( ""または<>に囲まれています)。ローカルには、現在の解析されたソースファイルから「」に囲まれています。 Globalが含まれています '<>'の囲まれているのは、 Options.IncludeDirectoriesにリストされているディレクトリで検索されます。パスは、実行可能なディレクトリまたは絶対に関連している場合があります。
comp . Options . IncludeDirectories . AddRange ( "shaders" , @"c:test" ) ;たとえば、埋め込まれたRessourcesを検索するために、デフォルトを含むデフォルトをオーバーライドする場合は、 Optionsクラスを導き出し、 TryFindIncludeメソッドをオーバーライドします。
class OptionsWithCustomIncResolve : Options {
protected override bool TryFindInclude ( string sourcePath , string includePath , IncludeType incType , out string incFile , out string incContent ) {
.. .