Unity는 로우레벨 네이티브 플러그인 인터페이스 외에도 셰이더 컴파일러에 대한 로우레벨 액세스를 지원하므로 사용자가 다른 배리언트를 셰이더에 삽입할 수 있습니다. 특정 빌트인 이벤트가 발생할 때 플러그인이 콜백을 수신하는 이벤트 기반 방식이기도 합니다.
Unity 에디터에서 노출되는 셰이더 컴파일러 액세스 확장 기능 정의는 IUnityShaderCompilerAccess.h에서 찾을 수 있고 에디터와 함께 제공됩니다.
이러한 확장 기능은 현재 D3D11에서만 지원됩니다. 추후 더 많은 플랫폼에 대한 지원이 제공됩니다.
렌더링 확장 기능을 활용하려면 플러그인이 UnityShaderCompilerExtEvent를 익스포트해야 합니다. 포함 파일에는 많은 문서가 있습니다.
빌트인 이벤트 중 하나가 Unity에서 트리거될 때마다 UnityShaderCompilerExtEvent를 통해 플러그인이 호출됩니다. 스크립트에서 CommandBuffer.IssuePluginEventAndData 또는 CommandBuffer.IssuePluginCustomBlit 커맨드를 통해 콜백을 CommandBuffers에 추가할 수도 있습니다.
기본 스크립트 인터페이스 외에도 Unity의 네이티브 코드 플러그인은 특정 이벤트가 발생할 때 콜백을 수신할 수 있습니다. 주로 플러그인에 로우레벨 렌더링을 구현하고 Unity의 멀티스레드 렌더링과 함께 사용할 수 있도록 하는 데 사용됩니다.
Unity 에디터에서 노출되는 인터페이스를 정의하는 헤더는 에디터와 함께 제공됩니다.
Unity는 셰이더 컴파일러 액세스가 설정된 인터페이스(IUnityShaderCompilerExtPluginConfigure)를 제공합니다. 이 인터페이스는 플러그인이 자체 키워드를 예약하고 셰이더 프로그램 및 GPU 프로그램 컴파일러 마스크(플러그인을 어떤 셰이더 또는 GPU 프로그램 유형을 위해 호출할지)를 설정하는 데 사용됩니다.