summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjussi2023-10-31 11:52:36 +0200
committerjussi2023-10-31 11:52:36 +0200
commitf8b4b709e62c0fe25e4483925bac4abea5d8cafe (patch)
tree47903b7fb7ac42a8ca5a49b67f48f056900a9f10
parent65fababd8d36b47c85e7d6b43f649ed88c7e8bcf (diff)
downloadreilua-enhanced-f8b4b709e62c0fe25e4483925bac4abea5d8cafe.tar.gz
reilua-enhanced-f8b4b709e62c0fe25e4483925bac4abea5d8cafe.tar.bz2
reilua-enhanced-f8b4b709e62c0fe25e4483925bac4abea5d8cafe.zip
Compute shader management and Buffer management.
-rw-r--r--API.md28
-rw-r--r--ReiLua_API.lua25
-rw-r--r--changelog1
-rw-r--r--devnotes4
-rw-r--r--include/lrlgl.h5
-rw-r--r--src/lua_core.c5
-rw-r--r--src/rlgl.c54
7 files changed, 120 insertions, 2 deletions
diff --git a/API.md b/API.md
index 43b20fc..b23c9eb 100644
--- a/API.md
+++ b/API.md
@@ -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
diff --git a/changelog b/changelog
index 24a63cb..ccecb9a 100644
--- a/changelog
+++ b/changelog
@@ -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.
diff --git a/devnotes b/devnotes
index 3eb51a8..e4a99cd 100644
--- a/devnotes
+++ b/devnotes
@@ -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 );
diff --git a/src/rlgl.c b/src/rlgl.c
index 4a13c81..5855f60 100644
--- a/src/rlgl.c
+++ b/src/rlgl.c
@@ -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
*/