Cross-platform shader compiler and runtime library
Type definitions and metadata structures for shader reflection.
Defines the complete type system: backends, stages, binding types, and metadata structures. All reflection data is exposed through these types.
Target compilation backends:
NSHADER_BACKEND_DXIL - DirectX Intermediate Language (DX12)NSHADER_BACKEND_DXBC - DirectX Bytecode (DX11)NSHADER_BACKEND_MSL - Metal Shading LanguageNSHADER_BACKEND_SPV - SPIR-V (Vulkan/OpenGL)Shader program type:
NSHADER_SHADER_TYPE_GRAPHICS - vertex + fragment stagesNSHADER_SHADER_TYPE_COMPUTE - compute stage onlyIndividual shader stages:
NSHADER_STAGE_TYPE_VERTEXNSHADER_STAGE_TYPE_FRAGMENTNSHADER_STAGE_TYPE_COMPUTEVariable data types for input/output bindings: INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, FLOAT16, FLOAT32, FLOAT64
Single input/output variable:
name - UTF-8 variable namelocation - binding locationvector_size - component count (1-4)type - data type enumGraphics stage metadata:
num_samplers, num_storage_textures, num_storage_buffers, num_uniform_buffersinputs, input_count - input bindingsoutputs, output_count - output bindingsCompute stage metadata:
num_samplers, num_uniform_buffersthreadcount_x/y/z - dispatch dimensionsTop-level shader info:
type - graphics or computestages, num_stages - array of stage descriptorsbackends, num_backends - available compiled backendsconst char* nshader_backend_to_string(nshader_backend_t); // "DXIL", "SPIR-V", etc.
const char* nshader_backend_to_extension(nshader_backend_t); // ".dxil", ".spv", etc.
const char* nshader_stage_type_to_string(nshader_stage_type_t);
const char* nshader_binding_type_to_string(nshader_binding_type_t);
nshader_type_t nshader_stage_type_to_shader_type(nshader_stage_type_t);