Difference between revisions of "0.10.0"
m (→Renamed APIs) |
m (Semantic mediawiki thing) |
||
(42 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | + | [[File:NoGameScreen_0100.png|thumb|no-game screen]] | |
− | The codename for LÖVE 0.10.0 is | + | The codename for LÖVE 0.10.0 is '''Super Toast'''. It is currently '''<span style="color:#0000ff;">released</span>'''. |
− | == Changes from 0.9.2 == | + | == Changes from [[0.9.2]] == |
=== Additions === | === Additions === | ||
* Added an iOS port. | * Added an iOS port. | ||
+ | * Added an Android port. | ||
+ | * Added support for reading accelerometer values on mobile devices. Accelerometers are exposed as 3-axis [[Joystick]]s. | ||
* Added the flag t.accelerometerjoystick to [[love.conf]]. Disables accelerometer-as-joystick functionality on mobile devices when false. | * Added the flag t.accelerometerjoystick to [[love.conf]]. Disables accelerometer-as-joystick functionality on mobile devices when false. | ||
+ | * Added the flag t.gammacorrect to [[love.conf]] (replaces t.window.srgb.) Enabling it globally enables [[love.graphics.isGammaCorrect|gamma-correct rendering]], when supported. | ||
+ | * Added video playback support for Ogg Theora videos, via [[love.graphics.newVideo]]. | ||
+ | * Added [[love.video]] module. It is not used for displaying videos on-screen (see [[Video]] objects for that.) | ||
* Added [[love.touch]] module. Note that it has important differences from the touch implementation in the LÖVE 0.9.2 Android and iOS ports. | * Added [[love.touch]] module. Note that it has important differences from the touch implementation in the LÖVE 0.9.2 Android and iOS ports. | ||
+ | ** Added [[love.touch.getTouches]] | ||
+ | ** Added [[love.touch.getPosition]] | ||
+ | ** Added [[love.touch.getPressure]] | ||
* Added [[love.touchpressed]], [[love.touchreleased]], and [[love.touchmoved]]. | * Added [[love.touchpressed]], [[love.touchreleased]], and [[love.touchmoved]]. | ||
+ | * Added [[love.system.vibrate]]. | ||
* Added [[love.filesystem.setRequirePath]] and [[love.filesystem.getRequirePath]]. | * Added [[love.filesystem.setRequirePath]] and [[love.filesystem.getRequirePath]]. | ||
+ | * Added an optional program exit status number argument to [[love.event.quit]]. | ||
* Added [[love.filedropped]] and [[love.directorydropped]] event callback functions. | * Added [[love.filedropped]] and [[love.directorydropped]] event callback functions. | ||
* Added [[love.lowmemory]] event callback function, called when the app is running out of memory on mobile operating systems. | * Added [[love.lowmemory]] event callback function, called when the app is running out of memory on mobile operating systems. | ||
+ | * Added [[love.textedited]] event callback function, called when the user is compositing text (e.g. via an IME.) | ||
* Added [[love.wheelmoved]] event callback function (replaces "wu" and "wd" constants for [[love.mousepressed]].) | * Added [[love.wheelmoved]] event callback function (replaces "wu" and "wd" constants for [[love.mousepressed]].) | ||
* Added [[love.mouse.hasCursor]]. | * Added [[love.mouse.hasCursor]]. | ||
* Added a boolean argument to [[love.mousepressed]] and [[love.mousereleased]] indicating whether the button event originated from a touch press. | * Added a boolean argument to [[love.mousepressed]] and [[love.mousereleased]] indicating whether the button event originated from a touch press. | ||
+ | * Added [[love.keyboard.isScancodeDown]]. | ||
* Added optional x/y/width/height arguments to [[love.keyboard.setTextInput]]. They tell the system where text will show up so on-screen keyboards can avoid that area. | * Added optional x/y/width/height arguments to [[love.keyboard.setTextInput]]. They tell the system where text will show up so on-screen keyboards can avoid that area. | ||
* Added [[Source:getType]] (replaces [[Source:isStatic]].) | * Added [[Source:getType]] (replaces [[Source:isStatic]].) | ||
+ | * Added [[Source:getDuration]] and [[Decoder:getDuration]]. | ||
+ | * Added an optional string argument containing raw pixel data to the width/height variant of [[love.image.newImageData]]. | ||
+ | * Added [[love.graphics.ellipse]]. | ||
+ | * Added rounded-rectangle support to [[love.graphics.rectangle]]. | ||
+ | * Added [[love.graphics.points]] (replaces [[love.graphics.point]].) | ||
+ | * Added [[love.graphics.intersectScissor]]. | ||
+ | * Added an optional argument to [[love.graphics.setBlendMode]] which indicates whether to treat the colors of drawn objects as having pre-multiplied alpha. | ||
+ | * Added a new built-in [[Shader Variables|shader variable]]: "mat3 NormalMatrix". | ||
* Added [[love.graphics.getSupported]] (replaces [[love.graphics.isSupported]].) | * Added [[love.graphics.getSupported]] (replaces [[love.graphics.isSupported]].) | ||
* Added [[love.graphics.getSystemLimits]] (replaces [[love.graphics.getSystemLimit]].) | * Added [[love.graphics.getSystemLimits]] (replaces [[love.graphics.getSystemLimit]].) | ||
− | * Added [[love.graphics.stencil]] and [[love.graphics. | + | * Added [[love.graphics.stencil]], [[love.graphics.setStencilTest]], and [[love.graphics.getStencilTest]]. (replaces [[love.graphics.setStencil]].) |
* Added [[love.graphics.isActive]]. | * Added [[love.graphics.isActive]]. | ||
* Added color arguments to [[love.graphics.clear]]. It no longer always uses the background color value. | * Added color arguments to [[love.graphics.clear]]. It no longer always uses the background color value. | ||
* Added [[love.graphics.discard]]. | * Added [[love.graphics.discard]]. | ||
+ | * Added [[love.graphics.isGammaCorrect]]. | ||
+ | * Added the "clampzero" [[WrapMode]]. | ||
+ | * Added the ability to specify custom mipmaps when creating an image, via [[love.graphics.newImage]](filename, {mipmaps={mip1, mip2, ...}}). | ||
* Added optional x/y/width/height arguments to [[(Image):refresh|Image:refresh]] and [[Canvas:newImageData]]. | * Added optional x/y/width/height arguments to [[(Image):refresh|Image:refresh]] and [[Canvas:newImageData]]. | ||
* Added [[(Image):getFlags|Image:getFlags]]. | * Added [[(Image):getFlags|Image:getFlags]]. | ||
* Added one- and two-channel [[CanvasFormat|Canvas formats]]: r8, rg8, r16f, rg16f, r32f, and rg32f. | * Added one- and two-channel [[CanvasFormat|Canvas formats]]: r8, rg8, r16f, rg16f, r32f, and rg32f. | ||
− | * Added support for different formats in each Canvas when using multi-canvas rendering. Added the "multicanvasformats" [[GraphicsFeature]] constant. | + | * Added support for different formats in each Canvas when using multi-canvas rendering. |
+ | * Added the "multicanvasformats" [[GraphicsFeature]] constant. | ||
* Added support for OpenGL ES 2 and 3. | * Added support for OpenGL ES 2 and 3. | ||
− | * Added support for loading | + | * Added support for loading ETC, EAC, PVRTC, and ASTC [[CompressedFormat|compressed textures]] on systems that support them. |
* Added custom vertex attribute support for [[Mesh]]es via new variants of [[love.graphics.newMesh]]. | * Added custom vertex attribute support for [[Mesh]]es via new variants of [[love.graphics.newMesh]]. | ||
− | * Added [[Mesh:setVertexAttribute]] and [[Mesh:getVertexAttribute]] | + | * Added [[Mesh:setVertexAttribute]] and [[Mesh:getVertexAttribute]]. |
+ | * Added [[Mesh:getVertexFormat]]. | ||
+ | * Added an optional 'startvertex' argument to [[Mesh:setVertices]]. | ||
+ | * Added the ability for [[love.graphics.newMesh]] and [[Mesh:setVertices]] to accept a [[Data]] object. | ||
+ | * Added [[Mesh:flush]]. | ||
* Added [[Mesh:setAttributeEnabled]] and [[Mesh:isAttributeEnabled]]. | * Added [[Mesh:setAttributeEnabled]] and [[Mesh:isAttributeEnabled]]. | ||
* Added [[Mesh:attachAttribute]]. | * Added [[Mesh:attachAttribute]]. | ||
+ | * Added [[SpriteBatch:attachAttribute]]. | ||
+ | * Added [[Shader:sendColor]]. | ||
+ | * Added new shader functions: gammaCorrectColor, gammaToLinear, and linearToGamma. The functions also have 'precise' and 'fast' variants. | ||
* Added [[Text]] objects and [[love.graphics.newText]]. | * Added [[Text]] objects and [[love.graphics.newText]]. | ||
+ | * Added per-character color support to [[love.graphics.print]], [[love.graphics.printf]], and [[Text]] objects. | ||
* Added BMFont bitmap font file support to [[love.graphics.newFont]] and [[love.font]]. | * Added BMFont bitmap font file support to [[love.graphics.newFont]] and [[love.font]]. | ||
+ | * Added kerning support for TrueType/OpenType and BMFont [[Font]]s. | ||
* Added an optional font hinting argument to [[love.graphics.newFont]] when loading TrueType fonts. | * Added an optional font hinting argument to [[love.graphics.newFont]] when loading TrueType fonts. | ||
* Added an optional spacing argument to [[love.graphics.newImageFont]], which applies additional spacing to all rendered glyphs. | * Added an optional spacing argument to [[love.graphics.newImageFont]], which applies additional spacing to all rendered glyphs. | ||
+ | * Added [[Font:setFallbacks]]. | ||
* Added [[love.window.maximize]]. | * Added [[love.window.maximize]]. | ||
− | * Added [[BezierCurve:renderSegment]] and [[BezierCurve: | + | * Added [[love.window.close]]. |
+ | * Added [[love.window.requestAttention]]. | ||
+ | * Added [[love.window.setDisplaySleepEnabled]] and [[love.window.isDisplaySleepEnabled]]. | ||
+ | * Added [[BezierCurve:renderSegment]] and [[BezierCurve:removeControlPoint]]. | ||
* Added [[BezierCurve:getSegment]]. | * Added [[BezierCurve:getSegment]]. | ||
* Added [[love.math.compress]] and [[love.math.decompress]]. | * Added [[love.math.compress]] and [[love.math.decompress]]. | ||
+ | * Added [[Channel:performAtomic]]. | ||
+ | |||
+ | |||
+ | === Changed APIs === | ||
+ | * Changed [[love.mousepressed]], [[love.mousereleased]], and [[love.mouse.isDown]] to use button numbers instead of named button constants. | ||
+ | * Changed [[love.keypressed]] to be [[love.keypressed]](key, scancode, isrepeat). | ||
+ | * Changed [[love.keyreleased]] to be [[love.keyreleased]](key, scancode). | ||
+ | * Changed [[Font:getWrap]]'s second return value to be a table containing the text split into lines. | ||
+ | * Changed [[love.graphics.newImage]]'s optional second argument to be a table of flags (flags are "mipmaps" and "linear".) | ||
+ | * Changed the arguments for the standard variants of [[love.graphics.newMesh]]. They're now [[love.graphics.newMesh]](vertices [, drawmode, usage]) and [[love.graphics.newMesh]](vertexcount [, drawmode, usage]). | ||
+ | * Changed [[ImageData:encode]] to return a [[FileData]] object. [[ImageData:encode]]'s first parameter is now the format to encode to, and the second parameter is an optional filename to write to. | ||
+ | |||
+ | |||
+ | === Renamed APIs === | ||
+ | * Renamed the [[FullscreenType|fullscreen type]] "normal" to "exclusive". | ||
+ | * Renamed the [[DistanceModel]] constants "inverse clamped", "linear clamped", and "exponent clamped" to "inverseclamped", "linearclamped", and "exponentclamped". | ||
+ | * Renamed [[BlendMode|blend modes]] "additive", "subtractive", and "multiplicative" to "add", "subtract", and "multiply". | ||
+ | * Renamed the [[KeyConstant|key constant]] and [[Scancode]] representing the spacebar from " " to "space". | ||
+ | * Renamed [[(File):eof|File:eof]] to [[(File):isEOF|File:isEOF]]. | ||
+ | * Renamed [[Canvas:getImageData]] to [[Canvas:newImageData]]. | ||
+ | * Renamed [[love.image]]'s [[CompressedData]] type to [[CompressedImageData]]. | ||
+ | |||
=== Removals === | === Removals === | ||
− | + | * Removed callback variant of [[love.filesystem.getDirectoryItems]]. | |
− | * Removed callback variant of [[love.filesystem.getDirectoryItems]] | ||
* Removed the "wu" and "wd" constants for [[love.mousepressed]] (replaced by [[love.wheelmoved]].) | * Removed the "wu" and "wd" constants for [[love.mousepressed]] (replaced by [[love.wheelmoved]].) | ||
* Removed the named mouse [[MouseConstant|button constants]] (replaced by button numbers.) | * Removed the named mouse [[MouseConstant|button constants]] (replaced by button numbers.) | ||
* Removed [[Source:isStatic]] (replaced by [[Source:getType]].) | * Removed [[Source:isStatic]] (replaced by [[Source:getType]].) | ||
* Removed image loading support for all (non-compressed texture) file formats except for PNG, JPEG, TGA, and BMP. | * Removed image loading support for all (non-compressed texture) file formats except for PNG, JPEG, TGA, and BMP. | ||
+ | * Removed JPEG encoding support from [[ImageData:encode]]. | ||
+ | * Removed [[love.graphics.point]] (replaced by [[love.graphics.points]].) | ||
* Removed [[love.graphics.setPointStyle]] and [[love.graphics.getPointStyle]]. | * Removed [[love.graphics.setPointStyle]] and [[love.graphics.getPointStyle]]. | ||
* Removed [[love.graphics.isSupported]] (replaced by [[love.graphics.getSupported]].) | * Removed [[love.graphics.isSupported]] (replaced by [[love.graphics.getSupported]].) | ||
Line 54: | Line 114: | ||
* Removed [[love.graphics.setStencil]] (replaced by [[love.graphics.stencil]] and [[love.graphics.setStencilTest]].) | * Removed [[love.graphics.setStencil]] (replaced by [[love.graphics.stencil]] and [[love.graphics.setStencilTest]].) | ||
* Removed the "canvas", "shader", "npot", "subtractive", and "mipmap" [[GraphicsFeature]] constants (the features always have guaranteed support now.) | * Removed the "canvas", "shader", "npot", "subtractive", and "mipmap" [[GraphicsFeature]] constants (the features always have guaranteed support now.) | ||
+ | * Removed the "multicanvas" [[GraphicsFeature]] constant (use [[love.graphics.getSystemLimits]] instead.) | ||
+ | * Removed the "srgb" [[GraphicsFeature]] constant (use [[love.graphics.isGammaCorrect]] or [[love.graphics.getCanvasFormats]]().srgb instead.) | ||
+ | * Removed the "srgb" flag in [[love.window.setMode]] and in the t.window table in [[love.conf]] (Replaced by t.gammacorrect.) | ||
+ | * Removed the "premultiplied" [[BlendMode]] ([[love.graphics.setBlendMode]]("alpha", "premultiplied") now does the same thing.) | ||
* Removed [[Canvas:getPixel]] (use [[Canvas:newImageData]] instead.) | * Removed [[Canvas:getPixel]] (use [[Canvas:newImageData]] instead.) | ||
* Removed [[Canvas:clear]] (use [[love.graphics.clear]] instead.) | * Removed [[Canvas:clear]] (use [[love.graphics.clear]] instead.) | ||
* Removed [[Mesh:getVertices]]. | * Removed [[Mesh:getVertices]]. | ||
* Removed [[Mesh:setVertexColors]] and [[Mesh:hasVertexColors]] (use [[Mesh:setAttributeEnabled]]("VertexColor", enable) instead.) | * Removed [[Mesh:setVertexColors]] and [[Mesh:hasVertexColors]] (use [[Mesh:setAttributeEnabled]]("VertexColor", enable) instead.) | ||
− | * Removed functions deprecated in LOVE 0.9. | + | * Removed functions deprecated in LOVE [[0.9.1]] and [[0.9.2]]: |
− | ** Removed [[love.graphics.getMaxImageSize]] | + | ** Removed [[love.graphics.getMaxImageSize]] and [[love.graphics.getMaxPointSize]] (replaced by [[love.graphics.getSystemLimits]].) |
− | |||
** Removed [[Mesh:setImage]], [[Mesh:getImage]], [[SpriteBatch:setImage]], [[SpriteBatch:getImage]], [[ParticleSystem:setImage]], and [[ParticleSystem:getImage]] (replaced by set/getTexture.) | ** Removed [[Mesh:setImage]], [[Mesh:getImage]], [[SpriteBatch:setImage]], [[SpriteBatch:getImage]], [[ParticleSystem:setImage]], and [[ParticleSystem:getImage]] (replaced by set/getTexture.) | ||
** Removed [[SpriteBatch:bind]] and [[SpriteBatch:unbind]]. | ** Removed [[SpriteBatch:bind]] and [[SpriteBatch:unbind]]. | ||
Line 66: | Line 129: | ||
** Removed the "dxt" and "bc5" [[GraphicsFeature]] constants (replaced by [[love.graphics.getCompressedImageFormats]].) | ** Removed the "dxt" and "bc5" [[GraphicsFeature]] constants (replaced by [[love.graphics.getCompressedImageFormats]].) | ||
** Removed the "hdrcanvas" [[GraphicsFeature]] constant (replaced by [[love.graphics.getCanvasFormats]].) | ** Removed the "hdrcanvas" [[GraphicsFeature]] constant (replaced by [[love.graphics.getCanvasFormats]].) | ||
− | ** Removed [[love.window.getWidth]] and [[love.window. | + | ** Removed [[love.window.getWidth]], [[love.window.getHeight]] and [[love.window.getDimensions]] (use [[love.graphics.getWidth]], [[love.graphics.getHeight]], [[love.graphics.getDimensions]] or [[love.window.getMode]] instead.) |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Bugfixes === | === Bugfixes === | ||
− | * Fixed [[utf8.char]]. | + | * Fixed [[utf8|utf8.char]]. |
+ | * Fixed detection of fused executables. | ||
+ | * Fixed crashes when objects which store Lua callback functions are garbage collected after being used in coroutines. | ||
+ | * Fixed [[World:getCallbacks]] and [[World:getContactFilter]] when used in coroutines. | ||
+ | * Fixed memory leaks in [[love.physics]] if [[World:destroy]] is never called. When a [[World]] is garbage collected it now destroys all associated [[Body|bodies]], [[Fixture|fixtures]], and [[Joint|joints]]. | ||
* Fixed [[love.keyboard.getKeyFromScancode]] crashing when an invalid scancode is given. | * Fixed [[love.keyboard.getKeyFromScancode]] crashing when an invalid scancode is given. | ||
+ | * Fixed decoding of 8-bit WAV files. | ||
+ | * Fixed a crash issue when rewinding streaming ogg Sources, when certain versions of libvorbis are used. | ||
+ | * Fixed [[love.audio.stop]]() not rewinding streaming Sources. | ||
* Fixed the stencil buffer in [[Canvas]]es when an unsupported MSAA value is used to create the Canvas. | * Fixed the stencil buffer in [[Canvas]]es when an unsupported MSAA value is used to create the Canvas. | ||
+ | * Fixed [[Canvas:renderTo]] to restore the previous canvases if an error occurs in the passed function. | ||
+ | * Fixed love.graphics.draw(canvas) to cause a Lua error if that canvas is the active one. | ||
+ | * Fixed [[Mesh:getVertexMap]] to return nil, rather than an empty table, if no vertex map has been set. | ||
* Fixed [[love.graphics.getColorMask]]. | * Fixed [[love.graphics.getColorMask]]. | ||
* Fixed the default offset for particles when [[ParticleSystem:setQuads]] or [[ParticleSystem:setTexture]] is used. | * Fixed the default offset for particles when [[ParticleSystem:setQuads]] or [[ParticleSystem:setTexture]] is used. | ||
* Fixed [[love.graphics.shear]] resetting all love.graphics transformations. | * Fixed [[love.graphics.shear]] resetting all love.graphics transformations. | ||
+ | * Fixed the "add" and "subtract" [[BlendMode]]s to no longer modify the alpha of the Canvas / screen. | ||
+ | |||
+ | |||
+ | === Performance improvements === | ||
+ | * Improved the performance of [[World:rayCast]] and [[World:queryBoundingBox]]. | ||
+ | * Improved the performance of [[love.graphics.line]] and other line drawing functions, when the "smooth" [[LineStyle]] is used. | ||
+ | * Improved the performance of [[Shader:send]] when matrices are used. | ||
+ | * Improved the performance of [[ImageData]] and [[SoundData]] methods when LuaJIT's JIT compiler is enabled, by using efficient FFI code. | ||
+ | * Improved the performance of [[love.math.noise]], [[love.math.gammaToLinear]], [[love.math.linearToGamma]], [[love.math.random]], and [[RandomGenerator:random]] when LuaJIT's JIT compiler is enabled. | ||
+ | |||
=== Other changes === | === Other changes === | ||
− | * Updated the compatibility warning notice to use a message box. | + | * Updated the compatibility warning notice to use a message box and to show the version specified in love.conf. |
* Updated the compatibility warning notice to display before main.lua is loaded. | * Updated the compatibility warning notice to display before main.lua is loaded. | ||
− | * Updated [[ | + | * Updated the __tostring metamethod of love objects to output the pointer value, similar to tostring(table). |
− | + | * Updated [[World:setCallbacks]], [[World:setContactFilter]], [[World:queryBoundingBox]], and [[World:rayCast]] to have improved argument type checking. | |
− | * Updated [[love. | + | * Updated threads to load [[love.filesystem]] automatically. |
+ | * Updated [[love.filesystem]] to enable [[love.filesystem.setSymlinksEnabled|symlinks]] by default. | ||
* Updated [[love.math.setRandomSeed]] and [[RandomGenerator:setSeed]] to produce better results for the first few random() calls. | * Updated [[love.math.setRandomSeed]] and [[RandomGenerator:setSeed]] to produce better results for the first few random() calls. | ||
+ | * Updated [[love.math.random]] and [[RandomGenerator:random]] to produce slightly better results in general. | ||
* Updated [[Source]] methods that deal with spatial audio to error rather than failing silently if the Source isn't mono. | * Updated [[Source]] methods that deal with spatial audio to error rather than failing silently if the Source isn't mono. | ||
+ | * Updated the 3D and 4D variants of [[love.math.noise]] to use Perlin noise rather than Simplex noise, to avoid patent issues. | ||
* Updated [[love.graphics.newImageFont]] to no longer treat separator pixels as spacing. | * Updated [[love.graphics.newImageFont]] to no longer treat separator pixels as spacing. | ||
* Updated the default font to use less memory. | * Updated the default font to use less memory. | ||
− | * Updated [[Font:getWrap]] | + | * Updated the behavior of text wrapping with [[love.graphics.printf]] and [[Font:getWrap]] to work better. |
+ | * Updated [[love.graphics.print]] and [[love.graphics.printf]] to no longer automatically round the x and y position arguments. | ||
+ | * Updated some of the error messages for [[love.graphics.newImage]] to be more descriptive. | ||
+ | * Updated love.graphics color functions to automatically apply [[love.math.gammaToLinear]] to color values when gamma-correct rendering is enabled. | ||
+ | * Updated the "normal" [[CanvasFormat]] to internally use "srgb" rather than "rgba8" when gamma-correct rendering is enabled. | ||
+ | * Updated [[love.graphics.setColor]] to affect all drawn objects, including [[ParticleSystem]]s, [[SpriteBatch]]es, and [[Mesh]]es, even when per-vertex or per-sprite colors are used. | ||
* Updated the default [[FullscreenType|fullscreen type]] to be "desktop" rather than "exclusive". | * Updated the default [[FullscreenType|fullscreen type]] to be "desktop" rather than "exclusive". | ||
* Updated the minimum runtime system requirements of LOVE to require OpenGL 2.1 or OpenGL ES 2 support. | * Updated the minimum runtime system requirements of LOVE to require OpenGL 2.1 or OpenGL ES 2 support. | ||
* Updated the [[love.graphics.newShader|pixel shader effect]] function so screen_coords.y is 0 at the top of the screen instead of the bottom. | * Updated the [[love.graphics.newShader|pixel shader effect]] function so screen_coords.y is 0 at the top of the screen instead of the bottom. | ||
− | |||
* Updated [[Image]]s to require setting the mipmaps flag to true on creation in order to use mipmaps. | * Updated [[Image]]s to require setting the mipmaps flag to true on creation in order to use mipmaps. | ||
* Updated [[Image]]s to allow mipmaps for non-power-of-two sizes. | * Updated [[Image]]s to allow mipmaps for non-power-of-two sizes. | ||
− | |||
− | |||
[[Category:Versions]] | [[Category:Versions]] | ||
+ | {{#set:InternalVersion=100}} | ||
+ | {{#set:Codename=Super Toast}} | ||
+ | {{#set:Status=<span style="color:#0000ff;">Released</span>}} | ||
+ | {{#set:ReleaseDate=2015-12-22}} |
Latest revision as of 02:07, 20 December 2018
The codename for LÖVE 0.10.0 is Super Toast. It is currently released.
Contents
Changes from 0.9.2
Additions
- Added an iOS port.
- Added an Android port.
- Added support for reading accelerometer values on mobile devices. Accelerometers are exposed as 3-axis Joysticks.
- Added the flag t.accelerometerjoystick to love.conf. Disables accelerometer-as-joystick functionality on mobile devices when false.
- Added the flag t.gammacorrect to love.conf (replaces t.window.srgb.) Enabling it globally enables gamma-correct rendering, when supported.
- Added video playback support for Ogg Theora videos, via love.graphics.newVideo.
- Added love.video module. It is not used for displaying videos on-screen (see Video objects for that.)
- Added love.touch module. Note that it has important differences from the touch implementation in the LÖVE 0.9.2 Android and iOS ports.
- Added love.touch.getTouches
- Added love.touch.getPosition
- Added love.touch.getPressure
- Added love.touchpressed, love.touchreleased, and love.touchmoved.
- Added love.system.vibrate.
- Added love.filesystem.setRequirePath and love.filesystem.getRequirePath.
- Added an optional program exit status number argument to love.event.quit.
- Added love.filedropped and love.directorydropped event callback functions.
- Added love.lowmemory event callback function, called when the app is running out of memory on mobile operating systems.
- Added love.textedited event callback function, called when the user is compositing text (e.g. via an IME.)
- Added love.wheelmoved event callback function (replaces "wu" and "wd" constants for love.mousepressed.)
- Added love.mouse.hasCursor.
- Added a boolean argument to love.mousepressed and love.mousereleased indicating whether the button event originated from a touch press.
- Added love.keyboard.isScancodeDown.
- Added optional x/y/width/height arguments to love.keyboard.setTextInput. They tell the system where text will show up so on-screen keyboards can avoid that area.
- Added Source:getType (replaces Source:isStatic.)
- Added Source:getDuration and Decoder:getDuration.
- Added an optional string argument containing raw pixel data to the width/height variant of love.image.newImageData.
- Added love.graphics.ellipse.
- Added rounded-rectangle support to love.graphics.rectangle.
- Added love.graphics.points (replaces love.graphics.point.)
- Added love.graphics.intersectScissor.
- Added an optional argument to love.graphics.setBlendMode which indicates whether to treat the colors of drawn objects as having pre-multiplied alpha.
- Added a new built-in shader variable: "mat3 NormalMatrix".
- Added love.graphics.getSupported (replaces love.graphics.isSupported.)
- Added love.graphics.getSystemLimits (replaces love.graphics.getSystemLimit.)
- Added love.graphics.stencil, love.graphics.setStencilTest, and love.graphics.getStencilTest. (replaces love.graphics.setStencil.)
- Added love.graphics.isActive.
- Added color arguments to love.graphics.clear. It no longer always uses the background color value.
- Added love.graphics.discard.
- Added love.graphics.isGammaCorrect.
- Added the "clampzero" WrapMode.
- Added the ability to specify custom mipmaps when creating an image, via love.graphics.newImage(filename, {mipmaps={mip1, mip2, ...}}).
- Added optional x/y/width/height arguments to Image:refresh and Canvas:newImageData.
- Added Image:getFlags.
- Added one- and two-channel Canvas formats: r8, rg8, r16f, rg16f, r32f, and rg32f.
- Added support for different formats in each Canvas when using multi-canvas rendering.
- Added the "multicanvasformats" GraphicsFeature constant.
- Added support for OpenGL ES 2 and 3.
- Added support for loading ETC, EAC, PVRTC, and ASTC compressed textures on systems that support them.
- Added custom vertex attribute support for Meshes via new variants of love.graphics.newMesh.
- Added Mesh:setVertexAttribute and Mesh:getVertexAttribute.
- Added Mesh:getVertexFormat.
- Added an optional 'startvertex' argument to Mesh:setVertices.
- Added the ability for love.graphics.newMesh and Mesh:setVertices to accept a Data object.
- Added Mesh:flush.
- Added Mesh:setAttributeEnabled and Mesh:isAttributeEnabled.
- Added Mesh:attachAttribute.
- Added SpriteBatch:attachAttribute.
- Added Shader:sendColor.
- Added new shader functions: gammaCorrectColor, gammaToLinear, and linearToGamma. The functions also have 'precise' and 'fast' variants.
- Added Text objects and love.graphics.newText.
- Added per-character color support to love.graphics.print, love.graphics.printf, and Text objects.
- Added BMFont bitmap font file support to love.graphics.newFont and love.font.
- Added kerning support for TrueType/OpenType and BMFont Fonts.
- Added an optional font hinting argument to love.graphics.newFont when loading TrueType fonts.
- Added an optional spacing argument to love.graphics.newImageFont, which applies additional spacing to all rendered glyphs.
- Added Font:setFallbacks.
- Added love.window.maximize.
- Added love.window.close.
- Added love.window.requestAttention.
- Added love.window.setDisplaySleepEnabled and love.window.isDisplaySleepEnabled.
- Added BezierCurve:renderSegment and BezierCurve:removeControlPoint.
- Added BezierCurve:getSegment.
- Added love.math.compress and love.math.decompress.
- Added Channel:performAtomic.
Changed APIs
- Changed love.mousepressed, love.mousereleased, and love.mouse.isDown to use button numbers instead of named button constants.
- Changed love.keypressed to be love.keypressed(key, scancode, isrepeat).
- Changed love.keyreleased to be love.keyreleased(key, scancode).
- Changed Font:getWrap's second return value to be a table containing the text split into lines.
- Changed love.graphics.newImage's optional second argument to be a table of flags (flags are "mipmaps" and "linear".)
- Changed the arguments for the standard variants of love.graphics.newMesh. They're now love.graphics.newMesh(vertices [, drawmode, usage]) and love.graphics.newMesh(vertexcount [, drawmode, usage]).
- Changed ImageData:encode to return a FileData object. ImageData:encode's first parameter is now the format to encode to, and the second parameter is an optional filename to write to.
Renamed APIs
- Renamed the fullscreen type "normal" to "exclusive".
- Renamed the DistanceModel constants "inverse clamped", "linear clamped", and "exponent clamped" to "inverseclamped", "linearclamped", and "exponentclamped".
- Renamed blend modes "additive", "subtractive", and "multiplicative" to "add", "subtract", and "multiply".
- Renamed the key constant and Scancode representing the spacebar from " " to "space".
- Renamed File:eof to File:isEOF.
- Renamed Canvas:getImageData to Canvas:newImageData.
- Renamed love.image's CompressedData type to CompressedImageData.
Removals
- Removed callback variant of love.filesystem.getDirectoryItems.
- Removed the "wu" and "wd" constants for love.mousepressed (replaced by love.wheelmoved.)
- Removed the named mouse button constants (replaced by button numbers.)
- Removed Source:isStatic (replaced by Source:getType.)
- Removed image loading support for all (non-compressed texture) file formats except for PNG, JPEG, TGA, and BMP.
- Removed JPEG encoding support from ImageData:encode.
- Removed love.graphics.point (replaced by love.graphics.points.)
- Removed love.graphics.setPointStyle and love.graphics.getPointStyle.
- Removed love.graphics.isSupported (replaced by love.graphics.getSupported.)
- Removed love.graphics.getSystemLimit (replaced by love.graphics.getSystemLimits.)
- Removed love.graphics.setStencil (replaced by love.graphics.stencil and love.graphics.setStencilTest.)
- Removed the "canvas", "shader", "npot", "subtractive", and "mipmap" GraphicsFeature constants (the features always have guaranteed support now.)
- Removed the "multicanvas" GraphicsFeature constant (use love.graphics.getSystemLimits instead.)
- Removed the "srgb" GraphicsFeature constant (use love.graphics.isGammaCorrect or love.graphics.getCanvasFormats().srgb instead.)
- Removed the "srgb" flag in love.window.setMode and in the t.window table in love.conf (Replaced by t.gammacorrect.)
- Removed the "premultiplied" BlendMode (love.graphics.setBlendMode("alpha", "premultiplied") now does the same thing.)
- Removed Canvas:getPixel (use Canvas:newImageData instead.)
- Removed Canvas:clear (use love.graphics.clear instead.)
- Removed Mesh:getVertices.
- Removed Mesh:setVertexColors and Mesh:hasVertexColors (use Mesh:setAttributeEnabled("VertexColor", enable) instead.)
- Removed functions deprecated in LOVE 0.9.1 and 0.9.2:
- Removed love.graphics.getMaxImageSize and love.graphics.getMaxPointSize (replaced by love.graphics.getSystemLimits.)
- Removed Mesh:setImage, Mesh:getImage, SpriteBatch:setImage, SpriteBatch:getImage, ParticleSystem:setImage, and ParticleSystem:getImage (replaced by set/getTexture.)
- Removed SpriteBatch:bind and SpriteBatch:unbind.
- Removed Canvas:getFSAA and the "fsaa" flag in love.conf and love.window.setMode (replaced by Canvas:getMSAA and the "msaa" flag.)
- Removed the "dxt" and "bc5" GraphicsFeature constants (replaced by love.graphics.getCompressedImageFormats.)
- Removed the "hdrcanvas" GraphicsFeature constant (replaced by love.graphics.getCanvasFormats.)
- Removed love.window.getWidth, love.window.getHeight and love.window.getDimensions (use love.graphics.getWidth, love.graphics.getHeight, love.graphics.getDimensions or love.window.getMode instead.)
Bugfixes
- Fixed utf8.char.
- Fixed detection of fused executables.
- Fixed crashes when objects which store Lua callback functions are garbage collected after being used in coroutines.
- Fixed World:getCallbacks and World:getContactFilter when used in coroutines.
- Fixed memory leaks in love.physics if World:destroy is never called. When a World is garbage collected it now destroys all associated bodies, fixtures, and joints.
- Fixed love.keyboard.getKeyFromScancode crashing when an invalid scancode is given.
- Fixed decoding of 8-bit WAV files.
- Fixed a crash issue when rewinding streaming ogg Sources, when certain versions of libvorbis are used.
- Fixed love.audio.stop() not rewinding streaming Sources.
- Fixed the stencil buffer in Canvases when an unsupported MSAA value is used to create the Canvas.
- Fixed Canvas:renderTo to restore the previous canvases if an error occurs in the passed function.
- Fixed love.graphics.draw(canvas) to cause a Lua error if that canvas is the active one.
- Fixed Mesh:getVertexMap to return nil, rather than an empty table, if no vertex map has been set.
- Fixed love.graphics.getColorMask.
- Fixed the default offset for particles when ParticleSystem:setQuads or ParticleSystem:setTexture is used.
- Fixed love.graphics.shear resetting all love.graphics transformations.
- Fixed the "add" and "subtract" BlendModes to no longer modify the alpha of the Canvas / screen.
Performance improvements
- Improved the performance of World:rayCast and World:queryBoundingBox.
- Improved the performance of love.graphics.line and other line drawing functions, when the "smooth" LineStyle is used.
- Improved the performance of Shader:send when matrices are used.
- Improved the performance of ImageData and SoundData methods when LuaJIT's JIT compiler is enabled, by using efficient FFI code.
- Improved the performance of love.math.noise, love.math.gammaToLinear, love.math.linearToGamma, love.math.random, and RandomGenerator:random when LuaJIT's JIT compiler is enabled.
Other changes
- Updated the compatibility warning notice to use a message box and to show the version specified in love.conf.
- Updated the compatibility warning notice to display before main.lua is loaded.
- Updated the __tostring metamethod of love objects to output the pointer value, similar to tostring(table).
- Updated World:setCallbacks, World:setContactFilter, World:queryBoundingBox, and World:rayCast to have improved argument type checking.
- Updated threads to load love.filesystem automatically.
- Updated love.filesystem to enable symlinks by default.
- Updated love.math.setRandomSeed and RandomGenerator:setSeed to produce better results for the first few random() calls.
- Updated love.math.random and RandomGenerator:random to produce slightly better results in general.
- Updated Source methods that deal with spatial audio to error rather than failing silently if the Source isn't mono.
- Updated the 3D and 4D variants of love.math.noise to use Perlin noise rather than Simplex noise, to avoid patent issues.
- Updated love.graphics.newImageFont to no longer treat separator pixels as spacing.
- Updated the default font to use less memory.
- Updated the behavior of text wrapping with love.graphics.printf and Font:getWrap to work better.
- Updated love.graphics.print and love.graphics.printf to no longer automatically round the x and y position arguments.
- Updated some of the error messages for love.graphics.newImage to be more descriptive.
- Updated love.graphics color functions to automatically apply love.math.gammaToLinear to color values when gamma-correct rendering is enabled.
- Updated the "normal" CanvasFormat to internally use "srgb" rather than "rgba8" when gamma-correct rendering is enabled.
- Updated love.graphics.setColor to affect all drawn objects, including ParticleSystems, SpriteBatches, and Meshes, even when per-vertex or per-sprite colors are used.
- Updated the default fullscreen type to be "desktop" rather than "exclusive".
- Updated the minimum runtime system requirements of LOVE to require OpenGL 2.1 or OpenGL ES 2 support.
- Updated the pixel shader effect function so screen_coords.y is 0 at the top of the screen instead of the bottom.
- Updated Images to require setting the mipmaps flag to true on creation in order to use mipmaps.
- Updated Images to allow mipmaps for non-power-of-two sizes.