除了低级原生插件接口之外,Unity 还支持对着色器编译器的低级访问,从而允许用户将不同的变体注入着色器。这也是一种事件驱动的方法:当某些内置事件发生时,插件将接收回调。
Unity 公开的着色器编译器访问扩展定义位于 IUnityShaderCompilerAccess.h 中,随 Editor 提供。
目前仅在 D3D11 上支持这些扩展。随后将有更多平台支持这些扩展。
为了利用渲染扩展,插件应导出 UnityShaderCompilerExtEvent。include 文件中提供了大量文档。
只要 Unity 触发其中一个内置事件,就会通过 UnityShaderCompilerExtEvent 调用插件。还可使用脚本通过 CommandBuffer.IssuePluginEventAndData 或 CommandBuffer.IssuePluginCustomBlit 命令将回调添加到 CommandBuffers。
除了基本脚本接口之外,Unity 中的原生代码插件还可以在发生某些事件时接收回调。这主要用于实现插件中的低级渲染,并使低级渲染能够与 Unity 的多线程渲染一起使用。
定义 Unity 所公开的接口的头文件随 Editor 一起提供。
Unity 提供了一个配置着色器编译器访问的接口 (IUnityShaderCompilerExtPluginConfigure)。此接口由插件用于保留自己的关键字并配置着色器程序和 GPU 程序编译器掩码(应该调用插件的着色器或 GPU 程序的类型)