Merged
Conversation
chenrui333
approved these changes
Nov 18, 2023
Member
|
@jakubmanczak thanks for your first contribution to homebrew-core! 🎉 |
Contributor
|
🤖 An automated task has requested bottles to be published to this PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Created with
brew bump-formula-pr.Details
release notes
Highlights for
raylib 5.0:rcoremodule platform-split: Probably the biggest raylib redesign in the last 10 years. raylib started as a library targeting 3 desktop platforms:Windows,LinuxandmacOS(thanks toGLFWunderlying library) but with the years support for several new platforms has been added (Android,Web,Rapsberry Pi,RPI native...); lot of the platform code was shared so the logic was all together onrcore.cmodule, separated by compilation flags. This approach was very handy but also made it very difficult to support new platforms and specially painful for contributors not familiar with the module, navigating +8000 lines of code in a single file. A big redesign was really needed but the amount of work required was humungus and quite scary for a solo-developer like me, moreover considering that everything was working and the chances to break things were really high. Fortunately, some contributors were ready for the task (@ubkp, @michaelfiber, @Bigfoot71) and thanks to their initiative and super-hard work, thercoreplatform split has been possible! This new raylib architecture greatly improves the platforms maintenance but also greatly simplifies the addition of new platforms. Aplatforms/rcore_template.cfile is provided with the required structure and functions to be filled for the addition of new platforms, actually it has been simplified to mostly filling some pre-defined functions:InitPlatform(),ClosePlatform,PollInputEvents... Undoubtely, this redesign opens the doors to a new era for raylib, letting the users to plug new platforms as desired.NEWPlatform backend supported: SDL: Thanks to the newrcoreplatform-split, the addition of new platforms/backends to raylib has been greatly simplified. As a proof of concept,SDL2platform backend has been added to raylib as an aternative forGLFWlibrary for desktop builds:platforms/rcore_desktop_sdl. Lot of work has been put to provide exactly the same features as the other platforms and carefully test the new implementation. NowSDL2fans can use this new backend, just providing the required include libraries on compilation and linkage (not included in raylib, likeGLFW).SDLbackend support also eases the process of supporting a wider range of platforms that already supportSDL.NEWPlatform backend supported: Nintendo Switch (closed source): The addition of theSDLbackend was quite a challenge but to really verify the robustness and ease of the new platform plugin system, adding support for a console was a more demanding adventure. Surprisingly, only two days of work were required to add support forNintendo Switchto raylib! Implementation result showed an outstanding level of simplicity, with a self-contained module (rcore_swith.cpp) supporting graphics and inputs. Unfortunately this module can not be open-sourced due to licensing restrictions.NEWSplines drawing and evaluation API: A complete set of functions has been added to draw and evaluate different types of splines:Linear,Basis,Catmull-Rom,Quadratic BezierandCubic Bezier. Splines are extremely useful for game development (describe paths, control NPC movement...) but they can also be very useful on tools development (node-conections, elements-movement, 3d modelling, animations...). This was the missing feature on the raylibrshapesmodule to make it complete! Note thatrshapesmodule can also be used independently of raylib just providing the only 6 functions required for vertex definition and drawing.NEWPseudo-random numbers generator: rprand: After several years of users asking for this missing piece, a brand new pseudo-random generator module has been added to raylib.rprandimplements theXoshiro128**algorithm combined withSplitMix64, specially suited for fast software pseudo-random numbers generation. The module also implies some useful functions to generate non-repetitive random numbers sequences, functionality exposed by raylib. usage of this module can be controlled by a compilation flag, in case the default libcrand()function was preferred.NEWAutomation Events System API: This new system was first added inraylib 4.0as an experimental feature but it was a bit clumsy and there was no API exposed to users. For the newraylib 5.0the system has been redesigned and proper API added for the users. With this new events automation system, users can record input events for later replay, very useful feature for testing automation, tutorials generation, assisted game playing, in-game cinematics, speedruns saving or even AI assited game playing!NEWraygui 4.0: The official raylib immediate-mode gui library designed for tools development has been updated to a new version, aligned with raylib 5.0. This new version is a complete redesign of raygui to unify all controls structure and usage, now all controls have the same function signature!.rayguihas been battle-tested with the development of +12 published tools in the last few years. The tools can be seen and used for free in the raylib technologies tools page. Worth mentioning that several of those tools have been open sourced for anyone to use, compile, contribute or learn how the code works.NEWraylib web examples functionality: Beside the addition of several new examples, the web examples functionality has been improved. Examples have been organized by complexity level, marked with one star for simple examples and up to 4 stars for more complex ones. A new option has been added to web to allow to filter examples by function-name usage, to ease the learning process when looking for an usage example of some function. Finally, open-graph metadata information has been added to all examples individual webpages, improving a the visuals and information when sharing those webpages on social networks, sharing the example screenshot and details.As always, those are only some highlights of the new
raylib 5.0but there is many more improvements! Support for 16-bit HDR images/textures, SVG loading and scaling support, new OpenGL ES 3.0 graphic backend, new image gradient generators, sound alias loading, improved 3d models loading, multiple optimizations, new bindings, CodeQL integration and much more!Make sure to check raylib CHANGELOG for a detailed list of changes!
Undoubtely, this is the biggest raylib update in 10 years. Many new features and improvements with a special focus on maintainabiliy and long-term sustainability. Undoubtely, this is the raylib of the future.
Enjoy programming! :)
New Contributors
ExportWaveAsCode()file saving to be more like rtexturesExportImageAsCode()raysan5/raylib#3013DrawBillboardProto allowsourceof negative size (#3197) raysan5/raylib#3203raygui.c&physac.craysan5/raylib#3296UpdateSoundparameter name raysan5/raylib#3405PLATFORM_DESKTOP_SDLchecks. raysan5/raylib#3469Full Changelog: raysan5/raylib@4.5.0...5.0