Commit Graph

5598 Commits

Author SHA1 Message Date
Antonio Jose Ramos Marquez
51f4741912
[rmodel] fix for devices without VAO support (#5692) 2026-03-27 09:25:26 +01:00
Maicon Santana
a693365bf2
Move DrawModelPoints methods to example - point rendering (#5697) 2026-03-26 18:29:05 +01:00
Ray
0f0983c065 Remove trailing spaces 2026-03-25 16:51:02 +01:00
Krzysztof Szenk
cb05ef7f03
[rcore_desktop_rgfw] [emscripten] fix typo (#5687)
* RGFW also requires RGBA8 images as window icons, as raylib already reports in raylib.h

* LibraryConfigurations.cmake: exchanged MATCHES -> STREQUAL in platform choosing if-statements

* WebRGFW: remapping mouse/touch position to canvas pixel coordinates

* fix 'typo'

* has to be done like that because of += in case of captured mouse

* [rcore_desktop_rgfw] [emscripten] fix typo
2026-03-23 22:22:21 +01:00
Charlie Tonneslan
6cf71f565c
Fix typo: dependant -> dependent in rlgl.h and rexm.c (#5685)
5 instances in src/rlgl.h comments and 1 in tools/rexm/rexm.c.
Skipped vendored raygui.h files in examples/.
2026-03-23 17:17:50 +01:00
Ray
c1dbfc87f3 REVIEWED: PR #5679 2026-03-23 11:52:01 +01:00
Ray
644e4adbe2 Update rcore.c 2026-03-23 11:51:37 +01:00
Krzysztof Szenk
1e74aba7c3
WebRGFW: remapping mouse/touch position to canvas pixel coordinates (#5679)
* RGFW also requires RGBA8 images as window icons, as raylib already reports in raylib.h

* LibraryConfigurations.cmake: exchanged MATCHES -> STREQUAL in platform choosing if-statements

* WebRGFW: remapping mouse/touch position to canvas pixel coordinates

* fix 'typo'

* has to be done like that because of += in case of captured mouse
2026-03-23 11:31:06 +01:00
Levent Kaya
83e35ba170
[rcore] refactor possible data loss on FileMove() (#5682) 2026-03-23 11:30:28 +01:00
Le Juez Victor
8a685877eb
[rlsw] Remove position attribute from sw_vertex_t (#5677)
* review `sw_vertex_t`

* fix comment

* fix pop matrix
2026-03-20 12:07:50 +01:00
Ray
8783e66e21 Update rlsw.h 2026-03-19 23:42:20 +01:00
Le Juez Victor
7ae46fb2e6
[rlsw] Micro-optimizations, tighter pipeline and cleanup (#5673)
* auto generates all combinations of blending factors
This adds a macro system that generate a function for each possible combination of blending factors, resulting in 11*11 functions, hence 121.
This then allows for only one indirection and function call instead of two previously (assuming the first call was inlined).

* rename dispatch tables for consistency

* change blend funcs validity check
Simplifies the validation of blend functions.
Can allow `SW_SRC_ALPHA_SATURATE` as dst factor, but hey

* disables blending when it requires alpha and there is none

* review immediate rendering functions and attribute layout

* prevent state changes during immediate record

* reduce number of op for each vertex push + review primitive struct

* simplified draw functions

* review `sw_vertex_t`
removes `float screen[2]`; each step stores the transformed coordinates in `float coord[4]`.
This also simplifies vertex interpolation during triangle rasterization.

* reduces unnecessary interpolation costs during triangle rasterization + cleanup

* extends the simd color conversion to more cases

* affine interpolation per blocks

* long side check for each triangle line
My mistake in a previous commit

* style tweaks

* select the read function on texture load
This removes the per-pixel switch; it's slightly more efficient on my hardware, but probably a poor prediction
Should remain profitable or at worst the same

* use optionnal LUT for uint8_t -> float conversion

* sets internal the number of vertices post-clipping and the epsilon clipping + a little cleanup

* moves color conversion to math part

* prevents sampling if it's a depth texture that is bound
2026-03-19 23:39:52 +01:00
Ray
04c5dc4493 REVIEWED: PR #5674 2026-03-19 23:35:18 +01:00
Juraj Michálek
bca4f83a02
required change for ESP-IDF 6 (#5674) 2026-03-19 23:19:44 +01:00
Amine Laaboudi
da9e881092
Fix uninstall process to remove rcamera header file (#5671)
Co-authored-by: 0x00650a <Ox00650a@inter.net>
2026-03-18 21:09:27 +01:00
Ray
2a3b28b67a Reviewed some comments 2026-03-18 16:21:35 +01:00
Ray
85df4e7de5 REVIEWED: rlsw, use provided library information 2026-03-18 13:31:09 +01:00
Ray
29e4b77580 RENAMED: rl_gputex to rltexgpu 2026-03-18 13:29:36 +01:00
Ray
2c39703d13 RENAMED: rl_gputex to rltexgpu 2026-03-18 13:28:45 +01:00
Le Juez Victor
d657e86043
[rlsw] Fix typos, update build scripts, and align style (#5669)
* fix typo that appeared during re-format

* fix build scripts for `GRAPHICS_API_OPENGL_SOFTWARE`

* consistency tweak
2026-03-17 20:01:45 +01:00
Ray
0de2e8092b REVIEWED: GetTime(), make sure division is with doubles #5668 2026-03-17 19:38:29 +01:00
Ray
48a34d63ed Update rlsw.h 2026-03-17 18:35:33 +01:00
Ray
fbce5e7541 Bump rlgl version to 6.0, after the low-level shaders API redesign, aligned with raylib 6.0 2026-03-17 18:33:53 +01:00
Ray
18756bb79d REVIEWED: Software renderer flag, renamed to GRAPHICS_API_OPENGL_SOFTWARE
Dropped the `11` relative to OpenGL 1.1 because latest `rlsw 1.5` also includes support for FBOs and could potentially implemented other higher level features in the feature, discerning from OpenGL 1.1 limitations
2026-03-17 18:33:15 +01:00
Ray
6ddf9a1885 Code review, format tweaks, defined version to 1.5 2026-03-17 18:30:48 +01:00
Le Juez Victor
e7d999e3c7
[rlsw] RenderTexture support (#5655)
* review texture formats
Added support for `R3G3B2`, `R5G6B5`, `R4G4B4A4` and `R5G5B5A1`
Added depth formats

* use of textures for the framebuffer
- Framebuffers can now use all texture types that are already available.
- The 24-bit depth format has been removed as it is no longer needed.
- Framebuffer formats are still defined at compile time.
- The allocated texture size is now preserved, which avoids frequent reallocations when resizing framebuffers and will allow the use of `glTexSubImage2D`.

* review framebuffer blit/copy
This greatly simplifies the framebuffer blit/copy logic while now supporting all pixel formats. It is slightly slower in debug builds, but this path is mainly kept for compatibility anyway. The `copy_fast` version is still used for the "normal" cases when presenting to the screen.

* review pixel get/set
less ops for certain formats + fixes

* fix depth write

* texture read/write cleanup + tweaks
I made the  pointers parameters `restrict` for reading/writing textures, which resulted in a slight improvement.
And I reviewed the `static inline` statements, which could potentially bias the compiler; no difference, but it's cleaner.

* style tweaks

* review uint8_t <-> float conversion

* added a reusable object pool system
will allow management of both textures and framebuffers
added support for `glTexSubImage2D`
added handling of 'GL_OUT_OF_MEMORY' errors
removed the default internal texture (unused)

* added FBO API + refactored rasterizer dispatch logic

* fix ndc projection + review presentation
and rename rlsw's resize/copy/blit

* add `glRenderbufferStorage` binding
+ tweaks and fixes

* fix quad sorting + simplify quad rasterization part

* fix line shaking issue

* support of `GL_DRAW_FRAMEBUFFER_BINDING`

* update rlgl - support of rlsw's framebuffers

* fix pixel origin in line rasterization
my bad, an oversight in my previous fix.
This offset should have been moved here rather than per pixel during truncation.

* style tweaks

* fix vla issue with msvc - fill depth / fill color
2026-03-17 17:50:32 +01:00
Ray
1eea511070 Remove trailing spaces 2026-03-16 17:51:53 +01:00
Ray
e0d3037e15 Update raylib.h 2026-03-16 17:51:44 +01:00
Ray
19ec2588be Update Makefiles for emsdk version 5.0.x, using required node 22.16.0 and Python 3.13.3 2026-03-16 17:04:30 +01:00
Thomas Anderson
dfc3f58a06
fixed web platform resize events (#5662) 2026-03-15 23:26:29 +01:00
Thomas Anderson
26f329a5e7
fixed copy paste error in makefiles (#5660) 2026-03-15 20:40:26 +01:00
Ray
1d9e24eb58 REVIEWED: GetTime(), make it consistent between platforms, consider window initialization base time 2026-03-15 20:39:57 +01:00
Soma Mizobuchi
29280971be
rcore_platform_sdl: Fix GetTime() resolution for sdl (#5653)
`SDL_GetTicks()` only has millisecond resolution so switched to
`SLD_GetPerformanceCounter()` combined with
`SDL_GetPerformanceFrequency()` which should allow more granular timing

Fix: remove intermediate  variable

Remove second cast
2026-03-15 20:31:18 +01:00
Thomas Anderson
fd017c0b2d
fixed issue with mouse modes (#5659) 2026-03-15 20:25:31 +01:00
Ray
f89d38b086 Resolveed conflicts 2026-03-13 18:55:36 +01:00
ghera
38ed50c07b
[rcore][android] Fix CMake shared build and improve --wrap WARNING docs (#5646) 2026-03-13 18:53:39 +01:00
Ray
6ba6df3af3 Remove trailing spaces 2026-03-13 18:50:26 +01:00
Thomas Anderson
f9ea607385
fix error in textinsert, found by github user chrg127 (#5644) 2026-03-12 11:38:06 +01:00
Thomas Anderson
7b1096dc53
[raylib.h] fix audio pan comment (#5633)
* fix audio pan comment -- found by a.b.c.d.a.b.c.d

* rlparser: update raylib_api.* by CI

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-10 09:51:12 +01:00
Ray
e40ddfabbb **WARNING: BREAKING:** REDESIGNED: rlgl shader loading API function names for more consistency #5631
ADDED: `rlUnloadShader()` to unload shaders (that function was missing and compute shaders leak memory)
RENAMED: `rlCompileShader()` to p `rlLoadShader()` to be consistent with `rlUnloadShader()`
RENAMED: `rlLoadShaderCode()` to `rlLoadShaderProgram()`, more descriptive of return
RENAMED: `rlLoadShaderProgram()` to `rlLoadShaderProgramEx()`
RENAMED: `rlLoadComputeShaderProgram()` to `rlLoadShaderProgramCompute()`
RENAMED: Some functions parameters for consistency
2026-03-09 14:23:54 +01:00
Ray
2b207be11e ADDED: rlUnloadShader() #5631 2026-03-09 13:22:29 +01:00
Ray
d604cd7f65 Update rmodels.c 2026-03-09 12:52:27 +01:00
victorberdugo1
78023ffca5
Fix memory leak in LoadGLTF when model has no bones (#5629)
Co-authored-by: Victor <victor@localhost.localdomain>
2026-03-09 12:50:19 +01:00
Ray
99cab6d3a7 Update rtext.c 2026-03-06 17:11:48 +01:00
Ray
a0ffefcb9d Update rlgl.h 2026-03-06 16:53:56 +01:00
Ray
12039ba7d0 Update raylib.h 2026-03-06 16:53:40 +01:00
JoeStrout
c8d1f3e750
Make LoadFontFromImage limit its scanning to image dimensions. (#5626) 2026-03-06 16:52:58 +01:00
Maicon Santana
3e926d65a0
add x11 libraries for raylib as glfw make private (#5625) 2026-03-05 14:51:16 +01:00
ghera
f9ee714c76
[rcore][android] Add WARNING comment for --wrap=fopen build system requirements (#5624)
Co-authored-by: Federico Gherardi <ghera@libero.it>
2026-03-05 11:50:47 +01:00
moe li
02b592cd7b
[rtext] Add MeasureTextCodepoints() for direct measurement of codepoints (#5623)
* Measuring length of an array of codepoints

* Applied style changes and removed default measurement function
2026-03-05 11:49:57 +01:00
Ray
d6926eb46a Update CMakeLists.txt 2026-03-04 19:17:46 +01:00
Ray
eb1e85e400 Update rmodels.c 2026-03-04 19:17:41 +01:00
Maicon Santana
2eaac95df0
Check if locs is not null before try to access (#5622) 2026-03-04 19:16:22 +01:00
Thomas Anderson
de720a8d4c
[backend/GLFW] Added bounds check (#5621)
* added bounds check

* update from PR feedback
2026-03-04 08:40:15 +01:00
Ray
faf42366ec Code gardening 2026-03-04 01:14:26 +01:00
Ray
5ada84cc6d Update rtext.c 2026-03-04 00:13:47 +01:00
Ray
d0f899721b Update raudio.c 2026-03-04 00:01:34 +01:00
Ray
1d85071372 Merge branch 'master' of https://github.com/raysan5/raylib 2026-03-03 22:40:44 +01:00
Ray
b4746469d4 Formating review, using imperative mode in comments 2026-03-03 22:40:34 +01:00
Maicon Santana
37a852a7ae
[web] Add clipboard image implementation for web (#5614)
* Add clipboard image implementation for web

* Making sure that are not malloc empty string or image
2026-03-03 18:57:34 +01:00
Ray
bf830c3f7b Update config.h 2026-03-02 16:07:56 +01:00
Ray
23c8ee855d Update config.h 2026-03-02 16:05:00 +01:00
Ray
416da9aca6 Revert "REVIEWED: TRACELOG() macro logic"
This reverts commit ea92677902.
2026-03-02 16:01:00 +01:00
Ray
936e8ae0db Merge branch 'master' of https://github.com/raysan5/raylib 2026-03-02 15:57:08 +01:00
Ray
ea92677902 REVIEWED: TRACELOG() macro logic 2026-03-02 15:56:59 +01:00
Lam Wei Lun
3bea7f518d
Added MatrixUnit and MatrixMultiplyValue (#5613) 2026-03-02 15:46:15 +01:00
Ray
e1113c8833 REVIEWED: Fullscreen request #5601
Tested on Windows with Edge and Chrome browsers, the other options do not work:
 - `Module.canvas.requestFullscreen(false, false)` - FAIL
 - `Module.requestFullscreen(false, false)` - FAIL
 - `Module.requestFullscreen()` - FAIL

Tested with latest Emscripten/emsdk 5.0.2
2026-03-02 13:16:43 +01:00
Ray
0b9239eca2 REVIEWED: Code formating 2026-03-02 12:24:29 +01:00
Maicon Santana
70a58a6ec6
[platform][glfw][rgfw] Implementing clipboard image linux (#5603)
* Testing linux implementation

* Add implementation for ClipboardImage on Linux

* Adding another check to make sure that only X11 include X11 libs

* Adding some comments to explain the magic numbers
2026-03-02 12:19:42 +01:00
ghera
950c064448
[rcore][android] Replace android_fopen() with linker --wrap=fopen (#5605)
* ANDROID: replace android_fopen with linker --wrap=fopen

* ANDROID: add --wrap=fopen linker flag to src/Makefile
2026-03-02 12:18:04 +01:00
moe li
f583674327
fix memory corruption in GenImageFontAtlas reallocation (#5602) 2026-02-27 08:36:46 +01:00
Maicon Santana
28e40d502a
#if reduced as possible (#5600) 2026-02-27 08:19:06 +01:00
Ray
f3958cae5d Merge branch 'master' of https://github.com/raysan5/raylib 2026-02-27 00:00:17 +01:00
Ray
2b3218c3db REVIEWED: Start working on raylib 6.0 release... 2026-02-26 23:59:30 +01:00
Maicon Santana
05a34b09ea
Swaping #pragma message with TRACELOG inside the clipboard_image function (#5596)
Co-authored-by: Ray <raysan5@gmail.com>
2026-02-26 23:45:34 +01:00
Thomas Anderson
d8861cc35f
change defined() to 0/1 check (#5599) 2026-02-26 23:41:33 +01:00
Ray
c686e087b3 Update rtextures.c 2026-02-26 23:40:03 +01:00
Ray
92a1b80465 REVIEWED: Flags checks, fixes #5597 2026-02-26 23:38:06 +01:00
Thomas Anderson
f23a900e91
fix memory leak found by maiconpintoabreu (#5598) 2026-02-26 23:22:38 +01:00
Jeffery Myers
7a3cecc010
Fix a 64 bit to 32 bit int cast warning. (#5594) 2026-02-26 17:45:40 +01:00
Ray
5361265a7d WARNING: BREAKING: REDESIGNED: raylib build features config system #4411 #4554
Redesigned to support disabling features on compilation with `-DSUPPORT_FEATURE=0`
REMOVED: `SUPPORT_DEFAULT_FONT`, always supported
REMOVED: `SUPPORT_IMAGE_MANIPULATION `, always supported
REMOVED: `SUPPORT_TEXT_MANIPULATION`, always supported
REDESIGNED: `SUPPORT_FONT_ATLAS_WHITE_REC` to `FONT_ATLAS_CORNER_REC_SIZE`
REVIEWED: Config values (other than 0-1) are already defined on respective modules
Other config tweaks here and there
2026-02-26 08:19:28 +01:00
ghera
304e489edd
ANDROID: Fix broken LoadMusicStream due to missing fopen redirect in raudio.c (#5589)
* ANDROID: Fix broken LoadMusicStream due to missing fopen macro override in raudio

* ANDROID: Add missing forward declaration before fopen macro override in raudio
2026-02-26 00:44:00 +01:00
Thomas Anderson
b57526d71e
update makefile and such (#5591) 2026-02-26 00:38:37 +01:00
Thomas Anderson
006216bfcb
[raylib.h] renamed SHADER_LOC_VERTEX_INSTANCETRANSFORMS (#5592)
* renamed SHADER_LOC_VERTEX_INSTANCETRANSFORMS to SHADER_LOC_VERTEX_INSTANCETRANSFORM

* rlparser: update raylib_api.* by CI

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-26 00:35:15 +01:00
Ray
ecaa1d3d18 REVIEWED: Attribute name and location, for consistency 2026-02-25 23:22:48 +01:00
Borin Ouch
ad82393bb8
Fix reversed window blur/focus logic for web (#5590) 2026-02-25 12:35:34 +01:00
Krzysztof Szenk
4ebe7d6215
win32 clipboard: fix for BI_ALPHABITFIELDS narrow support (#5586)
* win32 clipbaord: fix for BI_ALPHABITFIELDS narrow support

* Define BI_ALPHABITFIELDS even if wingdi headers are already included

since BI_ALPHABITFIELDS is not always defined there
2026-02-24 12:56:16 +01:00
Ray
406861a4a1 Update raudio.c 2026-02-24 12:32:48 +01:00
Ray
ade81248c3 REVIEWED: Right timing 2026-02-24 01:26:07 +01:00
Ray
d4dc038e2e WARNING: BREAKING: REDESIGNED: **Animation System** #4606
REVIEWED: Reorganized structures for a clearer distinction between "skeleton", "skin" and "skinning" data
ADDED: New structures: `ModelSkeleton`, `ModelAnimPose` (alias `Transform*`)
ADDED: Runtime data `currentPose` and `boneMatrices` to `Model` structure
ADDED: Support animation frames-blending, for timing control
ADDED: Support animations blending, between two animations
REVIEWED: All models animation loading functions
ADDED: `UpdateModelAnimationEx()` for two animations blending
REMOVED: `UpdateModelAnimationBones*()`, simplified API
REVIEWED: Shader attributes/uniforms names for animations, for consistency
REVIEWED: Multiple tweaks on animations loading for consistency between formats
ADDED: example: `models_animation_timing`
ADDED: example: `models_animation_blending`
REVIEWED: example: `models_animation_gpu_skinning`
REVIEWED: example: `models_animation_blend_custom`
REVIEWED: All animated models loading examples
2026-02-24 01:18:57 +01:00
Thomas Anderson
fbd83cafc7
[Backend/RGFW] Update RGFW to 2.0.0 (#5582)
* initial update

* minor changes

* added minigamepad

* updates

* updates - 2.0-dev

* update char press

* update gamepad

* update gamepad

* update (web)

* update rename, spacing, etc

* updates

* updates for mac-arm64

* moved RGFW into folder

* highdpi fixes

* update windowPos (bug remaining somewhere)

* temp stash, macos fixes for pixelratio

* highdpi resize window fixes

* remove unneeded makefiles

* fix undef oopsie

* update fullscreen/borderless

* update macos defines for older macs and newer ones

* update resizing window
2026-02-22 22:21:09 +01:00
Ray
11e3e6e0b9 REVIEWED: Formating, tested sound examples 2026-02-21 09:09:43 +01:00
David Reid
0c91f230fd
Audio: Fix a glitch at the end of a sound. (#5578)
This is happening because the processing function keeps reading audio
data from the AudioBuffer even after it has been marked as stopped.

There is also an error in ReadAudioBufferFramesInInternalFormat() where
if it is called on a stopped sound, it'll still return audio frames.
This has also been addressed with this commit.
2026-02-21 08:04:32 +01:00
David Reid
005ff74eb0
Audio: Improvements to device configuration (#5577)
* Audio: Stop setting capture config options.

Since the device is being configured as a playback device, all capture
config options are unused and therefore need to not be set.

* Audio: Stop pre-silencing the miniaudio output buffer.

raylib already manually silences the output buffer prior to mixing so
there is no reason to have miniaudio also do it. It can therefore be
disabled via the device config to make data processing slightly more
efficient.

* Audio: Stop forcing fixed sized processing callbacks.

There is no requirement for raylib to have guaranteed fixed sized
audio processing. By disabling it, audio processing can be made more
efficient by not having to run the data through an internal intermediary
buffer.

* Audio: Make the period size (latency) configurable.

The default period size is 10ms, but this is inappropriate for certain
platforms so it is useful to be able to allow those platforms to
configure the period size as required.

* Audio: Fix documentation for pan.

The pan if -1..1, not 0..1.
2026-02-21 08:02:40 +01:00
Ray
0343cb6a37 Update rcore_desktop_sdl.c 2026-02-20 18:47:53 +01:00
TheKodeToad
d148d9515b
Fix text input on SDL3 (#5574) 2026-02-20 18:44:34 +01:00
Ray
2454b3ed4b REVIEWED: TextReplace() and TextLength(), avoid using strcpy() 2026-02-20 16:27:08 +01:00
David Reid
0aacd330d4
[raudio] Remove usage of ma_data_converter_get_required_input_frame_count() (#5568)
* Audio: Remove use of ma_data_converter_get_required_input_frame_count().

This function is being removed from miniaudio. To make this work with
the current architecture of raylib it requires the use of a cache.

This commit implements a generic solution that works across all
AudioBuffer types (static, streams and callback based), but the static
case could be optimized to avoid the cache by incorporating the
functionality of ReadAudioBufferFramesInInternalFormat() into
ReadAudioBufferFramesInMixingFormat(). It would be unpractical to avoid
the cache with streams and callback-based AudioBuffers however so this
commit sticks with a generic solution.

* Audio: Correct usage of miniaudio's dynamic rate adjustment.

This affects pitch shifting. The output rate is being modified with
ma_data_converter_set_rate(), but then that value is being used in the
computation of the output rate the next time SetAudioBufferPitch() which
results in a cascade. The correct way to do this is to use an anchored
output rate as the basis for the calculation after pitch shifting. In
this case, it's the device's sample rate that acts as the anchor.

* Audio: Optimize memory usage for data conversion.

This reduces the per-AudioBuffer conversion cache from 256 PCM frames
down to 8.
2026-02-20 13:46:41 +01:00
Ray
ce617cd814 Update rlgl.h 2026-02-20 11:46:46 +01:00
Ray
4a3c49cdcb REVIEWED: rlLoadTextureDepth(), address inconsistencies with WebGL 2.0 for sized depth formats #5500 2026-02-19 17:55:13 +01:00