@@ -667,6 +667,12 @@ func SetUniformSampler(locIndex int32, textureId uint32) {
667667 C .rlSetUniformSampler (clocIndex , ctextureId )
668668}
669669
670+ // LoadComputeShaderProgram -
671+ func LoadComputeShaderProgram (shaderID uint ) uint {
672+ cshaderID := C .uint (shaderID )
673+ return uint (C .rlLoadComputeShaderProgram (cshaderID ))
674+ }
675+
670676// ComputeShaderDispatch - Dispatch compute shader (equivalent to *draw* for graphics pilepine)
671677func ComputeShaderDispatch (groupX uint32 , groupY uint32 , groupZ uint32 ) {
672678 cgroupX := C .uint (groupX )
@@ -675,6 +681,55 @@ func ComputeShaderDispatch(groupX uint32, groupY uint32, groupZ uint32) {
675681 C .rlComputeShaderDispatch (cgroupX , cgroupY , cgroupZ )
676682}
677683
684+ // LoadShaderBuffer - Load shader storage buffer object (SSBO)
685+ func LoadShaderBuffer (size uint32 , data unsafe.Pointer , usageHint int32 ) uint32 {
686+ csize := C .uint (size )
687+ cdata := data
688+ cusageHint := C .int (usageHint )
689+ return uint32 (C .rlLoadShaderBuffer (csize , cdata , cusageHint ))
690+ }
691+
692+ // UnloadShaderBuffer - Unload shader storage buffer object (SSBO)
693+ func UnloadShaderBuffer (id uint32 ) {
694+ cid := C .uint (id )
695+ C .rlUnloadShaderBuffer (cid )
696+ }
697+
698+ // UpdateShaderBuffer - Update SSBO buffer data
699+ func UpdateShaderBuffer (id uint32 , data unsafe.Pointer , dataSize uint32 , offset uint32 ) {
700+ cid := C .uint (id )
701+ cdata := data
702+ cdataSize := C .uint (dataSize )
703+ coffset := C .uint (offset )
704+ C .rlUpdateShaderBuffer (cid , cdata , cdataSize , coffset )
705+ }
706+
707+ // BindShaderBuffer - Bind SSBO buffer
708+ func BindShaderBuffer (id uint32 , index uint32 ) {
709+ cid := C .uint (id )
710+ cindex := C .uint (index )
711+ C .rlBindShaderBuffer (cid , cindex )
712+ }
713+
714+ // ReadShaderBuffer - Read SSBO buffer data (GPU->CPU)
715+ func ReadShaderBuffer (id uint32 , dest unsafe.Pointer , count uint32 , offset uint32 ) {
716+ cid := C .uint (id )
717+ cdest := dest
718+ ccount := C .uint (count )
719+ coffset := C .uint (offset )
720+ C .rlReadShaderBuffer (cid , cdest , ccount , coffset )
721+ }
722+
723+ // CopyShaderBuffer - Copy SSBO data between buffers
724+ func CopyShaderBuffer (destId uint32 , srcId uint32 , destOffset uint32 , srcOffset uint32 , count uint32 ) {
725+ cdestId := C .uint (destId )
726+ csrcId := C .uint (srcId )
727+ cdestOffset := C .uint (destOffset )
728+ csrcOffset := C .uint (srcOffset )
729+ ccount := C .uint (count )
730+ C .rlCopyShaderBuffer (cdestId , csrcId , cdestOffset , csrcOffset , ccount )
731+ }
732+
678733// GetShaderBufferSize - Get SSBO buffer size
679734func GetShaderBufferSize (id uint32 ) uint32 {
680735 cid := C .uint (id )
0 commit comments