Updated the internal Boost version from 1.74.0 to 1.83.0 for Windows and macOS versions. The detailed behavior of geometry calculation functions may change (#1292)
Updated The Parallel Hashmap library from v1.3.8 to v2.0.0 (#1297)
Removed all Lua-related source files as they were not being used (#1293, #1294)
Fixed a bug where the mouse wheel interfered with camera behavior when CameraControl::None_ was set in Camera2D (#1295)
Fixed a bug where .read() and .lookahead() of MemoryReader and MemoryViewReader did not check for out-of-bounds access (#1264)
Fixed a bug on Windows where the program would stop until selection was cleared when text was selected in the console window during console output (#1254)
Fixed a bug where System::LaunchFile() on macOS/Linux could not open files with single quotes in their names (#1283)
Fixed a bug where DebugCamera3D sometimes focused on a different position than the focus point specified in the constructor (#1255, #1274)
Fixed a bug where GlyphInfo::buffer was sometimes not set depending on the acquisition method (#1256)
Fixed a bug where enum types could not be deserialized with Deserializer<MemoryViewReader> (#1288)
Fixed a bug where the spacing of ellipsis dots in text rendering within rectangles could vary depending on font size (#1273)
Fixed a bug in scene management where scene .draw() was called twice when fade time was set to 0 (#1258)
Fixed a bug where 2D physics-related classes caused compile errors in some environments (#1286)
Fixed a bug where fill was not reflected in some cases in RoundRect::drawShadow() (#1269)
Fixed a bug where Indexed() could return dangling references in special cases (#1247)
For Windows version, ensured that the executable directory is always the current directory even when the app is launched via command prompt or Start menu search (#1227)
Changed default model for OpenAI::Chat / Vision to the latest model GPT-4o (#1234)
Changed specification so that .normalize(), .normalized() for zero vectors return zero vectors (#1237)
Changed specification so that LineString::calculateBuffer() and LineString::calculateRoundBuffer() return shapes (square, circle) even for single points (#1209, #1210)
Fixed the issue where both ends did not gradient in Circle::drawArc(LineStyle::RoundCap) and the bug where inner and outer colors were reversed (#1013, #1193, #1198)
Fixed a bug where RandomInt8(), RandomInt16(), RandomInt32(), RandomInt64() did not return minimum values (#1196)
Fixed a bug where Parse<double>(U"") returned 0 without throwing ParseError (#1173, #1174)
Fixed a bug where joinRoomReturn was not called in MultiPlayer_Photon (#1169)
Fixed a bug where Cursor::SetPos() did not properly coordinate with scene size (#1167, #1168)
Fixed rendering disturbance in RoundRect::drawShadow() when blur was large (#1164)
Fixed a bug where ConstantBuffer copying was not performed correctly (#1154, #1155)
Fixed the issue where some RectF constructors gave narrowing conversion warnings when receiving int32 (#1184)
Fixed the issue where frame rate was limited when VSync was disabled in some Windows environments (#1179)
Fixed a bug where GIF image resolution obtained by ImageDecoder::GetImageInfo() was incorrect (#1172)
Fixed the issue where loading GIF files with width or height larger than 16384px caused crashes (#1171)
Fixed the issue where DebugCamera3D::drawTouchUI() was missing const (#1091)
Fixed the issue where some constexpr member functions of shape classes used inactive union members (#1139, #1141)
Fixed the issue where message boxes were not displayed properly when in fullscreen + render target change (#1150)
Mipmap generation for Texture is now performed on the GPU. Creating textures from images with TextureDesc::Mipped, emoji, and icons is significantly faster (#1133, #1137)
Improved speed and accuracy of bounding box recalculation for Polygon scale functions (#1069, #1132)
Raclamusi: Implementation of efficient member function overloads for rvalue Array and other classes, Acceleration of Image::clipped() etc., fixing return value issues in some functions
yama-can: Implementation of Rect::skewedX() etc., Implementation of fade time specification in SceneManager::init()
comefrombottom: Implementation of Image::rotate90(n) etc., Implementation of .rotate90() for Point and Vector2D
ozone010: Added operator% and operator%= to Point type
voidproc: Fixed typos in documentation and source code
Made Circle::drawPie(), Circle::drawArc(), Circle::drawSegmentFromAngles() draw clockwise triangles normally even when negative angle is specified (#1042)
TextEditState now supports serialization (string only) (#930)
Added validity checking to Base64 decoding (#845, #961)
Math::Damp(), Math::SmoothDamp() now support ColorF type (#947)
Added .contains(), .contains_if() with the same functionality as .includes(), .includes_if() to StringView, String, Array for consistency with C++23 (#944)
Performed refactoring to reduce header weight (#883, #886)
Resolved the issue on Windows where showing a message box during fullscreen would make the application unresponsive. A fallback message box is displayed within the scene (#915)
Improved template argument deduction for Array (#887)
Added .horizontalAspectRatio() function to Point, Float2, Vec2, Rect, RectF, Image, Texture, Emoji, Scene::, RoundRect to return horizontal aspect ratio (#810, #812)
Added timestamp-related functions to Multiplayer_Photon (#807)
Added .joinRandomRoomOrCreate() to Multiplayer_Photon (#806)
Made engine initialization possible without including NotoEmoji-Regular.ttf in engine resources (#684)
Added engine/font/min/siv3d-min.woff containing minimum required glyphs as an alternative to NotoSansCJK-Regular.ttc.zstdcmp or NotoSansJP-Regular.otf.zstdcmp (#682)
Added more supported languages for Windows installer (#671)
Added support for C++20, utilizing Concepts, Designated initialization, [[nodiscard]] for constructors, spaceship operator, more constexpr, new standard library features, etc.
Added experimental Web version implementation (see OpenSiv3D for Web for details)
OpenGL backend is now available on Windows (see Tutorial 35 for details)
Added HTTP client functionality for asynchronous file downloads
Added HighDPI support by default
Added support for loading SVG files
Added support for loading MIDI files
Added VideoTexture class to handle videos as textures
Added functionality to get pen tablet input (pressure, tilt) on Windows
Custom vertex shaders can now be used in 2D drawing. Custom vertex and pixel shaders can also be used in 3D.
Added support for audio fade-in/fade-out (play, stop, volume, pan, speed) on all platforms
Added real-time audio filter functionality such as HPF, LPF, pitch shift
Character outlines and Polygons can now be obtained accurately
SDF / MSDF can now be specified as Font rendering format
Added support for Font scaled drawing, outlines, and shadows
Added support for streaming playback of audio files
Added regular expression functionality supporting String type
Added functionality to obfuscate strings embedded in executables
Added function to perform demangling
Added class that performs Kahan's summation algorithm
Added 128-bit integer types
Stopwatch and Timer can now use user-defined reference time interface ISteadyClock, making it easy to pause multiple Stopwatch and Timer collectively or make them progress slower/faster
TimeProfiler now provides more detailed statistics
Added functionality to load GeoJSON, a geospatial data exchange format
Added many mathematical constants
Added JSON class that integrates JSONReader, JSONWriter
Added SimpleAnimation class for simple keyframe animations
Added functions for statistical processing
Added functionality for color mapping based on values
Added many convenient member functions to vector classes
Added many convenient member functions to shape classes
Added heart shape, bidirectional arrow, Squircle shape to Shape2D
Added functionality to flexibly map textures to Polygon
Added option to allow 90° rotation in rectangle packing
Added functionality for homography transformation
Various random functions can now take random engines as arguments
Added UUID generation functionality
Added functionality to get environment variables
Added functionality to get command line arguments
More detailed information such as monitor physical size can now be obtained
Added detailed options for serial communication
Added text-to-speech functionality using Klatt method
Added support for reading WebP, TIFF image formats
Added support for reading Opus, AIFF, FLAC, MIDI, WMA audio formats
Image processing can now be applied to parts of images
Added GrabCut functionality
Improved QR code generation functionality
Improved VideoWriter
Sound font files can now be used
Added mouse cursor styles
Added function to get all key inputs
Asynchronous loading in asset management became more convenient
Added many example files
Navigation mesh became easier to use
Added Spline2D class
Added support for obtaining parts of shape outlines
Added support for shape Lerp
Added support for GPU-only triangle drawing
Added support for custom mouse cursors
Added functionality to group audio and adjust volume by group
Added support for getting Ogg Vorbis loop tags
Added Levenshtein distance functionality
Added concave hull functionality
Added flexible image decoder and encoder classes
Added random generation with closed/open intervals specified
Added build-time engine configuration functionality via SIV3D_SET()
Effect recursion is now possible
Added CJK fonts, Print now supports Chinese and Korean display
Added VideoReader class to load video files
Added 2D physics simulation functionality
Added Siv3D-kun pixel art assets
Added Siv3D-kun .obj 3D model file
Added Image::stamp()
Line::drawDoubleHeadedArrow() can now draw bidirectional arrows
Screenshot save shortcut key can now be customized
Significantly improved script functionality
Supported more combinations for 2D shape intersection detection
Argument order of Math::SmoothDamp() has changed. Cannot be detected by compile errors
Font vertical writing feature temporarily unavailable
Natural language processing feature temporarily unavailable
SimpleGUIManager feature cancelled
NoiseGenerator class temporarily unavailable
Shift_JIS text files no longer supported
Scene resize mechanism changed (see Tutorial 15)
Emoji design changed
Random reproducibility not compatible with v0.4.3
2D physics simulation changed to use cm as default unit
Drawing method per Glyph unit changed
Windows version automatically includes precompiled <Siv3D.hpp> in all source files. # include <Siv3D.hpp> in Main.cpp is effectively meaningless. If # define NO_S3D_USING is needed, do it in stdafx.h for precompiled header creation
Audio no longer holds data in Wave compatible format. .getWave() replaced with .getSamples(). GlobalAudio::BusGetSamples() is also available
Ebishu-0309: Implemented many functions in Geometry2D::, Implementation of Shape2D::Squircle(), implemented .boundingRect() for Bezier2, Bezier3, code improvements