# Low Level Native Plugin Rendering Extensions

> Access low-level graphics device and rendering features from native plug-ins.

On top of the [low-level native plug-in interface](/engine/6000.0/manual/scripting/compilation-and-code-reload/plug-ins/native-plugin-interface.md), Unity also supports low level rendering extensions that can receive callbacks when certain events happen. This is mostly used to implement and control low-level rendering in your plug-in and enable it to work with Unity’s multithreaded rendering.

Due to the low-level nature of this extension the plug-in might need to be preloaded before the devices get created. Currently the convention is name-based; the plug-in name must begin *GfxPlugin* (for example: *GfxPluginMyNativePlugin*).

The rendering extension definition exposed by Unity is in the file *IUnityRenderingExtensions.h*, provided with the Editor (see file path *Unity\Editor\Data\PluginAPI*).

All platforms supporting native plug-ins support these extensions.

## Rendering extensions API

To take advantage of the rendering extension, a plug-in should export *UnityRenderingExtEvent* and optionally *UnityRenderingExtQuery*. There is a lot of documentation provided inside the include file.

## plug-in callbacks on the rendering thread

A plug-in gets called via *UnityRenderingExtEvent* whenever Unity triggers one of the built-in events. The callbacks can also be added to CommandBuffers via [CommandBuffer.IssuePluginEventAndData](/engine/6000.0/script-reference/unityengine/rendering/commandbuffer/issueplugineventanddata.md) or [CommandBuffer.IssuePluginCustomBlit](/engine/6000.0/script-reference/unityengine/rendering/commandbuffer/issueplugincustomblit.md) from scripts.

## Additional resources

* [Low-level native plug-in shader compiler access](/engine/6000.0/manual/scripting/compilation-and-code-reload/plug-ins/native-plugin-interface/low-level-native-plugin-shader-compiler-access.md)
* [Low-level native plug-in memory manager API](/engine/6000.0/manual/scripting/compilation-and-code-reload/plug-ins/native-plugin-interface/low-level-native-plugin-memory-manager-api.md)
* [Low-level native plug-in memory manager API reference](/engine/6000.0/manual/scripting/compilation-and-code-reload/plug-ins/native-plugin-interface/low-level-native-plugin-memory-manager-api-reference.md)
