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
							 |