* add base of rlsw.h
* implement state support
Also replace the triangle rasterization functions with macros that generate specific functions for each state of the rendering system.
Also, add the OpenGL definitions in order to add a binding for rlgl.
* branchless float saturation
* apply perspective correction to colors
* impl line clipping and rasterization
+ tweak function names
* impl face culling
* impl color blending
* fixes and tweaks
* add clear buffer bitmasks
* small optimizations / tweaks
* review ndc to screen projection
* avoid to recalculate MVP when its not needed + tweaks
* review the loading and management of textures
to be closer to the OpenGL API
* texture sampling optimization
* review get pixel functions
+ review unorm/float conversion
* add several buffer format support
Several depth and color formats have been added for the framebuffer.
8-bit, 16-bit, and 24-bit formats are now available for depth.
RGB 8-bit (332), RGB 16-bit (565), and RGB 24-bit (888) formats are now available for color.
Alpha support is no longer present for the framebuffer at the moment, but it can easily be restored by adding the formats and reinterpolating the alpha in the areas that do not perform color blending.
Additionally, this commit brings performance improvements.
* tweaks
* impl line width
* impl points + point size
* fix and improve polygon clipping functions
* impl polygone modes
* add some not planned functions
- `glDepthMask`
- `glColorMask`
* framebuffer resizing + handle init failure
* add quick notes about line clipping algorithms used
* start to impl scissor test + review line clipping
The support for the scissor test has been implemented for clearing as well as for triangle clipping.
The implementation for lines and points is still missing.
I also removed the 2D clipping of lines that used the Cohen-Sutherland algorithm, opting instead to always use the Liang-Barsky algorithm in all cases.
This simplifies the implementation, and the 2D version would have caused issues when interpolating vertices in the future if we want to implement additional features.
* review scissor clear
* review `swScissor`
* impl line scissor clipping
* round screen coordinate (line rasterization)
* impl point scissor clipping
* remove unused defs
* add getter functions
* gl binding
* add `glHint` and `glShadeModel` macros (not implmented)
* binding tweaks
* impl copy framebuffer function + glReadPixels
* review `swCopyFramebuffer`
* update rlgl.h
* update rlgl.h
* texture copy support
* fix typo..
* add get error function
* def sw alloc macros
* reimpl get color buffer func
just in case
* remove normal interpolation
* review texture wrap
* fix ndc projection (viewport/scissor)
* impl framebuffer blit function
* reduce matrix compuations and memory usage
* swBegin tweaks
* preventing a possible division by zero
* remove useless scissor related data
* review color blending system
* greatly improve float saturation
* tweak lerp vertex function
* use opitmized fract function in sw_texture_map
* tweak framebuffer functions for better readability
* optimized copy/blit functions for each dst format
* review framebuffer filling functions
* impl specific quad rendering func
* use of a single global vertex buffer
* fix 'sw_poly_point_render'
* added `SW_RESTRICT` and redesigned `sw_lerp_vertex_PNCTH`
* tweak the pipeline flow regarding the face culling
avoids misprediction, improves vectorization if possible
* new rendering path for axis aligned quads
* oops, translating some comments
* use of `restrict` for blending function parameters
* update rlgl.h
* adding `GRAPHICS_API_OPENGL_11_SOFTWARE` in `DrawMesh`
* add `RL_OPENGL_11_SOFTWARE` enum
* temp tweak
* build fixes
* fix DrawMesh for GL 1.1
* update swClose
* review texture format + fix copy
* set minimum req vertices to 3 (quads)
* check swInit
* review pixelformat
* tweaks
* fix animNormals (DrawMesh)
* fallback color/texcoord (swDrawArrays)
* review swMultMatrixf
* fix texture pool alloc..
* review triangle scanlines
increment all data
* fix `sw_quad_sort_cw`
* impl sdl platform
* rm def
* increase max clipped polygon vertices
* improve triangle rasterization along Y axis
improved robustness against numerical errors
incremental interpolation along Y
simplified function, fewer jumps
* review current vertex data
+ increase max clipped polygon vertices (for extreme cases)
* fix and improve polygon clipping
Sets the vertex count to zero when the polygon is invalid
Stops clipping when the vertex count drops below 3
* fix gradient calculation
* cache texture size minus one + comments
* tweaks
* BGRA copy support
* adding software backend option (cmake)
* update Makefile
* fix face culling
* excluse some exemple with the software backend
* review SW_CLAMP case in sw_texture_map
* review sw_saturate
* review line raster
* fix sw_quad_is_aligned
* review sw_raster_quad_axis_aligned
* tweaks
* codepoint fix (?)
* fix var name...
* rcore_drm software renderering
* cleanup and tweaks
* adding support for `GL_POINT_SIZE` and `GL_LINE_WIDTH` get
* fix sampling issue
* fix swBlendFunc
---------
Co-authored-by: Ray <raysan5@gmail.com>
* fix definition to use SDL3
* [cmake] fix definition to use SDL3
* [build][cmake] prefer USING_VERSION_SDL3 over PLATFORM_DESKTOP_SDL3
* [build][cmake] when libs are added externally, consumer needs to import them too
Added CMake support for SDL3.
Now supports including SDL2 or SDL3 as a subdirectory within the project. The system will first check for SDL3, then SDL2. If neither is found, it will attempt find_package(SDL3), followed by find_package(SDL2). If all these checks fail, the process will terminate with an error.
* Improve cmake config file generation
This allows for finding raylib on a non-standard location (eg, not in /usr/lib{,64})
* Only have glfw as private if using internal glfw and not static
Use GLVND also when legacy implementations exist for old cmake versions
<= 3.10. This is a breaking change for old cmake versions (prior to
around 2017-10-05) which will now use GLVND rather than defaulting to
libGL.
This fixes the following warning when building:
CMake Warning (dev) at /gnu/store/qv13zgbmyx0vjav8iiqp772kp6rxvwnd-cmake-3.24.2/share/cmake-3.24/Modules/FindOpenGL.cmake:315 (message):
Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
available. Run "cmake --help-policy CMP0072" for policy details. Use the
cmake_policy command to set the policy and suppress this warning.
FindOpenGL found both a legacy GL library:
OPENGL_gl_LIBRARY: /home/simendsjo/.guix-profile/lib/libGL.so
and GLVND libraries for OpenGL and GLX:
OPENGL_opengl_LIBRARY: /home/simendsjo/.guix-profile/lib/libOpenGL.so
OPENGL_glx_LIBRARY: /home/simendsjo/.guix-profile/lib/libGLX.so
OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
compatibility with CMake 3.10 and below the legacy GL library will be used.
Call Stack (most recent call first):
cmake/LibraryConfigurations.cmake:21 (find_package)
src/CMakeLists.txt:46 (include)
This warning is for project developers. Use -Wno-dev to suppress it.
See https://cmake.org/cmake/help/latest/policy/CMP0072.htmlCloses#2825
* Fixed Compiling Raylib for android Using cmake
* improved the cmake config for android so it don't conflict
* improved the cmake config for android so it don't conflict
* Documenting the compiler flags
* Moved some android compiler flags and added documentation on them too.
* Some more restructuring.
Removed unnecessary comments that were self described by the code.
Added some more explanations around certain parts of CMake and especially around compiler flags.
CMake relied on this file for configurations and also was interfering in the regular config.h by having a separate definition if building with CMake. This was not entirely correct so instead we will define compile time definitions separately through CMake (CompileDefinitions.cmake) and also will use the provided EXTERNAL_CONFIG_FLAGS that I found that will not use config.h in through the build process.
I also introduced a new compiler option (CUSTOMIZE_BUILD) that when OFF will use the default config.h and when ON will show other options for redefining your own options.
Fixed an error in rlgl.h where if you have both RLGL_STANDALONE and SUPPORT_VR_SIMULATOR you get a compile time error.
* Delete emscripten.cmake
This file is not needed at this point. EMSDK provides a toolchain file that has a lot more things in it and is better supported. Project currently works fine with the documentation provided in Emscripten SDK on how to build projects.
* First pass file separation.
The main two files are cleaner now. Only important things can be seen. Major changes include:
- raylib_static is now the alias instead of raylib
- Repeating segments are removed and pulled into separate files into <root>/cmake
- File is reordered to make more sense
- Installs are better structured
- Library is build into an output directory "raylib" instead of "src"
- All public header files are now set as a public header file
- Source files need to be listed (it is a bad practice to capture them using wildcards and file globs)
- CMakeLists are better commented
* Second pass on the example dirs.
They are quite complex so I'm more hesitant to do major changes. Also it works pretty well. Noticed that I forgot one of the seperated files and added it into src/CMakeLists.txt.
* Returned the header copy as it was convenient to have the public headers copied.
* A better description to the variable RAYLIB_IS_MAIN
Co-authored-by: Rob Loach <robloach@gmail.com>
* Remove debug message
Co-authored-by: Rob Loach <robloach@gmail.com>
* Improvements based on review.
* Simplify the install condition to not be platform specific as it was before.
Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>
* Remove some CMAKE variables as they don't affect the build in any way
Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>
Co-authored-by: Rob Loach <robloach@gmail.com>
Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>