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
 |