Skip to content
modkitv0.2

render_target.h

#include <modkit/render_target.h>25 functions · 3 structs · 3 enums · 6 typedefs · 1 macros

Unified render target abstraction.

Provides a unified interface for rendering to windows, framebuffers, and textures. Render targets can be used as output for render passes and as input textures for subsequent passes. Target types:MK_TARGET_WINDOW: Window backbuffer (main or secondary window)MK_TARGET_TEXTURE: Single color + optional depth texture framebufferMK_TARGET_MRT: Multiple render targets (up to 4 color attachments) Example:

Functions

mk_framebuf_create_from_attachmentsfunction

mk_framebuf_t mk_framebuf_create_from_attachments(const mk_attachment_t *atts, int count)

Create a framebuffer that targets the given attachments (face+mip views of existing textures).

The framebuffer does NOT own the textures; destroying it via mk_framebuf_destroy() leaves them intact. Mips are NOT auto-generated (callers that hand-render a mip chain rely on this).

ParameterTypeDescription
attsconst mk_attachment_t *Array of attachments (color first; a depth attachment may follow)
countintNumber of attachments

Returns Framebuffer handle, or MK_FRAMEBUF_INVALID on failure

mk_framebuf_create_from_attachments_autogen_mipsfunction

mk_framebuf_t mk_framebuf_create_from_attachments_autogen_mips(const mk_attachment_t *atts, int count)

Same as mk_framebuf_create_from_attachments, but asks the backend to generate mipmaps for attached color textures when resolving the render target.

Use this only for rendering mip 0 of textures created with a full mip chain.

ParameterTypeDescription
attsconst mk_attachment_t *Value for atts.
countintNumber of entries.

Returns The resulting handle or value.

mk_framebuf_destroyfunction

void mk_framebuf_destroy(mk_framebuf_t fb)

Destroy a framebuffer created by mk_framebuf_create_from_attachments().

The underlying textures are left intact.

ParameterTypeDescription
fbmk_framebuf_tValue for fb.

mk_framebuf_is_valid_descfunction

bool mk_framebuf_is_valid_desc(const mk_attachment_t *atts, int count)

Whether a framebuffer built from these attachments would be valid on this backend (format/size compatibility).

Use to gate before mk_framebuf_create_from_attachments. Returns false on a NULL/invalid texture.

ParameterTypeDescription
attsconst mk_attachment_t *Value for atts.
countintNumber of entries.

Returns True when the condition holds.

mk_render_target_createfunction

mk_render_target_t mk_render_target_create(const mk_render_target_desc *desc)

Create a render target from descriptor.

ParameterTypeDescription
descconst mk_render_target_desc *Target descriptor

Returns Target handle or MK_RENDER_TARGET_INVALID on failure

mk_render_target_depthfunction

mk_render_target_t mk_render_target_depth(uint16_t width, uint16_t height, mk_target_format_t format)

Create depth-only render target (for shadow maps).

ParameterTypeDescription
widthuint16_tWidth in pixels
heightuint16_tHeight in pixels
formatmk_target_format_tDepth format

Returns Target handle

mk_render_target_destroyfunction

void mk_render_target_destroy(mk_render_target_t target)

Destroy a render target.

Does not destroy the associated window (for window targets).

ParameterTypeDescription
targetmk_render_target_tValue for target.

mk_render_target_get_color_spacefunction

mk_color_space_t mk_render_target_get_color_space(mk_render_target_t target)

Get color space from the render target.

ParameterTypeDescription
targetmk_render_target_tValue for target.

Returns The resulting handle or value.

mk_render_target_get_depth_texturefunction

mk_texture_t mk_render_target_get_depth_texture(mk_render_target_t target)

Get depth attachment as texture (for sampling).

ParameterTypeDescription
targetmk_render_target_tRender target

Returns Texture or MK_TEXTURE_INVALID if not available

mk_render_target_get_framebufferfunction

mk_framebuf_t mk_render_target_get_framebuffer(mk_render_target_t target)

Get the framebuffer handle for this render target.

