@@ -108,7 +108,14 @@ var rlUnloadShaderProgram func(id uint32)
108108var rlGetLocationUniform func (shaderId uint32 , uniformName string ) int32
109109var rlGetLocationAttrib func (shaderId uint32 , attribName string ) int32
110110var rlSetUniformSampler func (locIndex int32 , textureId uint32 )
111+ var rlLoadComputeShaderProgram func (shaderID uint32 ) uint32
111112var rlComputeShaderDispatch func (groupX uint32 , groupY uint32 , groupZ uint32 )
113+ var rlLoadShaderBuffer func (size uint32 , data unsafe.Pointer , usageHint int32 ) uint32
114+ var rlUnloadShaderBuffer func (id uint32 )
115+ var rlUpdateShaderBuffer func (id uint32 , data unsafe.Pointer , dataSize uint32 , offset uint32 )
116+ var rlBindShaderBuffer func (id uint32 , index uint32 )
117+ var rlReadShaderBuffer func (id uint32 , dest unsafe.Pointer , count uint32 , offset uint32 )
118+ var rlCopyShaderBuffer func (destId uint32 , srcId uint32 , destOffset uint32 , srcOffset uint32 , count uint32 )
112119var rlGetShaderBufferSize func (id uint32 ) uint32
113120var rlBindImageTexture func (id uint32 , index uint32 , format int32 , readonly bool )
114121var rlGetMatrixModelview func (matrix uintptr )
@@ -223,7 +230,14 @@ func initRlglPurego() {
223230 purego .RegisterLibFunc (& rlGetLocationUniform , raylibDll , "rlGetLocationUniform" )
224231 purego .RegisterLibFunc (& rlGetLocationAttrib , raylibDll , "rlGetLocationAttrib" )
225232 purego .RegisterLibFunc (& rlSetUniformSampler , raylibDll , "rlSetUniformSampler" )
233+ purego .RegisterLibFunc (& rlLoadComputeShaderProgram , raylibDll , "rlLoadComputeShaderProgram" )
226234 purego .RegisterLibFunc (& rlComputeShaderDispatch , raylibDll , "rlComputeShaderDispatch" )
235+ purego .RegisterLibFunc (& rlLoadShaderBuffer , raylibDll , "rlLoadShaderBuffer" )
236+ purego .RegisterLibFunc (& rlUnloadShaderBuffer , raylibDll , "rlUnloadShaderBuffer" )
237+ purego .RegisterLibFunc (& rlUpdateShaderBuffer , raylibDll , "rlUpdateShaderBuffer" )
238+ purego .RegisterLibFunc (& rlBindShaderBuffer , raylibDll , "rlBindShaderBuffer" )
239+ purego .RegisterLibFunc (& rlReadShaderBuffer , raylibDll , "rlReadShaderBuffer" )
240+ purego .RegisterLibFunc (& rlCopyShaderBuffer , raylibDll , "rlCopyShaderBuffer" )
227241 purego .RegisterLibFunc (& rlGetShaderBufferSize , raylibDll , "rlGetShaderBufferSize" )
228242 purego .RegisterLibFunc (& rlBindImageTexture , raylibDll , "rlBindImageTexture" )
229243 purego .RegisterLibFunc (& rlGetMatrixModelview , raylibDll , "rlGetMatrixModelview" )
@@ -746,11 +760,46 @@ func SetUniformSampler(locIndex int32, textureId uint32) {
746760 rlSetUniformSampler (locIndex , textureId )
747761}
748762
763+ // LoadComputeShaderProgram - Load compute shader program
764+ func LoadComputeShaderProgram (shaderID uint32 ) uint32 {
765+ return rlLoadComputeShaderProgram (shaderID )
766+ }
767+
749768// ComputeShaderDispatch - Dispatch compute shader (equivalent to *draw* for graphics pilepine)
750769func ComputeShaderDispatch (groupX uint32 , groupY uint32 , groupZ uint32 ) {
751770 rlComputeShaderDispatch (groupX , groupY , groupZ )
752771}
753772
773+ // LoadShaderBuffer loads a shader storage buffer object (SSBO)
774+ func LoadShaderBuffer (size uint32 , data unsafe.Pointer , usageHint int32 ) uint32 {
775+ return rlLoadShaderBuffer (size , data , usageHint )
776+ }
777+
778+ // UnloadShaderBuffer - Unload shader storage buffer object (SSBO)
779+ func UnloadShaderBuffer (id uint32 ) {
780+ rlUnloadShaderBuffer (id )
781+ }
782+
783+ // UpdateShaderBuffer - Update SSBO buffer data
784+ func UpdateShaderBuffer (id uint32 , data unsafe.Pointer , dataSize uint32 , offset uint32 ) {
785+ rlUpdateShaderBuffer (id , data , dataSize , offset )
786+ }
787+
788+ // BindShaderBuffer - Bind SSBO buffer
789+ func BindShaderBuffer (id uint32 , index uint32 ) {
790+ rlBindShaderBuffer (id , index )
791+ }
792+
793+ // ReadShaderBuffer - Read SSBO buffer data (GPU->CPU)
794+ func ReadShaderBuffer (id uint32 , dest unsafe.Pointer , count uint32 , offset uint32 ) {
795+ rlReadShaderBuffer (id , dest , count , offset )
796+ }
797+
798+ // CopyShaderBuffer - Copy SSBO data between buffers
799+ func CopyShaderBuffer (destId uint32 , srcId uint32 , destOffset uint32 , srcOffset uint32 , count uint32 ) {
800+ rlCopyShaderBuffer (destId , srcId , destOffset , srcOffset , count )
801+ }
802+
754803// GetShaderBufferSize - Get SSBO buffer size
755804func GetShaderBufferSize (id uint32 ) uint32 {
756805 return rlGetShaderBufferSize (id )
0 commit comments