Review comments

This commit is contained in:
Ray 2021-10-18 00:23:26 +02:00
parent a6fb2dafc6
commit ccf4329792

View file

@ -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;