低レベルのネイティブプラグインインターフェース に加え、Unity はシェーダーコンパイラーへの低レベルアクセスをサポートします。これにより、ユーザーは様々なバリアントをシェーダーに注入できます。 これはイベント主動型のアプローチで、特定のビルトインのイベントが発生するとプラグインがコールバックを受け取るります。
Unity が公開しているシェーダーコンパイラーのアクセス拡張定義は、IUnityShaderCompilerAccess.h にあり、エディターに含まれています。
これらの拡張は、現在 D3D11 でのみサポートされています。 より多くのプラットフォームでのサポートも予定されています。
レンダリング拡張の長所を生かすために、プラグインは UnityShaderCompilerExtEvent をエクスポートする必要があります。インクルードファイルの内部で多くのドキュメントが提供されています。
Unity がビルトインイベントの 1 つを発生させるときはいつでも、UnityShaderCompilerExtEvent 経由でプラグインが呼び出されます。さらに、そのコールバックは、スクリプトの CommandBuffer.IssuePluginEventAndData か CommandBuffer.IssuePluginCustomBlit コマンド経由で CommandBuffers に加えられます。
基本的なスクリプトのインターフェースに加えて、Unity の ネイティブコードプラグイン は 発生した特定のイベントをコールバックで受け取ることができます。これは主に、プラグインで低レベルのレンダリングを実装し、Unity のマルチスレッドレンダリングを操作できるようにするために使用されます。
Unity が公開しているインターフェースを定義するヘッダーはエディターと一緒に提供されています。
Unity は、シェーダーのコンパイラーアクセスを設定するインタフェース (IUnityShaderCompilerExtPluginConfigure) を提供しています。 このインターフェースは、独自のキーワードを予約するためにプラグインによって使用され、シェーダープログラムと gpu プログラムのコンパイラーマスク (プラグインを呼び出すシェーダーまたは GPU プログラムのタイプを決める) を設定するために使用されます。
Unity 2017.1 の新機能NewIn20171
2017–07–04 公開ページ
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.