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
2015-08-09 21:46:21 -03:00
2015-07-05 17:32:45 +02:00
2015-06-21 12:20:08 -03:00
2015-02-20 00:21:21 -04:00

LÖVE is an awesome framework you can use to make 2D games in Lua. It's free, open-source, and works on Windows, Mac OS X and Linux.

Documentation

We use our wiki for documentation. If you need further help, feel free to ask on our forums, and last but not least there's the irc channel #love on OFTC.

Compilation

###Windows Follow the instructions at the megasource repository page.

###*nix Run platform/unix/automagic from the repository root, then run ./configure and make.

$ platform/unix/automagic
$ ./configure
$ make

###Mac OS X Download the required frameworks from here and place them in /Library/Frameworks/.

Then use the Xcode project found at platform/xcode/love.xcodeproj to build the love-macosx target.

###iOS Download the required libraries from here and place the include and libraries folders into the platform/xcode/ios folder.

Then use the Xcode project found at platform/xcode/love.xcodeproj to build the love-ios target. Note that you must be registered in the iOS Developer Program in order to build for physical iOS devices.

Repository information

We use the 'default' branch for development, and therefore it should not be considered stable. Also used is the 'minor' branch, which is used for features in the next minor version and it is not our development target (which would be the next revision - version numbers are formatted major.minor.revision.)

We tag all our releases (since we started using mercurial), and have binary downloads available for them.

Experimental changes are developed in the separate love-experiments repository.

Contributing

The best places to contribute are through the Bitbucket issue tracker and the official IRC channel. For code contributions, pull requests and patches are welcome. Be sure to read the source code style guide.

Builds

Releases are found in the 'downloads' section on bitbucket, are linked on the site, and there's a ppa for ubuntu, ppa:bartbes/love-stable.

There are also unstable/nightly builds:

Dependencies

  • SDL2
  • OpenGL 2.1+ / OpenGL ES 2+
  • OpenAL
  • Lua / LuaJIT / LLVM-lua
  • FreeType
  • PhysicsFS
  • ModPlug
  • mpg123
  • Vorbisfile
S
Description
No description provided
Readme 100 MiB
Languages
C++ 83.6%
C 13.4%
Lua 2%
Objective-C++ 0.5%
CMake 0.2%
Other 0.1%