From 1d66372b8329f0bbf3fe8ab76a37db06fe0f8320 Mon Sep 17 00:00:00 2001 From: cosmonaut Date: Wed, 16 Dec 2020 12:47:54 -0800 Subject: [PATCH] sampler and shader param sets --- include/Refresh.h | 83 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 3 deletions(-) diff --git a/include/Refresh.h b/include/Refresh.h index 74abe97..7850fc0 100644 --- a/include/Refresh.h +++ b/include/Refresh.h @@ -54,6 +54,8 @@ extern "C" { typedef struct REFRESH_Device REFRESH_Device; typedef struct REFRESH_Texture REFRESH_Texture; +typedef struct REFRESH_Sampler REFRESH_Sampler; +typedef struct REFRESH_ShaderParamBuffer REFRESH_ShaderParamBuffer; typedef struct REFRESH_Buffer REFRESH_Buffer; typedef struct REFRESH_ColorTarget REFRESH_ColorTarget; typedef struct REFRESH_DepthTarget REFRESH_DepthTarget; @@ -270,6 +272,36 @@ typedef enum REFRESH_ShaderStage REFRESH_SHADERSTAGE_FRAGMENT } REFRESH_ShaderStage; +typedef enum REFRESH_SamplerFilter +{ + REFRESH_SAMPLERFILTER_NEAREST, + REFRESH_SAMPLERFILTER_LINEAR +} REFRESH_SamplerFilter; + +typedef enum REFRESH_SamplerMipmapMode +{ + REFRESH_SAMPLERMIPMAPMODE_NEAREST, + REFRESH_SAMPLERMIPMAPMODE_LINEAR +} REFRESH_SamplerMipmapMode; + +typedef enum REFRESH_SamplerAddressMode +{ + REFRESH_SAMPLERADDRESSMODE_REPEAT, + REFRESH_SAMPLERADDRESSMODE_MIRRORED_REPEAT, + REFRESH_SAMPLERADDRESSMODE_CLAMP_TO_EDGE, + REFRESH_SAMPLERADDRESSMODE_CLAMP_TO_BORDER +} REFRESH_SamplerAddressMode; + +typedef enum REFRESH_BorderColor +{ + REFRESH_BORDERCOLOR_FLOAT_TRANSPARENT_BLACK = 0, + REFRESH_BORDERCOLOR_INT_TRANSPARENT_BLACK = 1, + REFRESH_BORDERCOLOR_FLOAT_OPAQUE_BLACK = 2, + REFRESH_BORDERCOLOR_INT_OPAQUE_BLACK = 3, + REFRESH_BORDERCOLOR_FLOAT_OPAQUE_WHITE = 4, + REFRESH_BORDERCOLOR_INT_OPAQUE_WHITE = 5 +} REFRESH_BorderColor; + /* Structures */ typedef struct REFRESH_Color @@ -308,6 +340,24 @@ typedef struct REFRESH_Viewport /* State structures */ +typedef struct REFRESH_SamplerStateCreateInfo +{ + REFRESH_SamplerFilter minFilter; + REFRESH_SamplerFilter magFilter; + REFRESH_SamplerMipmapMode mipmapMode; + REFRESH_SamplerAddressMode addressModeU; + REFRESH_SamplerAddressMode addressModeV; + REFRESH_SamplerAddressMode addressModeW; + float mipLodBias; + uint8_t anisotropyEnable; + float maxAnisotropy; + uint8_t compareEnable; + REFRESH_CompareOp compareOp; + float minLod; + float maxLod; + REFRESH_BorderColor borderColor; +} REFRESH_SamplerStateCreateInfo; + typedef struct REFRESH_VertexBinding { uint32_t binding; @@ -567,18 +617,45 @@ REFRESHAPI void REFRESH_DrawPrimitives( int32_t primitiveCount ); -/* Render State */ +/* State Creation */ -REFRESHAPI REFRESH_RenderPass CreateRenderPass( +REFRESHAPI REFRESH_RenderPass REFRESH_CreateRenderPass( REFRESH_Device *device, REFRESH_RenderPassCreateInfo *renderPassCreateInfo ); -REFRESHAPI REFRESH_Pipeline CreatePipeline( +REFRESHAPI REFRESH_Pipeline REFRESH_CreatePipeline( REFRESH_Device *device, REFRESH_PipelineCreateInfo *pipelineCreateInfo ); +REFRESHAPI REFRESH_Sampler REFRESH_CreateSampler( + REFRESH_Device *device, + REFRESH_SamplerStateCreateInfo *samplerStateCreateInfo +); + +/* Shader State */ + +REFRESHAPI void REFRESH_SetSamplers( + REFRESH_Device *device, + uint32_t startIndex, + REFRESH_Texture **textures, + REFRESH_Sampler **samplers +); + +REFRESHAPI void REFRESH_SetShaderParamData( + REFRESH_Device *device, + REFRESH_ShaderParamBuffer *shaderParamBuffer, + uint32_t offsetInBytes, + void *data, + uint32_t elementCount, + uint32_t elementSizeInBytes +); + +/* Render Targets */ + + + #ifdef __cplusplus } #endif /* __cplusplus */