8#define SBGL_INVALID_HANDLE 0
9#define SBGL_INVALID_OFFSET ((uint32_t)-1)
59#define SBGL_PACKET_MESH_MASK 0x7FF
60#define SBGL_PACKET_MAT_MASK 0x7FF
61#define SBGL_PACKET_BLEND_MASK 0x3
62#define SBGL_PACKET_SIDED_MASK 0x1
63#define SBGL_PACKET_TAGS_MASK 0x7F
65#define SBGL_PACKET_MAT_SHIFT 11
66#define SBGL_PACKET_BLEND_SHIFT 22
67#define SBGL_PACKET_SIDED_SHIFT 24
68#define SBGL_PACKET_TAGS_SHIFT 25
73#define SBGL_VOXEL_ID_MASK 0x3FFFF
74#define SBGL_VOXEL_SCALE_MASK 0xFF
75#define SBGL_VOXEL_SCALE_SHIFT 18
76#define SBGL_VOXEL_MAT_MASK 0x3F
77#define SBGL_VOXEL_MAT_SHIFT 26
79#define SBGL_PACK_VOXEL_INSTANCE(id, scale, mat) \
80 (((id) & SBGL_VOXEL_ID_MASK) | (((scale) & SBGL_VOXEL_SCALE_MASK) << SBGL_VOXEL_SCALE_SHIFT) | (((mat) & SBGL_VOXEL_MAT_MASK) << SBGL_VOXEL_MAT_SHIFT))
82#define SBGL_PACK_HEADER(mesh, mat, blend, sided, tags) \
83 (((mesh) & SBGL_PACKET_MESH_MASK) | \
84 (((mat) & SBGL_PACKET_MAT_MASK) << SBGL_PACKET_MAT_SHIFT) | \
85 (((blend) & SBGL_PACKET_BLEND_MASK) << SBGL_PACKET_BLEND_SHIFT) | \
86 (((sided) & SBGL_PACKET_SIDED_MASK) << SBGL_PACKET_SIDED_SHIFT) | \
87 (((tags) & SBGL_PACKET_TAGS_MASK) << SBGL_PACKET_TAGS_SHIFT))
89#define SBGL_GET_MESH_ID(h) ((h) & SBGL_PACKET_MESH_MASK)
90#define SBGL_GET_MAT_ID(h) (((h) >> SBGL_PACKET_MAT_SHIFT) & SBGL_PACKET_MAT_MASK)
91#define SBGL_GET_BLEND_MODE(h) (((h) >> SBGL_PACKET_BLEND_SHIFT) & SBGL_PACKET_BLEND_MASK)
328#define sbgl_DefaultInitConfig ((sbgl_InitConfig){ \
329 .windowWidth = 800, \
330 .windowHeight = 600, \
331 .windowTitle = "SBgl Application", \
332 .limits = { .maxBuffers = 1024, .maxShaders = 256, .maxPipelines = 256 }, \
333 .enableValidation = true \
Single-header math library for SBgl.
sbgl_BlendMode
Blending modes for pipeline color attachments.
@ SBGL_BLEND_MODE_ADDITIVE
sbgl_platform_Result
Result codes for platform layer operations.
@ SBGL_PLATFORM_ERROR_INIT_FAILED
@ SBGL_PLATFORM_ERROR_NO_DISPLAY
@ SBGL_PLATFORM_ERROR_WINDOW_FAILED
struct sbgl_Context sbgl_Context
Engine context.
sbgl_BufferUsage
Buffer usage flags.
@ SBGL_BUFFER_USAGE_INDEX
@ SBGL_BUFFER_USAGE_INDIRECT
@ SBGL_BUFFER_USAGE_TRANSFER_DST
@ SBGL_BUFFER_USAGE_STORAGE
@ SBGL_BUFFER_USAGE_VERTEX
sbgl_Result
Result codes for engine operations.
@ SBGL_ERROR_INITIALIZATION_FAILED
@ SBGL_ERROR_OUT_OF_MEMORY
@ SBGL_ERROR_PLATFORM_FAILED
@ SBGL_ERROR_SWAPCHAIN_FAILED
@ SBGL_ERROR_PIPELINE_FAILED
@ SBGL_ERROR_WINDOW_CREATION_FAILED
@ SBGL_ERROR_GRAPHICS_FAILED
@ SBGL_ERROR_SHADER_FAILED
@ SBGL_ERROR_INVALID_HANDLE
@ SBGL_ERROR_INVALID_ARGUMENT
@ SBGL_ERROR_NULL_CONTEXT
sbgl_Format
Data formats for vertex attributes.
@ SBGL_FORMAT_R8G8B8A8_UNORM
@ SBGL_FORMAT_R32G32_SFLOAT
@ SBGL_FORMAT_R16G16B16A16_SNORM
@ SBGL_FORMAT_R32G32B32_SFLOAT
@ SBGL_FORMAT_R32G32B32A32_SFLOAT
sbgl_BarrierType
Memory barrier types for compute synchronization.
@ SBGL_BARRIER_COMPUTE_TO_INDIRECT
@ SBGL_BARRIER_GRAPHICS_TO_COMPUTE
@ SBGL_BARRIER_COMPUTE_TO_COMPUTE
@ SBGL_BARRIER_HOST_TO_GRAPHICS
@ SBGL_BARRIER_HOST_TO_COMPUTE
@ SBGL_BARRIER_COMPUTE_TO_GRAPHICS
uint32_t sbgl_Buffer
Handle for a GPU-side buffer.
uint32_t sbgl_Shader
Handle for a shader module.
uint64_t sbgl_SortKey
Bit-packed key used for sorting draw commands to minimize state changes.
sbgl_ShaderStage
Shader stage flags.
@ SBGL_SHADER_STAGE_COMPUTE
@ SBGL_SHADER_STAGE_FRAGMENT
@ SBGL_SHADER_STAGE_VERTEX
uint32_t sbgl_ComputePipeline
Handle for a compute pipeline.
uint32_t sbgl_Pipeline
Handle for a graphics pipeline.
sbgl_BackendType
Backend types supported by the engine.
void * inner
Opaque pointer to the internal engine state.
sbgl_Result result
Status of the last major operation.
Encapsulates all data required to submit a single draw call. Optimized for cache density (16 bytes).
Detailed error information for debugging.
Standard Vulkan Indirect Draw command layout.
Configuration for engine initialization.
sbgl_ResourceLimits limits
Result structure for initialization.
Per-instance data for automated batching.
4x4 Matrix, 16-byte aligned, column-major.
Configuration for creating a graphics pipeline.
sbgl_Shader fragmentShader
sbgl_VertexLayout vertexLayout
Internal storage for draw packets awaiting submission.
Resource limits for engine initialization.
Performance telemetry data for a single frame.
Vertex attribute definition.
Vertex input layout definition.
const sbgl_VertexAttribute * attributes
Standard vertex structure for basic geometry rendering. Optimized for cache density (16 bytes).
4D Vector, 16-byte aligned.