Commit Graph

364 Commits

Author SHA1 Message Date
Alexander Szpakowski fda16e27cd Changed image mipmap api: Image:setFilter now takes an optional third argument (mipmap filter mode), Image:get/setMipmapFilter is removed. 2013-01-02 04:21:22 -04:00
Alexander Szpakowski 2739ea561a Initial image mipmapping implementation. Includes Image:set/getMipmapFilter and Image:set/getMipmapSharpness. setMipMapFilter requires a filter mode, or nil to disable mipmapping.
Enabling mipmapping on an image that does not have power-of-two dimensions will raise an error, due to inconsistent support in older graphics chipsets
2013-01-02 02:50:13 -04:00
Alexander Szpakowski ab98b0de45 Added mipmap support to Image filter struct and OpenGL texture filter helper functions 2013-01-01 21:44:27 -04:00
Alexander Szpakowski 1678252b7a Applied patch from issue #542 (texture filtering inconsistencies) in main LÖVE repository 2013-01-01 21:29:38 -04:00
Alexander Szpakowski a8dc813258 Text drawing performance improvements (issue #532) 2012-12-15 22:18:40 +01:00
Bart van Strien 68a895e7c6 Catch errors in love.font.newRasterizer, add luax_pconvobj which pcalls, allowing love.graphics.newFont to clean up before re-erroring 2012-12-15 14:26:46 +01:00
vrld 62e2c752e5 More verbose VertexIndex::getType() (using numeric_limits) 2012-12-01 14:00:05 +01:00
vrld b0abcbda71 Fix: Returning wrong type in VertexIndex::getType() 2012-11-28 16:14:10 +01:00
vrld 8bbf68c69c Match types in VertexIndex::getType() 2012-11-28 16:01:04 +01:00
vrld b2f1408b12 Fix issue #495: Large spritebatches doesn't render properly 2012-11-23 10:23:44 +01:00
vrld 6882c2c32c Close issue #519: Maximum stack depth reached error message. 2012-11-23 09:08:36 +01:00
vrld c782093374 Intel gets their way 2012-11-22 21:24:43 +01:00
vrld a35b4232e1 Use opengl buffer ARB constistently in VertexBuffer. 2012-11-22 21:07:35 +01:00
vrld 6ffb9d28f0 VertexBuffer/SpriteBatch speed tweaks.
- VertexBuffer holds permanent copy of the vertex data and is only read from
  GPU memory was written outside a sb:bind()/sb:unbind() pair.

- "Orphan" the current GPU buffer on unmap() before uploading the changed data
  to the GPU to avoid implicit synchronisation lags.
2012-11-22 20:59:47 +01:00
Bart van Strien d24c0344c8 Make second argument to setDefaultImageFilter Image:setFilter and Image:setWrap optional, and default to the first 2012-11-18 19:18:37 +01:00
Bart van Strien 94516e2290 Catch possible exceptions thrown when locking a SpriteBatch twice 2012-11-18 18:48:37 +01:00
rude 54498ce378 Apply slime73's ParticleSystem patch. 2012-11-18 11:02:30 +01:00
vrld 31f98ebf52 Fix #234 again. Of course this means the texture coordinates are flipped
again...
2012-10-18 13:29:13 +02:00
vrld 6c850fdc98 Possibly (code in issue does not fail on my machine) fix #486. Please test. 2012-10-15 17:13:08 +02:00
vrld e6711b2837 Fix multiplicative blend mode. 2012-10-12 13:52:16 +02:00
vrld 48f5afcc0e Throw error if invalid canvas type was supplied in l.g.newCanvas() 2012-10-12 13:14:40 +02:00
vrld ccdf6e1c00 Fix Issue #476: Add HDR Canvas (thanks, Alexander Szpakowski!).
* Add `love.graphics.isSupported("hdrcanvas")' to query whether the hardware
  actually supports HDR canvases.

* Add optional third argument to `love.graphics.newCanvas(w,h, type)', where
  `type' is one of "normal" or "hdr" and defaults to "normal". HDR canvases
  use floating point that can have values > 1 to store pixels, allowing for
  HDR rendering and other higher level lighting techniques when combined with
  pixel effects.

* Add `canvas:getType()'.
2012-10-11 22:22:10 +02:00
vrld c75bc199ae Remove ARB checks in PixelEffect::isSupported().
ARB fragment shaders shouldn't support GLSL 1.2 anyway.
2012-10-04 17:27:31 +02:00
vrld a39ddc9f1a Close issue #480: Extending Canvas support to cards without packed depth stencil. 2012-10-01 22:06:56 +02:00
vrld e35854acdc Remove love_ScreenSize from shaders.
PixelEffects would fail to load when screen_coords were unused.

Reopens issue #435: "PixelEffects have flipped screen_coords.y".
2012-10-01 21:39:52 +02:00
vrld e575c86246 Severe case of premature commit-ion. 2012-09-11 16:11:26 +02:00
vrld fdf175d7d0 Partly fix issue #468: Incorrect(?) detection of shader support.
Still need to figure out if we can use the ARB versions.
2012-09-11 15:21:39 +02:00
vrld 4ec7609d37 Fix issue #437: Area-based particle spawn.
New particles are spawned around the particle emitter position according to a
configurabe distribution.

New functionality:

particlesystem:setAreaSpread(distributon, x, y)
distribution, x, y = particlesystem:getAreaSpread()

Where `distribution' is one of "none", "uniform", "normal".
`x' and `y' take different meaning based on the distribution:

  * none:    no area spread - particles spawned at emitter position.
  * uniform: particle spawned at px,py in the rectangle around emitter
             position ex,ey, i.e.:
             ex - x < px < ex + x, ey - y < py < ey + y,
  * normal:  particle position drawn from a normal/gaussian distribution
             with mean ex,ey and standard deviation x,y, i.e.:
             px \in N(ex, x²), py \in N(ey, y²).
2012-09-10 19:58:44 +02:00
vrld 87c6646705 Fix #435 (for real this time). Unfixes #324.
Add a extern vec2 love_ScreenSize to the pixel effects that will
be (re)set upon PixelEffect::loadVolatile() and is used to flip
the fragment coordinate.

Unfixes #324 because canvases can have different dimensions than
the screen.
2012-08-05 16:08:22 +02:00
Bart van Strien 148b0c2f6d Correctly read filter modes in newImageFont when the implicit newRasterizer is used (issue #437) 2012-08-03 16:01:33 +02:00
Bart van Strien 85a1787ad8 Make SpriteBatch:setColor accept a table as well (issue #459) 2012-08-03 15:27:59 +02:00
Bart van Strien b10bc87b9a Make love.graphics.setCanvas(nil) error
This helps detect typoes, setCanvas() still works as before
2012-07-21 17:51:54 +02:00
Marc Lepage e5c4f7f43c Remove call to glAlphaFunc as alpha testing is never enabled. 2012-07-17 21:33:16 -04:00
Marc Lepage 4cc0056a21 Fix some typos in comments. 2012-07-12 00:21:25 -04:00
vrld 6d02057864 Close issue #408: printf-justify alignment.
Add letter_spacing argument to Font::print(). Might be worth to expose to Lua
at some point. Justify alignment may result in mushy/blurred glyphs.
2012-07-08 13:37:09 +02:00
vrld 12f714bf74 Issue #419: Make font:getWidth(str) account for newlines. 2012-07-05 16:15:38 +02:00
vrld 85fa71c519 Make love.graphics.getFont() return (and set) default font when no font set.
Use closures instead of love.graphics.print(f)1() and love.graphics.newFont1.
2012-07-05 16:14:44 +02:00
Bart van Strien 7793e7f02f CRLF to LF 2012-07-04 14:40:24 +02:00
rude 81c38e22d0 Applied the new style guidelines.
Well, sort of. Lot's more to be done, but this is a start.
2012-06-28 23:52:33 +02:00
Bart van Strien bc4e59ba24 Apply the line width patch 2012-06-11 17:06:57 +02:00
Bart van Strien 1b568fdf39 Make setMode get the actual width and height after setting, fixes bug with width and height 0 (aka desktop resolution) 2012-05-18 17:46:00 +02:00
Bart van Strien 1e00f0f981 Move the default image filter to the Image class, instead of Graphics applying it on newImage 2012-05-18 17:35:51 +02:00
Bart van Strien 1a89622262 Fonts and ImageFonts now use the default image filter, newImageFont gets a second and third argument, to optionally specify the filters 2012-05-18 17:23:50 +02:00
vrld 26780681ea Remove artifacts at line endings (see 4f9c5db78143). 2012-05-09 17:45:50 +02:00
vrld b5f3addd35 Remove antialiasing artifacts when drawing lines at a very big scale.
When drawing lines at scales>1 the inner workings (gradients) of the
antialiasing too were upscaled and became visible. When the scale was very
large this produced interesing yet unexpected visuals.
2012-05-09 17:17:16 +02:00
vrld d4c59d3508 Fix issue #406: Empty glyphs cause some ATI cards to crash in Font::addGlyph(). 2012-04-03 13:55:12 +02:00
vrld 340ee8442d Fix issue #397: printf does not center string correctly. 2012-03-22 13:11:35 +01:00
vrld 39e1c59989 Actually copy existing buffer data to temporary memory region in VBO::map(). 2012-03-07 23:33:27 +01:00
vrld 6dee041a9d Throw exception when VBO cannot allocate enough memory in VBO::map(). 2012-03-07 23:26:03 +01:00
vrld 3f365857ee Replace glMapBufferARB() with temp memory + glBufferSubDataARB().
Instead of letting OpenGL manage the memory mapping, allocate a temporary
block of memory upon VBO:map(). Upon VBO::unmap() the block is copied to
graphics memory using glBufferSubDataARB() and then released.

Hopefully this will fix some weird error with Windows XP + old drivers, where
VBOs can be created, but the mapped memory cannot be allocated resulting in
the sprite batch drawing nothing at all.

According to the interwebs this could actually faster than using OpenGL mapped
memory, because there is no unnecessary syncing involved.
2012-03-07 23:24:29 +01:00