v3.4.0 - February 28, 2023

New:

  • Improve float/double FastString formatting. More accurate, and supports large numbers with exponent notation
  • Add key repeat feature to KeyPressed, ButtonPressed, and AnyKeyPressed

Bug Fixes:

  • Fix Rect2i.Intersect off by 1 error
  • Fix bug in RB.DrawPixelBuffer breaking normal sprite rendering afterwards
  • Fix compilation bug with audio importer in Unity 2022.2+
  • Fix pinhole rendering at intensity 1.0
  • Fix tilemaps clipping a row or column of pixels prematurely under some circumstances
  • Adjust joystick sensitivity
  • Fix blue screen flashes in Editor by disabling async shader compilation by default

v3.3.0 - November 4, 2022

New:

  • Re-organized project folder structure to be more intuitive, and more immediately obvious
  • Add assembly definitions (asmdef) to put RetroBlit and its Demos into their separate assemblies, improving compilation speed of your game
  • TMX import now generates a single file containing all layers rather than one file per layer

Bug Fixes:

  • Fix an issue with font generation when a character is repeated in character list
  • Fix unintended sprite stretching when drawing SpritePack based NineSlices
  • Add missing Unity UI navigation input manager settings for games that also use Unity UI
  • Fix build issues when some option debug #defines are enabled

v3.2.0 - April 6, 2022

New:

  • Added new API for controlling how Music Cross-fade is performed, RB.MusicCrossFadeSet
  • Improve curvature post processing effect
  • Improve performance on low-end mobile devices
  • New API RB.LoadingAssetsCount returns count of pending async assets

Bug Fixes:

  • Fix parsing of TMX files on systems with localization/encoding settings different than TMX default
  • Change index buffer from 32bit to 16bit to support low-end devices that can't handle 32bit index buffers
  • Fix potential crash when async loading SpritePacks from Addressable Assets

v3.1.1 - November 15, 2021

Bug Fixes:

  • Fix music playback stopping if the playing AudioClip is destroyed, and recreated
  • Fix compilation issue when Addressable Assets are enabled
  • Revert accidental changes made to MyGame demo project
  • Explicitly remove Unity built-in package dependencies, RetroBlit has no dependencies

v3.1.0 - August 15, 2021

New:

  • Add support for textured lines with RB.DrawLineTextured
  • Add support for solid lines of specified thickness
  • UVs in shader are now in sprite space (0,0) to (1,1) rather than spritesheet space. Please rebase any custom shaders against new RetroBlit shaders. See Shaders
  • Added Chromatic Aberration post-processing effect
  • Desaturation post-processing effect now renamed Saturation and ranges from -1.0 Desaturated, to 1.0 Over-saturated
  • Slightly improved scanline and noise effects
  • Add IEquatable to Vector2i, Rect2i, PackedSpriteID to avoid GC when used in containers like List or Dictionary
  • RetroBlit now requires Unity version 2019.3+

Bug Fixes:

  • Fixed TMXProperties loading when using SpritePack lookup
  • Fix text measurement and alignment when using shaky font effect
  • Fix inline inline font switching when switching multiple times in a single print
  • Fix FastString formatting of negative floats with 0 whole number

v3.0.0 - March 3, 2021

New:

  • Refactored assets, instead of "asset slots" there are now asset classes for each asset type, SpriteSheetAsset, AudioAsset, ShaderAsset, TMXMapAsset, FontAsset
  • Added support for asynchronous asset loading from Resources, WWW, and Addressable Assets!
  • Added support for making RetroBlit assets out of existing Unity resources such as Texture2D or AudioClip. This allows for custom asset loading.
  • Added RB.DrawPixelBuffer for drawing a pixel buffer to display
  • Added 2D spatial audio support
  • Added audio priority support
  • Drawing performance improvements, and even more performance gain in Unity 2019.3+
  • Added SpriteGrid, which replaces SpriteSize and allows for setting up a sprite grid anywhere within a spritesheet image
  • RetroBlit garbage generation from frame-to-frame is reduced from 40 bytes to 0

Bug Fixes:

  • Fixed bug where music would get stuck while cross fading if user was changing music volume at the same time
  • Fixed some non-power of two textures being resized to nearest power of two
  • Fixed RB.DrawRect rotating in the wrong direction
  • Fixed RB.DrawLine pivot point to be the middle of the line

See RetroBlit 2.x to RetroBlit 3.0 porting guide.


