除了 底层原生插件接口 之外,Unity 还支持对 着色器在 GPU 上运行的程序。 更多信息
在 术语表 中查看 编译器的底层访问,允许用户将不同的变体注入着色器。这还是一种事件驱动的方案,其中 插件在 Unity 之外创建的一组代码,用于在 Unity 中创建功能。Unity 中可以使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(特定于平台的原生代码库)。 更多信息
在 术语表 中查看 将在发生某些内置事件时接收回调。
Unity 公开的着色器编译器访问扩展定义可以在 IUnityShaderCompilerAccess.h 中找到,并且它与编辑器一起提供。
目前,这些扩展只支持 D3D11。对更多平台的支持将会陆续推出。
为了利用渲染扩展,插件应该导出 UnityShaderCompilerExtEvent。包含文件内部提供了大量的文档。
每当 Unity 触发其中一个内置事件时,插件都会通过 UnityShaderCompilerExtEvent 被调用。回调也可以通过 脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间推移修改组件属性,以及以您喜欢的任何方式响应用户输入。 更多信息
在 术语表 中查看 中的 CommandBuffer.IssuePluginEventAndData 或 CommandBuffer.IssuePluginCustomBlit 命令添加到命令缓冲区。
除了基本的脚本接口之外,Unity 中的 原生代码插件 也可以在发生某些事件时接收回调。这主要用于在插件中实现底层渲染,并使其能够与 Unity 的多线程渲染协同工作。
定义 Unity 公开的接口的头文件与编辑器一起提供。
Unity 提供了一个接口 (IUnityShaderCompilerExtPluginConfigure),用于配置着色器编译器访问。插件使用此接口来保留自己的关键字,并配置着色器程序和 GPU 程序编译器掩码(插件应该被调用的着色器或 GPU 程序类型)。