Commit Graph

1198 Commits

Author SHA1 Message Date
Alex Szpakowski 2c4e713114 Imported some of the dynamiccore branch from love-experiments:
- Type names for love's Lua objects are specified as an argument to luax_register_type, rather than being statically defined in an array.

- luax_register_type takes a variable number of method array arguments, for registering superclass methods without copying them into the subclass' method array.

Also removed most of the header declarations for wrapper functions.
2015-11-29 20:38:12 -04:00
Alex Szpakowski 77998c707d Added the ability to use ASTC compressed textures, when the system supports them. 2015-11-28 14:55:26 -04:00
Alex Szpakowski 890e8f1086 Simplified the code for love.graphics.arc. 2015-11-27 17:49:17 -04:00
Alex Szpakowski ebf6ca822c Added an optional 'startvertex' argument to Mesh:setVertices, which specifies a (1-based) offset within the Mesh's vertices to replace. 2015-11-26 23:04:04 -04:00
Alex Szpakowski 3c1c13793e Added SpriteBatch:attachAttribute(attributename, mesh), which lets SpriteBatches use per-vertex information from a vertex attribute in a Mesh when drawing.
Each sprite in a SpriteBatch has 4 vertices in the following order: top-left, bottom-left, top-right, bottom-right. The index returned by SpriteBatch:add (and used by SpriteBatch:set) can be multiplied by 4 to determine the first vertex in a specific sprite.
2015-11-26 21:24:29 -04:00
Alex Szpakowski ac99a47386 Moved most of the ParticleSystem code from modules/graphics/opengl/ to modules/graphics/ 2015-11-25 04:29:00 -04:00
Alex Szpakowski 7ebef76b24 Added love.window.setScreenSaverEnabled and love.window.isScreenSaverEnabled (resolves issue #1088.) 2015-11-24 22:16:40 -04:00
Alex Szpakowski ec17811aa9 The 'dimension' field is no longer needed when passing matrices-as-flat-tables to Shader:sendMatrix. 2015-11-24 15:14:57 -04:00
Alex Szpakowski 75faf77d66 Improved the performance of Shader:send when matrices are used. 2015-11-24 14:25:52 -04:00
Alex Szpakowski a81621df82 Removed the 'multicanvas' GraphicsFeature constant since it's redundant (the love.graphics.getSystemLimits().multicanvas number can be used instead.) 2015-11-14 19:33:56 -04:00
Alex Szpakowski e9c75c342e Text:add and Text:addf now return index numbers which can be used as arguments to Text:getWidth and text:getHeight to determine the (pre-transformed) width and height of specific text within the Text object. 2015-11-14 18:51:43 -04:00
Alex Szpakowski 7043b5314d Added high-dpi / retina support to the no-game screen; additional minor tweaks and cleanup. 2015-11-11 19:35:45 -04:00
Alex Szpakowski 0558fcdbd4 Added Source:getDuration (thanks Boolsheet!)
For streaming sources, the duration may not always be sample-accurate and may return -1 if it cannot be determined at all.
2015-11-07 01:49:37 -04:00
Alex Szpakowski bb24c1b7a6 Mesh:getVertexMap now returns nil rather than an empty table, if no vertex map is set (resolves issue #1096.) 2015-11-02 19:37:18 -04:00
Alex Szpakowski 46daf9dd15 Simplified some code by removing an unnecessary/useless optimization. 2015-11-02 03:28:31 -04:00
Alex Szpakowski 389b91cf6f Added per-character color support to love.graphics.print/printf and Text objects. Resolves issue #865.
The aforementioned functions now optionally accept an array instead of a plain string. The array is in the format of: {{r, g, b [, a]}, "first colored text, ", {r, g, b [, a]}, "second colored text", ...}, where the color values specify the color to use in the next section of the text.
2015-11-01 23:17:46 -04:00
Alex Szpakowski 799e303673 More fixes for love.graphics.printf's text positioning. 2015-10-29 03:57:29 -03:00
Alex Szpakowski 396b0f0956 Mostly fixed the center and right wrap alignments for love.graphics.printf. 2015-10-29 00:44:00 -03:00
Alex Szpakowski 34b8e47831 Removed the internal rounding applied to the x and y parameters of love.graphics.print/printf. Resolves issue #1062. 2015-10-28 01:59:53 -03:00
Alex Szpakowski c03ce3a9ab love.math.random now uses a slight variant of Xorshift (Xorshift*). 2015-10-26 20:47:56 -03:00
Alex Szpakowski f92e6552d4 Rewrote Font:getWrap (and thus love.graphics.printf's logic) to behave better. Resolves issue #799.
It now wraps text at the specified wrap limit even when there are no spaces in a line, and has improved performance.
2015-10-24 02:28:22 -03:00
Alex Szpakowski 890802c0a3 Use a more descriptive error message if love.graphics.newImage fails because the OpenGL texture can't be created. 2015-10-15 14:42:57 -03:00
Alex Szpakowski 0bf80bb9fc Fixed a minor memory leak in love.graphics.setMode. 2015-09-16 22:28:22 -03:00
Alex Szpakowski 00845c0ad0 Added love.graphics.intersectScissor(x, y, w, h). Resolves issue #1071.
It sets the active scissor rectangle to the intersection of the existing scissor (if any) and the specified rectangle.
2015-09-16 19:04:57 -03:00
Alex Szpakowski 05ed70ed18 Updated stb_image to 2.07. 2015-09-13 11:26:11 -03:00
Alex Szpakowski 369dedaf38 Fixed SpriteBatch:set and Mesh:setVertex preventing some vertex data from being sent to the GPU. 2015-09-09 20:47:03 -03:00
Alex Szpakowski dc7cffe111 Fixed the color set by love.graphics.setColor not being restored properly when love.graphics.pop is called after love.graphics.push("all"). 2015-09-05 11:20:47 -03:00
Alex Szpakowski e979455772 love.event.quit now accepts a single (optional) argument, which is used as the program's exit status number. Resolves issue #1070. 2015-08-25 17:12:59 -03:00
Alex Szpakowski 1261427304 Replaced love.graphics.point with love.graphics.points, which draws a number of points at a time.
It currently has 3 variants, with the last one using optional per-point colors:

- love.graphics.points(x1, y1, x2, y2, ...)

- love.graphics.points({x1, y1, x2, y2, ...})

- love.graphics.points({{x1, y1 [, r, g, b, a]}, {x2, y2 [, r, g, b, a]}, ...}).
2015-08-19 17:48:27 -03:00
Alex Szpakowski 780c970b99 Removed an unnecessary error message in love.graphics.newMesh. 2015-08-18 22:32:27 -03:00
Alex Szpakowski 71116807e3 Fixed the default error handler to disable relative mouse mode. 2015-08-18 22:13:06 -03:00
Alex Szpakowski 153bd6f4cb Cleaned up the Font:getWrap code a bit. 2015-08-16 01:04:51 -03:00
Alex Szpakowski e44f20fdc6 Renamed OSX.mm/OSX.h to macosx.mm/macosx.h to match love's file naming conventions. 2015-08-15 00:41:45 -03:00
Alex Szpakowski db91a73d57 Trigger a Lua error if love.graphics.draw(canvas) is called while that canvas is the active one.
This only catches a subset of the possible accidental read-while-writing situations that can happen when using Canvases, unfortunately.
2015-08-14 22:46:29 -03:00
Martin Felis f6448116cc Fixed OpenGL ES function loading on some Android devices. 2015-08-13 19:44:52 -03:00
Martin Felis 1ea54042e3 Fixed compilation when building for Android. 2015-08-13 19:39:56 -03:00
Alex Szpakowski 5bdea01559 Fixed Canvas:renderTo to restore the previous canvases if an error occurs in the passed function. 2015-08-12 23:45:44 -03:00
Alex Szpakowski 12450c9657 Don't error if a compressed texture with no mipmap information is passed into love.graphics.newImage and the mipmaps flag is true. 2015-08-12 19:33:56 -03:00
Alex Szpakowski a45c1332a7 Cleaned up some Mesh and SpriteBatch code. 2015-08-11 23:07:33 -03:00
Alex Szpakowski bfef97c48a Slightly reduced the CPU usage of SpriteBatch:add, Text:add, and love.graphics.draw(ParticleSystem). 2015-08-11 18:01:24 -03:00
Alex Szpakowski 6d9409a337 Probably fixed compilation with GCC 4.8. 2015-08-10 14:39:58 -03:00
Alex Szpakowski 0b566f3c94 Updated the changelog. 2015-08-10 09:47:40 -03:00
Alex Szpakowski d215d8a91e Reworked sRGB / gamma-correct APIs:
Gamma-correct blending and shader math can be enabled globally via the new 't.gammacorrect' boolean flag in love.conf.
The new function love.graphics.isGammaCorrect will return true if it was requested in love.conf and is supported on the system.

When gamma correct rendering is enabled, colors (including the colors of pixels from images) are automatically converted from sRGB to linear RGB before use. When drawing to the main screen or to a canvas with the 'normal' or 'srgb' format, the final output colors of pixel shaders are automatically converted from linear RGB to sRGB after blending and before the color is stored in the pixel.

This lets the rendering pipeline do math using linear RGB values for colors rather than sRGB values, so the math is correct, without making users of the APIs manually linearize their colors with the love.math.gammaToLinear function (which still exists). The final output of the screen is encoded as sRGB, which is what systems expect. Canvases (except when otherwise requested) store their contents with sRGB encoding for increased precision with darker colors.

the 'srgb' window setting flag has been removed, as well as the 'srgb' image flag. A new image flag 'linear' has been added, which when set to true will cause the colors of the image to always be treated as linear RGB rather than sRGB, when gamma-correct rendering is enabled.

A new function 'Shader:sendColor' has been added, which has the same argument structure as 'Shader:send' but expects colors in the range of [0, 255]. When gamma-correct rendering is enabled it automatically gamma-corrects the given colors (by applying gammaToLinear to them.)

New shader code functions have been added: gammaToLinear, linearToGamma, gammaCorrectColor, and unGammaCorrectColor. When gamma-correct rendering is enabled, the LOVE_GAMMA_CORRECT #define is set and gammaCorrectColor and unGammaCorrectColor are aliases for gammaToLinear and linearToGamma respectively, otherwise the functions do nothing.

The new shader functions have 'precise' and 'fast' variants. If the LOVE_PRECISE_GAMMA define is set, then the normal functions default to the precise variants, otherwise they default to the fast variants. Currently the define is set in vertex shaders and not set in pixel shaders.

The default per-vertex color is automatically gamma-corrected by LÖVE when gamma correct rendering is enabled, but any custom named per-vertex attribute specified with the new custom attribute Mesh functionality won't be, unless 'gammaCorrectColor' or similar functions are explicitly used (preferably inside the vertex shader code that has the custom attribute.)
2015-08-09 21:46:21 -03:00
Alex Szpakowski 68bb0c97bc Hopefully fixed compilation when VS2013 is used... 2015-08-05 01:51:08 -03:00
Alex Szpakowski 54f2617849 Removed some redundant internal code. 2015-08-05 01:43:34 -03:00
Alex Szpakowski 2392174eb2 Rounded rectangles with radius values >= the rectangle's width and height are now clamped rather than causing an error. 2015-08-01 13:31:08 -03:00
Bart van Strien c02ba91ef4 Fix segfault loading images from compressed data without an explicit sRGB flag 2015-08-01 14:22:36 +02:00
Alex Szpakowski 66942d5f31 Added the ability to use custom mipmaps in Images, via love.graphics.newImage(filename, {mipmap1, mipmap2, ...}). Resolves issue #1064.
All mipmap levels must be present if custom mipmaps are used (and their sizes must be half the size of the previous mipmap level, rounded down.)

Image:getData now returns all custom mipmaps in an Image.
2015-07-30 20:48:36 -03:00
Alex Szpakowski f5abedaeeb Cleaned up the love.graphics code that deals with love.window to be more consistent with the rest of the codebase. 2015-07-24 21:40:55 -03:00
Alex Szpakowski 354f83c1cb Added support for MSAA on the window on iOS.
Requires updated dependencies to compile on iOS, which can be downloaded at https://dl.dropboxusercontent.com/u/4214717/love-ios-libraries-0.10.zip
2015-07-19 22:39:02 -03:00