v2.3.1 - December 14, 2019

New:

  • Added a new ReadMe inspector pane to help guide new users.
  • Minimum supported Unity version is now 2017.4 (LTS).

Bug Fixes:

  • Re-packaged RetroBlit using new version of Asset Store Tools to fix some import issues in later version of Unity.

v2.3.0 - November 19, 2019

New:

Bug Fixes:

v2.2.1 - June 22, 2019

Bug Fixes:

  • Fix regression with custom font measurements and rendering.

v2.2.0 - June 20, 2019

New:

Bug Fixes:

  • Fix music not stopping and audio not cleaning up when switching games with RB.Initialize.
  • Don't let sprite sizes be bigger than sprite sheet size.
  • Fix sprite clipping when using RB.ROT_90_CW flag.

v2.1.0 - March 5, 2019

New:

  • Sprite Pack support! RetroBlit can now generate optimized sprite sheets out of individual sprite images. This allows you to reference sprites by their file names, rather than sprite sheet coordinates.
  • Sprite Sheets can now be created out of existing Unity RenderTextures, this can allow for better integration with more typical Unity scenes.

v2.0.0 - December 3, 2018

New:

  • FES is now named RetroBlit!
  • Tiled TMX support reworked!
  • TMX files are automatically converted into a RetroBlit binary format for faster access.
  • Added support for TMX map, layer, object, and tile properties.
  • Added support for TMX objects, with support for object templates.
  • Added support for TMX infinite maps, and chunk by chunk loading.
  • All TMX compression formats are now supported.
  • Significant performance improvements, sprite benchmarks are up to 2-3x faster.
  • Allocation garabage generated in RetroBlit from frame to frame is reduced from 500-2000 bytes down to 40 bytes. No Garbage Collection hiccups.
  • Added FastString class, a zero-garbage replacement for strings.
  • Added a set of 30 easing functions for interpolating values, vectors, colors and more!
  • Added ability to render into any sprite sheet, as well as creating blank sprite sheets which now replace offscreen surfaces.
  • Added new RB.Clear method for clearing only a section of the display or sprite sheet.
  • Added RB.DrawTriangle and RB.DrawTriangleFill primitives.
  • Added new Wavy and Shaky text effects.
  • Added ability to change text font inline.
  • Added a flag for ignoring inline text color changes (you can use this to render drop shadows behind text with inline color changes).
  • Added ability to retrieve RetroBlit rendering surface so that you can render it manually, see the new OldDays demo scene!
  • Added OldDays demo.
  • RetroBlit can now be reinitialized at any time by subsequent calls to RB.Initialize and should no longer cause trouble if the Scene is reloaded. It's also possible to switch between different RetroBlit games by calling RB.Initialize for a different game.
  • Removed Indexed Color Mode support and all related APIs.
  • Removed Size2i, now Vector2i also has width and height members (which are aliases for x, and y).
  • Removed ColorRGBA, use Color32 or Color instead.
  • Removed HelloWorld demo, improved MyGame template instead.

Bug Fixes:

  • Fix RB.SpriteSheetSize returning wrong values.
  • Fix sprite sheet not loading if only tilemaps are being rendered.
  • Fix rendering of primitives on some old hardware.
  • Fix bad default audio compression on audio import.

See FES 1.5.0 to RetroBlit 2.0.0 porting guide.


v1.5.0 - April 9, 2018

New:

Bug Fixes:


v1.4.3 - March 16, 2018

New:

  • Improve overall performance by significantly reducing the amount of degenerate triangles used under the hood.

Bug Fixes:

  • Fix colors of primitives (rectangles/pixels/ellipses/lines) being incorrect in indexed mode if there are no sprites nor fonts being drawn in the same frame.
  • Fix a clipping bug when drawing rectangles, filled ellipses, and orthogonal lines.

v1.4.2 - March 5, 2018

Bug Fixes:

  • Fix regression in alpha blending where colors get darker as alpha approaches 0, this bug was introduced in v1.4.0.

v1.4.1 - February 22, 2018

New:

Bug Fixes:

  • Fix tilemap chunks not being clipped at an early stage in the pipeline if they are completely out of clip bounds. This should improve tilemap rendering performance in some scenarios.

v1.4 - February 5, 2018

