79 lines
2.2 KiB
C
79 lines
2.2 KiB
C
#pragma once
|
|
|
|
#include <kinc/backend/graphics5/sampler.h>
|
|
#include <kinc/graphics5/pipeline.h>
|
|
|
|
/*! \file sampler.h
|
|
\brief Provides functions for sampler objects.
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum kinc_g5_texture_addressing {
|
|
KINC_G5_TEXTURE_ADDRESSING_REPEAT,
|
|
KINC_G5_TEXTURE_ADDRESSING_MIRROR,
|
|
KINC_G5_TEXTURE_ADDRESSING_CLAMP,
|
|
KINC_G5_TEXTURE_ADDRESSING_BORDER
|
|
} kinc_g5_texture_addressing_t;
|
|
|
|
typedef enum kinc_g5_texture_filter {
|
|
KINC_G5_TEXTURE_FILTER_POINT,
|
|
KINC_G5_TEXTURE_FILTER_LINEAR,
|
|
KINC_G5_TEXTURE_FILTER_ANISOTROPIC
|
|
} kinc_g5_texture_filter_t;
|
|
|
|
typedef enum kinc_g5_mipmap_filter {
|
|
KINC_G5_MIPMAP_FILTER_NONE,
|
|
KINC_G5_MIPMAP_FILTER_POINT,
|
|
KINC_G5_MIPMAP_FILTER_LINEAR // linear texture filter + linear mip filter -> trilinear filter
|
|
} kinc_g5_mipmap_filter_t;
|
|
|
|
typedef struct kinc_g5_sampler_options {
|
|
kinc_g5_texture_addressing_t u_addressing;
|
|
kinc_g5_texture_addressing_t v_addressing;
|
|
kinc_g5_texture_addressing_t w_addressing;
|
|
|
|
kinc_g5_texture_filter_t minification_filter;
|
|
kinc_g5_texture_filter_t magnification_filter;
|
|
kinc_g5_mipmap_filter_t mipmap_filter;
|
|
|
|
float lod_min_clamp;
|
|
float lod_max_clamp;
|
|
|
|
uint16_t max_anisotropy;
|
|
|
|
bool is_comparison;
|
|
kinc_g5_compare_mode_t compare_mode;
|
|
} kinc_g5_sampler_options_t;
|
|
|
|
typedef struct kinc_g5_sampler {
|
|
kinc_g5_sampler_impl_t impl;
|
|
} kinc_g5_sampler_t;
|
|
|
|
/// <summary>
|
|
/// Initializes the passed options-object with the default-options.
|
|
/// </summary>
|
|
/// <param name="options">The options-object for which the default-options will be set</param>
|
|
KINC_FUNC void kinc_g5_sampler_options_set_defaults(kinc_g5_sampler_options_t *options);
|
|
|
|
/// <summary>
|
|
/// Creates a sampler-object.
|
|
///
|
|
/// On platforms such as older OpenGL not all sampler attributes may be available.
|
|
/// </summary>
|
|
/// <param name="sampler">Pointer to the sampler object to initialize</param>
|
|
/// <param name="descriptor">Options for the sampler</param>
|
|
KINC_FUNC void kinc_g5_sampler_init(kinc_g5_sampler_t *sampler, const kinc_g5_sampler_options_t *options);
|
|
|
|
/// <summary>
|
|
/// Destroys a sampler-object.
|
|
/// </summary>
|
|
/// <param name="sampler">The sampler-object to destroy</param>
|
|
KINC_FUNC void kinc_g5_sampler_destroy(kinc_g5_sampler_t *sampler);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|