forked from MoonsideGames/Refresh
shader param buffer stuff
parent
fddba3a94d
commit
1d152a61bf
|
@ -55,16 +55,14 @@ extern "C" {
|
|||
/* Type Declarations */
|
||||
|
||||
typedef struct REFRESH_Device REFRESH_Device;
|
||||
typedef struct REFRESH_Buffer REFRESH_Buffer;
|
||||
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_DepthStencilTarget REFRESH_DepthStencilTarget;
|
||||
typedef struct REFRESH_Framebuffer REFRESH_Framebuffer;
|
||||
typedef struct REFRESH_ShaderModule REFRESH_ShaderModule;
|
||||
typedef struct REFRESH_RenderPass REFRESH_RenderPass;
|
||||
typedef struct REFRESH_ComputePipeline REFRESH_ComputePipeline;
|
||||
typedef struct REFRESH_GraphicsPipeline REFRESH_GraphicsPipeline;
|
||||
|
||||
typedef enum REFRESH_PrimitiveType
|
||||
|
@ -800,6 +798,15 @@ REFRESHAPI REFRESH_Buffer* REFRESH_GenIndexBuffer(
|
|||
uint32_t sizeInBytes
|
||||
);
|
||||
|
||||
/* Creates a shader param buffer to be used by shaders.
|
||||
*
|
||||
* sizeInBytes: The length of the shader param buffer.
|
||||
*/
|
||||
REFRESHAPI REFRESH_Buffer* REFRESH_GenShaderParamBuffer(
|
||||
REFRESH_Device *device,
|
||||
uint32_t sizeInBytes
|
||||
);
|
||||
|
||||
/* Setters */
|
||||
|
||||
/* Uploads image data to a 2D texture object.
|
||||
|
@ -964,23 +971,17 @@ REFRESHAPI void REFRESH_SetFragmentSamplers(
|
|||
uint32_t count
|
||||
);
|
||||
|
||||
/* Sets shader params for use with the currently bound vertex shader.
|
||||
/* Pushes shader param data to a buffer.
|
||||
*
|
||||
* TODO: Do we need to give the user this much control over UBOs?
|
||||
* shaderParamBuffer: The buffer to be updated.
|
||||
* offsetInBytes: The starting offset of the buffer to write into.
|
||||
* data: The client data to write into the buffer.
|
||||
* elementCount: The number of elements from the client buffer to write.
|
||||
* elementSizeInBytes: The size of each element in the client buffer.
|
||||
*/
|
||||
REFRESHAPI void REFRESH_SetVertexShaderParamData(
|
||||
REFRESHAPI void REFRESH_SetShaderParamData(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_ShaderParamBuffer *shaderParamBuffer,
|
||||
uint32_t offsetInBytes,
|
||||
void *data,
|
||||
uint32_t elementCount,
|
||||
uint32_t elementSizeInBytes
|
||||
);
|
||||
|
||||
/* Sets shader params for use with the currently bound fragment shader. */
|
||||
REFRESHAPI void REFRESH_SetFragmentShaderParamData(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_ShaderParamBuffer *shaderParamBuffer,
|
||||
REFRESH_Buffer *shaderParamBuffer,
|
||||
uint32_t offsetInBytes,
|
||||
void *data,
|
||||
uint32_t elementCount,
|
||||
|
@ -1056,28 +1057,16 @@ REFRESHAPI void REFRESH_AddDisposeTexture(
|
|||
REFRESH_Texture *texture
|
||||
);
|
||||
|
||||
/* Sends a color target to be destroyed by the renderer. Note that we call it
|
||||
/* Sends a sampler to be destroyed by the renderer. Note that we call it
|
||||
* "AddDispose" because it may not be immediately destroyed by the renderer if
|
||||
* this is not called from the main thread (for example, if a garbage collector
|
||||
* deletes the resource instead of the programmer).
|
||||
*
|
||||
* colorTarget: The REFRESH_ColorTarget to be destroyed.
|
||||
* texture: The REFRESH_Sampler to be destroyed.
|
||||
*/
|
||||
REFRESHAPI void REFRESH_AddDisposeColorTarget(
|
||||
REFRESHAPI void REFRESH_AddDisposeSampler(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_ColorTarget *colorTarget
|
||||
);
|
||||
|
||||
/* Sends a depth/stencil target to be destroyed by the renderer. Note that we call it
|
||||
* "AddDispose" because it may not be immediately destroyed by the renderer if
|
||||
* this is not called from the main thread (for example, if a garbage collector
|
||||
* deletes the resource instead of the programmer).
|
||||
*
|
||||
* depthStencilTarget: The REFRESH_DepthStencilTarget to be destroyed.
|
||||
*/
|
||||
REFRESHAPI void REFRESH_AddDisposeDepthStencilTarget(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_DepthStencilTarget *depthStencilTarget
|
||||
REFRESH_Sampler *sampler
|
||||
);
|
||||
|
||||
/* Sends a vertex buffer to be destroyed by the renderer. Note that we call it
|
||||
|
@ -1104,7 +1093,55 @@ REFRESHAPI void REFRESH_AddDisposeIndexBuffer(
|
|||
REFRESH_Buffer *buffer
|
||||
);
|
||||
|
||||
/* Sends an shader module to be destroyed by the renderer. Note that we call it
|
||||
/* Sends an shader param buffer to be destroyed by the renderer. Note that we call it
|
||||
* "AddDispose" because it may not be immediately destroyed by the renderer if
|
||||
* this is not called from the main thread (for example, if a garbage collector
|
||||
* deletes the resource instead of the programmer).
|
||||
*
|
||||
* buffer: The REFRESH_Buffer to be destroyed.
|
||||
*/
|
||||
REFRESHAPI void REFRESH_AddDisposeShaderParamBuffer(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_Buffer *buffer
|
||||
);
|
||||
|
||||
/* Sends a color target to be destroyed by the renderer. Note that we call it
|
||||
* "AddDispose" because it may not be immediately destroyed by the renderer if
|
||||
* this is not called from the main thread (for example, if a garbage collector
|
||||
* deletes the resource instead of the programmer).
|
||||
*
|
||||
* colorTarget: The REFRESH_ColorTarget to be destroyed.
|
||||
*/
|
||||
REFRESHAPI void REFRESH_AddDisposeColorTarget(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_ColorTarget *colorTarget
|
||||
);
|
||||
|
||||
/* Sends a depth/stencil target to be destroyed by the renderer. Note that we call it
|
||||
* "AddDispose" because it may not be immediately destroyed by the renderer if
|
||||
* this is not called from the main thread (for example, if a garbage collector
|
||||
* deletes the resource instead of the programmer).
|
||||
*
|
||||
* depthStencilTarget: The REFRESH_DepthStencilTarget to be destroyed.
|
||||
*/
|
||||
REFRESHAPI void REFRESH_AddDisposeDepthStencilTarget(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_DepthStencilTarget *depthStencilTarget
|
||||
);
|
||||
|
||||
/* Sends a framebuffer to be destroyed by the renderer. Note that we call it
|
||||
* "AddDispose" because it may not be immediately destroyed by the renderer if
|
||||
* this is not called from the main thread (for example, if a garbage collector
|
||||
* deletes the resource instead of the programmer).
|
||||
*
|
||||
* framebuffer: The REFRESH_Framebuffer to be destroyed.
|
||||
*/
|
||||
REFRESHAPI void REFRESH_AddDisposeFramebuffer(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_Framebuffer *frameBuffer
|
||||
);
|
||||
|
||||
/* Sends a shader module to be destroyed by the renderer. Note that we call it
|
||||
* "AddDispose" because it may not be immediately destroyed by the renderer if
|
||||
* this is not called from the main thread (for example, if a garbage collector
|
||||
* deletes the resource instead of the programmer).
|
||||
|
@ -1116,6 +1153,30 @@ REFRESHAPI void REFRESH_AddDisposeShaderModule(
|
|||
REFRESH_ShaderModule *shaderModule
|
||||
);
|
||||
|
||||
/* Sends a render pass to be destroyed by the renderer. Note that we call it
|
||||
* "AddDispose" because it may not be immediately destroyed by the renderer if
|
||||
* this is not called from the main thread (for example, if a garbage collector
|
||||
* deletes the resource instead of the programmer).
|
||||
*
|
||||
* renderPass: The REFRESH_RenderPass to be destroyed.
|
||||
*/
|
||||
REFRESHAPI void REFRESH_AddDisposeRenderPass(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_RenderPass *renderPass
|
||||
);
|
||||
|
||||
/* Sends a graphics pipeline to be destroyed by the renderer. Note that we call it
|
||||
* "AddDispose" because it may not be immediately destroyed by the renderer if
|
||||
* this is not called from the main thread (for example, if a garbage collector
|
||||
* deletes the resource instead of the programmer).
|
||||
*
|
||||
* graphicsPipeline: The REFRESH_GraphicsPipeline to be destroyed.
|
||||
*/
|
||||
REFRESHAPI void REFRESH_AddDisposeGraphicsPipeline(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_GraphicsPipeline *graphicsPipeline
|
||||
);
|
||||
|
||||
/* Graphics State */
|
||||
|
||||
/* Begins a render pass.
|
||||
|
|
Loading…
Reference in New Issue