New:

  • Added custom shader support! Shaders can now be applied in pixel-perfect space when drawing sprites/primitives/fonts, and also at post-process effect time. See RB.ShaderSetup, RB.ShaderSet, RB.EffectShader
  • Added RB.EffectApplyNow API which specifies when post-processing effects should be applied. This is very useful if you want some drawing (eg GUI) to be affected by different post-processing effects (or none at all).
  • Added RB.PaletteColorSet overload that allows for setting colors directly from another palette file, rather than manually one at a time.
  • Added RB.SpriteIndex overload that takes sprite sheet index as a parameter, previously RB.SpriteIndex only worked for current sprite sheet.
  • Added Unity Crash Course to the Documentation to help new Unity developers get started with RetroBlit.

Bug Fixes:

  • Fix incorrect clipping region on Offscreen surface of different size than RB.DisplaySize
  • Fix Tilemap cell not updating when only the Tint Color or Flags are changed.
  • Fix some Tilemap chunks becoming invalid and unsuable if all tiles set manually set to empty/invalid with RB.MapSpriteSet
  • Fix some Tilemap chunks not rendering on Offscreen surface of different size than RB.DisplaySize
  • Fix Tilemap rendering when using the Offset parameter, some chunks were not rendered.
  • Fix Tilemaps leaking Meshes.
  • Fix built-in font not rendering properly if there is no sprite sheets loaded.

v1.3 - January 4, 2018

New:

  • Add support for multiple offscreens with custom sizes. New APIs RB.OffscreenSetup, RB.Offscreen, RB.OffscreenDelete. There is no longer a default offscreen created, an equivalent one can be created with RB.OffscreenSetup
  • Optimized RB.DrawCopyOffscreen
  • Added more error logs for Tilemap and Font operations which were previously failing silently.
  • Added RB.SoundDelete, RB.MusicDelete and RB.SpriteSheetDelete APIs for explicitly releasing resources.

Bug Fixes:

  • RB.DrawCopyOffscreen was flushing too much, causing too many draw calls.

v1.2.1 - December 21, 2017

New:

  • Add Stress Test app.
  • Add RB.SpriteSheetGet for retrieving current sprite sheet index.
  • ColorMode.RGB is now the default ColorMode if one is not specified.
  • Added ``NineSlice`` struct to define the pieces of a nine-slice image more conveniently.
  • Added RB.ClipDebugEnable and RB.ClipDebugDisable to visualize clip regions and assist in debugging clipping related issues.

Bug Fixes:

  • Fix music not restarting when RB.MusicStop & RB.MusicPlay is called.
  • Fix crash when sound is played inside of IRetroBlitGame.Initialize
  • Fix occasional crash with RB.MapClear when clearing all layers.
  • Don't set targetFrameRate in WebGL builds to prevent emscripten warning.
  • Fix clipping region on some older hardware.
  • Fix inverted ellipse rendering on some older hardware.
  • Fix nine-slice rendering.

v1.2 - December 7, 2017

New:

  • Added RB.DisplayModeSet API for changing the pixel resolution of RetroBlit at any time.
  • Added support for wide pixel (2x1) and tall pixel (1x2) modes which can be set in IRetroBlitGame.QueryHardware or in RB.DisplayModeSet
  • Allow Update FPS to be configured in IRetroBlitGame.QueryHardware, defaults to 60fps.
  • Added API RB.FPS and RB.UpdateInterval to query update FPS, and time between update frames in milliseconds.
  • RB.SpriteSize and RB.SpriteSheetSize now take optional sprite sheet index parameter to specify which sprite sheet should be queried.
  • Replaced ColorRGB with ColorRGBA. The alpha component is compounded with the global alpha set by RB.AlphaSet
  • New APIs Rect2i.Intersect, and Rect2i.Center
  • Added some predefined basic colors to ColorRGBA

Bug Fixes:

  • Palette pixels in multi-row palette files should now be read in top-left to bottom-right order, instead of bottom-left to top-right.

v1.1 - November 20, 2017

New:

  • Add support for multiple spritesheets. See RB.SpriteSheetSetup, RB.SpriteSheetSet, and RB.MapLayerSpriteSheetSet
  • Add new RB.Print APIs that allow for specifying the text area, and text alignment within it, as well as text overflow handling strategy (overflow, clip, or word wrap).
  • Greatly improved performance when rendering primitives, in particular lines, and ellipses.

Bug Fixes:

  • Fix "false" return value when loading a TMX map from a CSV formatted file.
  • Fix exception when using RB.MapDataGet on a null data element.

v1.0 - October 19, 2017

Initial release.