diff options
| -rw-r--r-- | API.md | 28 | ||||
| -rw-r--r-- | ReiLua_API.lua | 25 | ||||
| -rw-r--r-- | changelog | 1 | ||||
| -rw-r--r-- | devnotes | 4 | ||||
| -rw-r--r-- | include/lrlgl.h | 5 | ||||
| -rw-r--r-- | src/lua_core.c | 5 | ||||
| -rw-r--r-- | src/rlgl.c | 54 |
7 files changed, 120 insertions, 2 deletions
@@ -6924,6 +6924,34 @@ Set shader currently active (id and locations) --- +## RLGL - Compute shader management + +--- + +> programId = RL.rlLoadComputeShaderProgram( int shaderId ) + +Load compute shader program + +- Success return int + +--- + +> RL.rlComputeShaderDispatch( int groupX, int groupY, int groupZ ) + +Dispatch compute shader (equivalent to *draw* for graphics pipeline) + +--- + +## RLGL - Buffer management + +--- + +> RL.rlBindImageTexture( int id, int index, int format, bool readonly ) + +Bind image texture + +--- + ## RLGL - Matrix state management --- diff --git a/ReiLua_API.lua b/ReiLua_API.lua index b792a6d..bcb2095 100644 --- a/ReiLua_API.lua +++ b/ReiLua_API.lua @@ -5561,6 +5561,31 @@ function RL.rlSetUniformSampler( locIndex, textureId ) end ---@return any RL.rlSetShader function RL.rlSetShader( id, locs ) end +-- RLGL - Compute shader management + +---Load compute shader program +---- Success return int +---@param shaderId integer +---@return any programId +function RL.rlLoadComputeShaderProgram( shaderId ) end + +---Dispatch compute shader (equivalent to *draw* for graphics pipeline) +---@param groupX integer +---@param groupY integer +---@param groupZ integer +---@return any RL.rlComputeShaderDispatch +function RL.rlComputeShaderDispatch( groupX, groupY, groupZ ) end + +-- RLGL - Buffer management + +---Bind image texture +---@param id integer +---@param index integer +---@param format integer +---@param readonly boolean +---@return any RL.rlBindImageTexture +function RL.rlBindImageTexture( id, index, format, readonly ) end + -- RLGL - Matrix state management ---Get internal modelview matrix @@ -10,6 +10,7 @@ KEY CHANGES: - ADDED: GC_UNLOAD build time define for enabling/disabling Lua garbage collection for objects. Can be checked with IsGCUnloadEnabled - ADDED: Shaders management functions. + - ADDED: Compute shader management and Buffer management. DETAILED CHANGES: - CHANGED: GenImageColor now takes Vector2 as size. @@ -2,8 +2,6 @@ Current { } Backlog { - * rlgl - * Compute shader management * Text * Codepoints? * Audio @@ -14,6 +12,8 @@ Backlog { * Models * LoadMaterials (Load materials from model file). * LoadMaterialsFromModel (Could then for example edit and set back to model). + * rlgl + * Shader buffer storage object management (ssbo) * Extend color lib functionality. * Global variable descriptions for API. diff --git a/include/lrlgl.h b/include/lrlgl.h index 672aadc..dfe97e3 100644 --- a/include/lrlgl.h +++ b/include/lrlgl.h @@ -115,6 +115,11 @@ int lrlglSetUniform( lua_State *L ); int lrlglSetUniformMatrix( lua_State *L ); int lrlglSetUniformSampler( lua_State *L ); int lrlglSetShader( lua_State *L ); +/* Compute shader management */ +int lrlglLoadComputeShaderProgram( lua_State *L ); +int lrlglComputeShaderDispatch( lua_State *L ); +/* Buffer management */ +int lrlglBindImageTexture( lua_State *L ); /* Matrix state management */ int lrlglGetMatrixModelview( lua_State *L ); int lrlglGetMatrixProjection( lua_State *L ); diff --git a/src/lua_core.c b/src/lua_core.c index 7c447f6..cd53c83 100644 --- a/src/lua_core.c +++ b/src/lua_core.c @@ -2296,6 +2296,11 @@ void luaRegister() { assingGlobalFunction( "rlSetUniformMatrix", lrlglSetUniformMatrix ); assingGlobalFunction( "rlSetUniformSampler", lrlglSetUniformSampler ); assingGlobalFunction( "rlSetShader", lrlglSetShader ); + /* Compute shader management */ + assingGlobalFunction( "rlLoadComputeShaderProgram", lrlglLoadComputeShaderProgram ); + assingGlobalFunction( "rlComputeShaderDispatch", lrlglComputeShaderDispatch ); + /* Buffer management */ + assingGlobalFunction( "rlBindImageTexture", lrlglBindImageTexture ); /* Matrix state management. */ assingGlobalFunction( "rlGetMatrixModelview", lrlglGetMatrixModelview ); assingGlobalFunction( "rlGetMatrixProjection", lrlglGetMatrixProjection ); @@ -1394,6 +1394,60 @@ int lrlglSetShader( lua_State *L ) { } /* +## RLGL - Compute shader management +*/ + +/* +> programId = RL.rlLoadComputeShaderProgram( int shaderId ) + +Load compute shader program + +- Success return int +*/ +int lrlglLoadComputeShaderProgram( lua_State *L ) { + unsigned int shaderId = (unsigned int)luaL_checkinteger( L, 1 ); + + lua_pushinteger( L, rlLoadComputeShaderProgram( shaderId ) ); + + return 1; +} + +/* +> RL.rlComputeShaderDispatch( int groupX, int groupY, int groupZ ) + +Dispatch compute shader (equivalent to *draw* for graphics pipeline) +*/ +int lrlglComputeShaderDispatch( lua_State *L ) { + unsigned int groupX = (unsigned int)luaL_checkinteger( L, 1 ); + unsigned int groupY = (unsigned int)luaL_checkinteger( L, 2 ); + unsigned int groupZ = (unsigned int)luaL_checkinteger( L, 3 ); + + rlComputeShaderDispatch( groupX, groupY, groupZ ); + + return 0; +} + +/* +## RLGL - Buffer management +*/ + +/* +> RL.rlBindImageTexture( int id, int index, int format, bool readonly ) + +Bind image texture +*/ +int lrlglBindImageTexture( lua_State *L ) { + unsigned int id = (unsigned int)luaL_checkinteger( L, 1 ); + unsigned int index = (unsigned int)luaL_checkinteger( L, 2 ); + int format = luaL_checkinteger( L, 3 ); + bool readonly = uluaGetBoolean( L, 4 ); + + rlBindImageTexture( id, index, format, readonly ); + + return 0; +} + +/* ## RLGL - Matrix state management */ |
