#pragma once
#include "IUnityGraphics.h"
enum UnityShaderCompilerExtCompilerPlatform
{
kUnityShaderCompilerExtCompPlatformUnused0 = 0,
kUnityShaderCompilerExtCompPlatformUnused1,
kUnityShaderCompilerExtCompPlatformUnused2,
kUnityShaderCompilerExtCompPlatformUnused3,
kUnityShaderCompilerExtCompPlatformD3D11, kUnityShaderCompilerExtCompPlatformGLES20, kUnityShaderCompilerExtCompPlatformUnused6,
kUnityShaderCompilerExtCompPlatformUnused7,
kUnityShaderCompilerExtCompPlatformUnused8,
kUnityShaderCompilerExtCompPlatformGLES3Plus, kUnityShaderCompilerExtCompPlatformUnused10,
kUnityShaderCompilerExtCompPlatformPS4, kUnityShaderCompilerExtCompPlatformXboxOne, kUnityShaderCompilerExtCompPlatformUnused13,
kUnityShaderCompilerExtCompPlatformMetal, kUnityShaderCompilerExtCompPlatformOpenGLCore, kUnityShaderCompilerExtCompPlatformUnused16,
kUnityShaderCompilerExtCompPlatformUnused17,
kUnityShaderCompilerExtCompPlatformVulkan, kUnityShaderCompilerExtCompPlatformSwitch, kUnityShaderCompilerExtCompPlatformXboxOneD3D12, kUnityShaderCompilerExtCompPlatformGameCoreXboxOne, kUnityShaderCompilerExtCompPlatformGameCoreXboxSeries, kUnityShaderCompilerExtCompPlatformPS5,
kUnityShaderCompilerExtCompPlatformPS5NGGC,
kUnityShaderCompilerExtCompPlatformUnused25,
kUnityShaderCompilerExtCompPlatformCount
};
enum UnityShaderCompilerExtShaderType
{
kUnityShaderCompilerExtShaderNone = 0,
kUnityShaderCompilerExtShaderVertex = 1,
kUnityShaderCompilerExtShaderFragment = 2,
kUnityShaderCompilerExtShaderGeometry = 3,
kUnityShaderCompilerExtShaderHull = 4,
kUnityShaderCompilerExtShaderDomain = 5,
kUnityShaderCompilerExtShaderRayTracing = 6,
kUnityShaderCompilerExtShaderTypeCount };
enum UnityShaderCompilerExtGPUProgramType
{
kUnityShaderCompilerExtGPUProgramTargetUnknown = 0,
kUnityShaderCompilerExtGPUProgramTargetGLLegacy = 1, kUnityShaderCompilerExtGPUProgramTargetGLES31AEP = 2,
kUnityShaderCompilerExtGPUProgramTargetGLES31 = 3,
kUnityShaderCompilerExtGPUProgramTargetGLES3 = 4,
kUnityShaderCompilerExtGPUProgramTargetGLES = 5,
kUnityShaderCompilerExtGPUProgramTargetGLCore32 = 6,
kUnityShaderCompilerExtGPUProgramTargetGLCore41 = 7,
kUnityShaderCompilerExtGPUProgramTargetGLCore43 = 8,
kUnityShaderCompilerExtGPUProgramTargetDX9VertexSM20 = 9, kUnityShaderCompilerExtGPUProgramTargetDX9VertexSM30 = 10, kUnityShaderCompilerExtGPUProgramTargetDX9PixelSM20 = 11, kUnityShaderCompilerExtGPUProgramTargetDX9PixelSM30 = 12, kUnityShaderCompilerExtGPUProgramTargetDX10Level9Vertex = 13,
kUnityShaderCompilerExtGPUProgramTargetDX10Level9Pixel = 14,
kUnityShaderCompilerExtGPUProgramTargetDX11VertexSM40 = 15,
kUnityShaderCompilerExtGPUProgramTargetDX11VertexSM50 = 16,
kUnityShaderCompilerExtGPUProgramTargetDX11PixelSM40 = 17,
kUnityShaderCompilerExtGPUProgramTargetDX11PixelSM50 = 18,
kUnityShaderCompilerExtGPUProgramTargetDX11GeometrySM40 = 19,
kUnityShaderCompilerExtGPUProgramTargetDX11GeometrySM50 = 20,
kUnityShaderCompilerExtGPUProgramTargetDX11HullSM50 = 21,
kUnityShaderCompilerExtGPUProgramTargetDX11DomainSM50 = 22,
kUnityShaderCompilerExtGPUProgramTargetMetalVS = 23,
kUnityShaderCompilerExtGPUProgramTargetMetalFS = 24,
kUnityShaderCompilerExtGPUProgramTargetSPIRV = 25,
kUnityShaderCompilerExtGPUProgramTargetUnused1 = 26,
kUnityShaderCompilerExtGPUProgramTargetUnused2 = 27,
kUnityShaderCompilerExtGPUProgramTargetUnused3 = 28,
kUnityShaderCompilerExtGPUProgramTargetUnused4 = 29,
kUnityShaderCompilerExtGPUProgramTargetUnused5 = 30,
kUnityShaderCompilerExtGPUProgramTargetRayTracing = 31,
kUnityShaderCompilerExtGPUProgramTargetPS5NGGC = 32,
kUnityShaderCompilerExtGPUProgramTargetCount
};
enum UnityShaderCompilerExtGPUProgram
{
kUnityShaderCompilerExtGPUProgramVS = 1 << kUnityShaderCompilerExtShaderVertex,
kUnityShaderCompilerExtGPUProgramPS = 1 << kUnityShaderCompilerExtShaderFragment,
kUnityShaderCompilerExtGPUProgramGS = 1 << kUnityShaderCompilerExtShaderGeometry,
kUnityShaderCompilerExtGPUProgramHS = 1 << kUnityShaderCompilerExtShaderHull,
kUnityShaderCompilerExtGPUProgramDS = 1 << kUnityShaderCompilerExtShaderDomain,
kUnityShaderCompilerExtGPUProgramCustom = 1 << kUnityShaderCompilerExtShaderTypeCount
};
enum UnityShaderCompilerExtEventType
{
kUnityShaderCompilerExtEventCreateCustomSourceVariant, kUnityShaderCompilerExtEventCreateCustomSourceVariantCleanup,
kUnityShaderCompilerExtEventCreateCustomBinaryVariant, kUnityShaderCompilerExtEventCreateCustomBinaryVariantCleanup, kUnityShaderCompilerExtEventPluginConfigure,
kUnityShaderCompilerExtEventCount,
kUnityShaderCompilerExtUserEventsStart = kUnityShaderCompilerExtEventCount
};
struct UnityShaderCompilerExtCustomSourceVariantParams
{
char* outputSnippet; char* outputKeywords; const char* inputSnippet; bool vr; UnityShaderCompilerExtCompilerPlatform platform; UnityShaderCompilerExtShaderType shaderType; };
struct UnityShaderCompilerExtCustomBinaryVariantParams
{
void** outputBinaryShader; const unsigned char* inputByteCode; unsigned int inputByteCodeSize; unsigned int programTypeMask; UnityShaderCompilerExtCompilerPlatform platform; };
class IUnityShaderCompilerExtPluginConfigure
{
public:
virtual ~IUnityShaderCompilerExtPluginConfigure() {}
virtual void ReserveKeyword(const char* keyword) = 0; virtual void SetGPUProgramCompilerMask(unsigned int mask) = 0; virtual void SetShaderProgramMask(unsigned int mask) = 0; };
#ifdef __cplusplus
extern "C" {
#endif
void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API UnityShaderCompilerExtEvent(UnityShaderCompilerExtEventType event, void* data);
#ifdef __cplusplus
}
#endif