Returns MK_FRAMEBUF_INVALID for main window target (uses backbuffer).

ParameterTypeDescription
targetmk_render_target_tValue for target.

Returns The resulting handle or value.

mk_render_target_get_namefunction

const char * mk_render_target_get_name(mk_render_target_t target)

Get target name.

ParameterTypeDescription
targetmk_render_target_tValue for target.

Returns A borrowed pointer, or NULL when unavailable.

mk_render_target_get_sizefunction

void mk_render_target_get_size(mk_render_target_t target, uint16_t *width, uint16_t *height)

Get current dimensions.

For scaled targets, this returns the current computed size.

ParameterTypeDescription
targetmk_render_target_tValue for target.
widthuint16_t *Value for width.
heightuint16_t *Value for height.

mk_render_target_get_texturefunction

mk_texture_t mk_render_target_get_texture(mk_render_target_t target, uint8_t attachment)

Get color attachment as texture (for sampling in shaders).

Only valid for MK_TARGET_TEXTURE and MK_TARGET_MRT.

ParameterTypeDescription
targetmk_render_target_tRender target
attachmentuint8_tAttachment index (0-3)

Returns Texture or MK_TEXTURE_INVALID if not available

mk_render_target_get_typefunction

mk_render_target_type_t mk_render_target_get_type(mk_render_target_t target)

Get target type.

ParameterTypeDescription
targetmk_render_target_tValue for target.

Returns The resulting handle or value.

mk_render_target_get_windowfunction

mk_window_t mk_render_target_get_window(mk_render_target_t target)

Get the associated window (for window targets).

Returns NULL for texture targets.

ParameterTypeDescription
targetmk_render_target_tValue for target.

Returns The resulting handle or value.

mk_render_target_initfunction

void mk_render_target_init(void)

Initialize render target system.

Called automatically by mk_init().

mk_render_target_is_validfunction

bool mk_render_target_is_valid(mk_render_target_t target)

Check if render target is valid.

ParameterTypeDescription
targetmk_render_target_tValue for target.

Returns True when the condition holds.

mk_render_target_resizefunction

void mk_render_target_resize(mk_render_target_t target, uint16_t width, uint16_t height)

Manually resize a texture render target.

Has no effect on window targets (they auto-resize). For scaled targets, this temporarily overrides the scale until next auto-resize.

ParameterTypeDescription
targetmk_render_target_tValue for target.
widthuint16_tValue for width.
heightuint16_tValue for height.

mk_render_target_scaledfunction

mk_render_target_t mk_render_target_scaled(float scale, mk_target_format_t format)

Create texture render target scaled relative to main window.

Auto-resizes when window resizes.

ParameterTypeDescription
scalefloatScale factor (0.5 = half, 1.0 = full, 2.0 = double)
formatmk_target_format_tColor format

Returns Target handle

mk_render_target_scaled_tofunction

mk_render_target_t mk_render_target_scaled_to(float scale, mk_target_format_t format, mk_window_t window)

Create texture render target scaled relative to a specific window.

ParameterTypeDescription
scalefloatScale factor
formatmk_target_format_tColor format
windowmk_window_tReference window for scaling

Returns Target handle

mk_render_target_shutdownfunction

void mk_render_target_shutdown(void)

Shutdown render target system.

Called automatically by mk_shutdown().

mk_render_target_texturefunction

mk_render_target_t mk_render_target_texture(uint16_t width, uint16_t height, mk_target_format_t format)

Create texture render target with fixed size.

ParameterTypeDescription
widthuint16_tWidth in pixels
heightuint16_tHeight in pixels
formatmk_target_format_tColor format

Returns Target handle

mk_render_target_update_allfunction

void mk_render_target_update_all(void)

Process pending resize events for all targets.

Called automatically each frame.

mk_render_target_update_scalefunction

void mk_render_target_update_scale(mk_render_target_t target)

Force recalculation of scaled target size.

Called automatically when reference window resizes.

ParameterTypeDescription
targetmk_render_target_tValue for target.

mk_render_target_windowfunction

mk_render_target_t mk_render_target_window(mk_window_t window)

