Review comments
This commit is contained in:
parent
a6fb2dafc6
commit
ccf4329792
1 changed files with 25 additions and 16 deletions
37
src/rlgl.h
37
src/rlgl.h
|
@ -662,20 +662,20 @@ RLAPI void rlSetShader(unsigned int id, int *locs);
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_43)
|
#if defined(GRAPHICS_API_OPENGL_43)
|
||||||
// Compute shader management
|
// Compute shader management
|
||||||
RLAPI unsigned int rlLoadComputeShaderProgram(unsigned int shaderId);
|
RLAPI unsigned int rlLoadComputeShaderProgram(unsigned int shaderId); // Load compute shader program
|
||||||
RLAPI void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ);
|
RLAPI void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ); // Dispatch compute shader (equivalent to *draw* for graphics pilepine)
|
||||||
|
|
||||||
// Shader buffer storage object management (ssbo)
|
// Shader buffer storage object management (ssbo)
|
||||||
RLAPI unsigned int rlLoadShaderBuffer(unsigned long long size, const void *data, int usageHint);
|
RLAPI unsigned int rlLoadShaderBuffer(unsigned long long size, const void *data, int usageHint); // Load shader storage buffer object (SSBO)
|
||||||
RLAPI void rlUnloadShaderBuffer(unsigned int ssboId);
|
RLAPI void rlUnloadShaderBuffer(unsigned int ssboId); // Unload shader storage buffer object (SSBO)
|
||||||
RLAPI void rlUpdateShaderBufferElements(unsigned int id, const void *data, unsigned long long dataSize, unsigned long long offset);
|
RLAPI void rlUpdateShaderBufferElements(unsigned int id, const void *data, unsigned long long dataSize, unsigned long long offset); // Update SSBO buffer data
|
||||||
RLAPI unsigned long long rlGetShaderBufferSize(unsigned int id);
|
RLAPI unsigned long long rlGetShaderBufferSize(unsigned int id); // Get SSBO buffer size
|
||||||
RLAPI void rlReadShaderBufferElements(unsigned int id, void *dest, unsigned long long count, unsigned long long offset);
|
RLAPI void rlReadShaderBufferElements(unsigned int id, void *dest, unsigned long long count, unsigned long long offset); // Bind SSBO buffer
|
||||||
RLAPI void rlBindShaderBuffer(unsigned int id, unsigned int index);
|
RLAPI void rlBindShaderBuffer(unsigned int id, unsigned int index); // Copy SSBO buffer data
|
||||||
|
|
||||||
// Buffer management
|
// Buffer management
|
||||||
RLAPI void rlCopyBuffersElements(unsigned int destId, unsigned int srcId, unsigned long long destOffset, unsigned long long srcOffset, unsigned long long count);
|
RLAPI void rlCopyBuffersElements(unsigned int destId, unsigned int srcId, unsigned long long destOffset, unsigned long long srcOffset, unsigned long long count); // Copy SSBO buffer data
|
||||||
RLAPI void rlBindImageTexture(unsigned int id, unsigned int index, unsigned int format, int readonly);
|
RLAPI void rlBindImageTexture(unsigned int id, unsigned int index, unsigned int format, int readonly); // Bind image texture
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Matrix state management
|
// Matrix state management
|
||||||
|
@ -3755,11 +3755,12 @@ void rlSetShader(unsigned int id, int *locs)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(GRAPHICS_API_OPENGL_43)
|
||||||
|
// Load compute shader program
|
||||||
unsigned int rlLoadComputeShaderProgram(unsigned int shaderId)
|
unsigned int rlLoadComputeShaderProgram(unsigned int shaderId)
|
||||||
{
|
{
|
||||||
unsigned int program = 0;
|
unsigned int program = 0;
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_43)
|
|
||||||
GLint success = 0;
|
GLint success = 0;
|
||||||
program = glCreateProgram();
|
program = glCreateProgram();
|
||||||
glAttachShader(program, shaderId);
|
glAttachShader(program, shaderId);
|
||||||
|
@ -3798,16 +3799,17 @@ unsigned int rlLoadComputeShaderProgram(unsigned int shaderId)
|
||||||
|
|
||||||
TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Compute shader program loaded successfully", program);
|
TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Compute shader program loaded successfully", program);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return program;
|
return program;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_43)
|
// Dispatch compute shader (equivalent to *draw* for graphics pilepine)
|
||||||
void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ)
|
void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ)
|
||||||
{
|
{
|
||||||
glDispatchCompute(groupX, groupY, groupZ);
|
glDispatchCompute(groupX, groupY, groupZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load shader storage buffer object (SSBO)
|
||||||
unsigned int rlLoadShaderBuffer(unsigned long long size, const void *data, int usageHint)
|
unsigned int rlLoadShaderBuffer(unsigned long long size, const void *data, int usageHint)
|
||||||
{
|
{
|
||||||
unsigned int ssbo = 0;
|
unsigned int ssbo = 0;
|
||||||
|
@ -3819,17 +3821,20 @@ unsigned int rlLoadShaderBuffer(unsigned long long size, const void *data, int u
|
||||||
return ssbo;
|
return ssbo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unload shader storage buffer object (SSBO)
|
||||||
void rlUnloadShaderBuffer(unsigned int ssboId)
|
void rlUnloadShaderBuffer(unsigned int ssboId)
|
||||||
{
|
{
|
||||||
glDeleteBuffers(1, &ssboId);
|
glDeleteBuffers(1, &ssboId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update SSBO buffer data
|
||||||
void rlUpdateShaderBufferElements(unsigned int id, const void *data, unsigned long long dataSize, unsigned long long offset)
|
void rlUpdateShaderBufferElements(unsigned int id, const void *data, unsigned long long dataSize, unsigned long long offset)
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_SHADER_STORAGE_BUFFER, id);
|
glBindBuffer(GL_SHADER_STORAGE_BUFFER, id);
|
||||||
glBufferSubData(GL_SHADER_STORAGE_BUFFER, offset, dataSize, data);
|
glBufferSubData(GL_SHADER_STORAGE_BUFFER, offset, dataSize, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get SSBO buffer size
|
||||||
unsigned long long rlGetShaderBufferSize(unsigned int id)
|
unsigned long long rlGetShaderBufferSize(unsigned int id)
|
||||||
{
|
{
|
||||||
long long size = 0;
|
long long size = 0;
|
||||||
|
@ -3837,20 +3842,23 @@ unsigned long long rlGetShaderBufferSize(unsigned int id)
|
||||||
glBindBuffer(GL_SHADER_STORAGE_BUFFER, id);
|
glBindBuffer(GL_SHADER_STORAGE_BUFFER, id);
|
||||||
glGetInteger64v(GL_SHADER_STORAGE_BUFFER_SIZE, &size);
|
glGetInteger64v(GL_SHADER_STORAGE_BUFFER_SIZE, &size);
|
||||||
|
|
||||||
return (size > 0) ? size : 0;
|
return (size > 0)? size : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read SSBO buffer data
|
||||||
void rlReadShaderBufferElements(unsigned int id, void *dest, unsigned long long count, unsigned long long offset)
|
void rlReadShaderBufferElements(unsigned int id, void *dest, unsigned long long count, unsigned long long offset)
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_SHADER_STORAGE_BUFFER, id);
|
glBindBuffer(GL_SHADER_STORAGE_BUFFER, id);
|
||||||
glGetBufferSubData(GL_SHADER_STORAGE_BUFFER, offset, count, dest);
|
glGetBufferSubData(GL_SHADER_STORAGE_BUFFER, offset, count, dest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bind SSBO buffer
|
||||||
void rlBindShaderBuffer(unsigned int id, unsigned int index)
|
void rlBindShaderBuffer(unsigned int id, unsigned int index)
|
||||||
{
|
{
|
||||||
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, index, id);
|
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, index, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copy SSBO buffer data
|
||||||
void rlCopyBuffersElements(unsigned int destId, unsigned int srcId, unsigned long long destOffset, unsigned long long srcOffset, unsigned long long count)
|
void rlCopyBuffersElements(unsigned int destId, unsigned int srcId, unsigned long long destOffset, unsigned long long srcOffset, unsigned long long count)
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_COPY_READ_BUFFER, srcId);
|
glBindBuffer(GL_COPY_READ_BUFFER, srcId);
|
||||||
|
@ -3858,6 +3866,7 @@ void rlCopyBuffersElements(unsigned int destId, unsigned int srcId, unsigned lon
|
||||||
glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, srcOffset, destOffset, count);
|
glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, srcOffset, destOffset, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bind image texture
|
||||||
void rlBindImageTexture(unsigned int id, unsigned int index, unsigned int format, int readonly)
|
void rlBindImageTexture(unsigned int id, unsigned int index, unsigned int format, int readonly)
|
||||||
{
|
{
|
||||||
int glInternalFormat = 0, glFormat = 0, glType = 0;
|
int glInternalFormat = 0, glFormat = 0, glType = 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue