* 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
* 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
* 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
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
* 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
`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
* 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>
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