Create window render target.

ParameterTypeDescription
windowmk_window_tWindow handle (NULL = main window)

Returns Target handle

Structs

mk_attachment_tstruct

Describes a single framebuffer attachment pointing at one face+mip of an existing texture.

For a 2D texture use layer = 0. For a cubemap, layer is the face index (0..5). Used to render into a specific cube face + mip level (e.g. GPU IBL prefiltering).

FieldTypeDescription
texturemk_texture_tThe texture.
layeruint16_tcube face (0..5) or array layer; 0 for plain 2D
mipuint16_tmip level to render into

mk_render_target_descstruct

Render target creation descriptor.

FieldTypeDescription
nameconst char *Debug name (optional).
typemk_render_target_type_tTarget type.
color_spacemk_color_space_tThe color space.
windowmk_window_tWindow handle (NULL = main window).
widthuint16_tWidth (0 = derive from scale).
heightuint16_tHeight (0 = derive from scale).
scalefloatResolution scale (1.0 = full).
scale_modemk_target_scale_mode_tHow to interpret scale.
scale_referencemk_window_tWindow to scale relative to (NULL = main).
colormk_target_attachment_descColor attachment formats.
color_countuint8_tNumber of color attachments (1-4).
has_depthboolInclude depth buffer.
depth_formatmk_target_format_tDepth format (AUTO = D24S8).
depth_onlyboolCreate no color attachment.
readableboolTextures can be sampled.
samplesuint8_tThe samples.

mk_target_attachment_descstruct

Attachment description for MRT.

FieldTypeDescription
formatmk_target_format_tTexture format.
flagsuint64_tGPU texture flags (0 = default).

Enums

mk_render_target_typeenum

Render target type.

ValueDescription
MK_TARGET_WINDOWWindow backbuffer (main or secondary).
MK_TARGET_TEXTURERender-to-texture framebuffer.
MK_TARGET_MRTMultiple render targets.

mk_target_formatenum

Texture format for render targets.

ValueDescription
MK_TARGET_FORMAT_RGBA8Standard 8-bit RGBA.
MK_TARGET_FORMAT_RGBA16FHDR 16-bit float.
MK_TARGET_FORMAT_RGBA32FHDR 32-bit float.
MK_TARGET_FORMAT_R8Single channel 8-bit.
MK_TARGET_FORMAT_R16FSingle channel 16-bit float.
MK_TARGET_FORMAT_R32FSingle channel 32-bit float.
MK_TARGET_FORMAT_RG16FTwo channel 16-bit float.
MK_TARGET_FORMAT_RG32FTwo channel 32-bit float.
MK_TARGET_FORMAT_D16Depth 16-bit.
MK_TARGET_FORMAT_D24S8Depth24 + Stencil8.
MK_TARGET_FORMAT_D32FDepth 32-bit float.
MK_TARGET_FORMAT_AUTOAuto-select based on usage.

mk_target_scale_modeenum

Scaling mode for texture render targets.

ValueDescription
MK_TARGET_SCALE_FIXEDFixed size, no auto-resize.
MK_TARGET_SCALE_WINDOWScale relative to associated window.
MK_TARGET_SCALE_MAINScale relative to main window.

Typedefs

mk_render_target_desctypedef

typedef struct mk_render_target_desc mk_render_target_desc

Render target creation descriptor.

mk_render_target_ttypedef

typedef struct mk_render_target* mk_render_target_t

Opaque render target handle.

mk_render_target_type_ttypedef

typedef enum mk_render_target_type mk_render_target_type_t

Render target type.

mk_target_attachment_desctypedef

typedef struct mk_target_attachment_desc mk_target_attachment_desc

Attachment description for MRT.

mk_target_format_ttypedef

typedef enum mk_target_format mk_target_format_t

Texture format for render targets.

mk_target_scale_mode_ttypedef

typedef enum mk_target_scale_mode mk_target_scale_mode_t

Scaling mode for texture render targets.

Macros

MK_RENDER_TARGET_INVALIDdefine

MK_RENDER_TARGET_INVALID

Invalid sentinel for render target.