Alex Szpakowski
3a8390ceff
Fix a couple bugs with love.graphics.clear.
2017-12-10 14:40:08 -04:00
Alex Szpakowski
7354de2059
Add (low level) functionality to allow rendering 3D Meshes.
...
- Add love.graphics.setDepthMode(testcomparison, enablewrites).
- Add love.graphics.setMeshCullMode.
- Add love.graphics.setFrontFaceWinding.
Depth testing and depth writes require a depth buffer to work. The mesh cull mode controls whether front/back faces of a mesh are culled. The front face winding determines whether a clockwise or counterclockwise-oriented face in a mesh is considered front facing.
--HG--
branch : minor
2017-12-09 23:34:08 -04:00
Alex Szpakowski
e099e57052
Cleaned up some internal love.graphics code.
...
--HG--
branch : minor
2017-12-03 23:04:40 -04:00
Alex Szpakowski
cbcb1a8606
Allow a depth/stencil canvas to be active without a color canvas.
...
--HG--
branch : minor
2017-12-03 19:33:48 -04:00
Alex Szpakowski
b8c4b07edf
Clean up unused temporary Canvases after a few frames.
...
--HG--
branch : minor
2017-11-13 19:45:18 -04:00
Alex Szpakowski
8672ff2272
Use a more efficient method of streaming automatically batched vertices on AMD Windows and Linux systems.
...
--HG--
branch : minor
2017-11-11 20:48:02 -04:00
Alex Szpakowski
7f88037d94
Move the implementation for Graphics::flushStreamDraws out of the opengl backend
...
--HG--
branch : minor
2017-10-26 21:05:15 -03:00
Alex Szpakowski
e3fd489373
Abstracted lower level drawing code, moved all type-specific drawing code out of opengl backend, deleted obsolete files
...
--HG--
branch : minor
2017-10-26 20:58:19 -03:00
Alex Szpakowski
15cc540e4c
Make internal vertex attribute code less OpenGL-specific.
...
--HG--
branch : minor
2017-10-25 23:12:39 -03:00
Alex Szpakowski
7a2e52b12d
Cleaned up some vertex data-related code.
...
--HG--
branch : minor
2017-10-22 12:33:47 -03:00
Alex Szpakowski
90cb3870e7
Fix error output when a shader stage fails to compile.
...
--HG--
branch : minor
2017-10-21 15:18:25 -03:00
Alex Szpakowski
e5b0d96b27
Restructured some Shader code. Added runtime temporary caching and sharing of shader stages. Resolves issue #1235 .
...
--HG--
branch : minor
2017-10-21 03:08:18 -03:00
Alex Szpakowski
050be14547
Small graphics code cleanup
...
--HG--
branch : minor
2017-09-30 16:42:11 -03:00
Alex Szpakowski
8068b0f1d4
Add variant of love.graphics.captureScreenshot which takes a Channel argument.
...
--HG--
branch : minor
2017-09-30 10:25:14 -03:00
Alex Szpakowski
844900db39
Rename all cases of 'pixel density' to 'DPI scale' in love's APIs.
...
--HG--
branch : minor
2017-09-24 16:09:05 -03:00
Alex Szpakowski
5f64737956
Shader:send now optionally accepts a Data object (with optional byte offset and size parameters). Resolves issue #1343 .
...
Also changed the optional 'columnMajor' argument of the matrix variant of Shader:send and Transform:setMatrix to accept enum constants instead. Valid values are "row" and "column".
--HG--
branch : minor
2017-09-23 19:47:57 -03:00
Alex Szpakowski
b6ecdb7c78
SpriteBatches/Text objects/ParticleSystems: use glBufferData+glBufferSubData instead of glBufferData+glBufferData for orphaning streaming vertex data, on most platforms. Apparently some Android drivers have a problem with the latter.
...
--HG--
branch : minor
2017-09-03 23:41:35 -03:00
Alex Szpakowski
61a8ce6a66
Remove obsolete code and hopefully fix VS2013 build
...
--HG--
branch : minor
2017-09-03 18:46:33 -03:00
Alex Szpakowski
b4f8f08b70
Enable (when available) and improve performance of persistently mapped buffer path for the vertex/index buffers used with automatic batching.
...
--HG--
branch : minor
2017-09-03 18:23:54 -03:00
Alex Szpakowski
de28c6e6a8
Add the ability to have formally deprecated functions.
...
Functions which are deprecated will print out a message and show up in a small dialog on-screen, when they're first called. Deprecation output is disabled in fused mode by default, and can be modified with love.setDeprecationOutput(enable).
--HG--
branch : minor
2017-08-27 13:46:31 -03:00
Alex Szpakowski
b129d49a6c
Move Color.h from modules/graphics/ to common/
...
--HG--
branch : minor
2017-08-01 23:53:44 -03:00
Alex Szpakowski
68f1ab5f47
Check a couple more vendor strings to determine if an AMD driver is being used.
...
--HG--
branch : minor
2017-07-29 02:06:32 -03:00
Alex Szpakowski
d338f274ff
Update naming convention for builtin shader matrices.
...
- ClipSpaceFromLocal replaces TransformProjectionMatrix
- ViewSpaceFromLocal replaces TransformMatrix
- ClipSpaceFromView replaces ProjectionMatrix
- ViewNormalFromLocal replaces NormalMatrix
--HG--
branch : minor
2017-07-29 01:25:56 -03:00
Alex Szpakowski
b3d4443f9d
Added 'drawcallsbatched' field to the table returned by love.graphics.getStats.
...
It has the number of draw calls that were saved by auto-batching.
--HG--
branch : minor
2017-07-23 01:58:25 -03:00
Alex Szpakowski
864147c38c
love.graphics: move more platform-independent code out of the opengl backend
...
--HG--
branch : minor
2017-07-22 23:34:39 -03:00
Alex Szpakowski
34ebe18f14
Use luaL_check/optinteger instead of luaL_check/optnumber when getting integer arguments to functions. Resolves issue #1251 .
...
--HG--
branch : minor
2017-07-16 12:17:50 -03:00
Alex Szpakowski
130ee7e1d9
Consolidated Image and Canvas dimension validation code.
...
--HG--
branch : minor
2017-07-11 20:38:47 -03:00
Alex Szpakowski
025201d0c2
Hopefully work around Array Texture intel GMA driver bug on windows (resolves issue #1265 ).
...
--HG--
branch : minor
2017-07-09 17:31:07 -03:00
Alex Szpakowski
34f25bd6c8
ESSL: always enable standard derivative functionality (dFdx, dFdy, fwidth) when available. Added 'shaderderivatives' graphics feature enum.
...
--HG--
branch : minor
2017-07-09 16:55:21 -03:00
Alex Szpakowski
54a049e206
Restructured internal code for graphics capabilities. Added love.graphics.getTextureTypes which returns a table of Texture Type to boolean supported fields.
...
--HG--
branch : minor
2017-06-27 22:26:30 -03:00
Alex Szpakowski
45de7cebb6
Cleaned up some graphics code.
...
--HG--
branch : minor
2017-06-10 15:09:33 -03:00
Alex Szpakowski
9fe81ad922
Allow a temporary/internal depth buffer to be used when a Canvas is active, similar to how temporary stencil buffers are allowed.
...
Syntax is setCanvas{canvas [, depth=true, stencil=true]} or setCanvas{canvas, depthstencil=true}.
--HG--
branch : minor
2017-06-10 14:25:22 -03:00
Alex Szpakowski
30a63b6642
Fix crashes on OpenGL ES (thanks xenthral!)
...
--HG--
branch : minor
2017-06-08 21:10:17 -03:00
Alex Szpakowski
e03c763215
Fix love.graphics.drawLayer.
...
--HG--
branch : minor
2017-05-20 15:37:29 -03:00
Alex Szpakowski
7694edfd52
Auto-batched draws (except for love.graphics.print, for now) are affected by 3D transforms.
...
--HG--
branch : minor
2017-05-17 22:03:09 -03:00
Alex Szpakowski
955fb9b60c
Fixed love.graphics.draw(particlesystem, …) to actually use the transformation parameters.
...
--HG--
branch : minor
2017-05-17 18:51:42 -03:00
Alex Szpakowski
b019a4a64c
Cleaned up texture VRAM usage tracking.
...
--HG--
branch : minor
2017-05-06 23:56:10 -03:00
Alex Szpakowski
16f5557131
Move more backend-agnostic code out of the love.graphics opengl implementation files.
...
--HG--
branch : minor
2017-04-30 00:01:23 -03:00
Alex Szpakowski
621fb24ba1
Require stencil=true to be specified in setCanvas if stenciling is used while a Canvas is active and there is no custom stencil buffer.
...
--HG--
branch : minor
2017-04-29 21:29:37 -03:00
Alex Szpakowski
10d73ea1d7
Moved some backend-agnostic code out of the OpenGL backend of love.graphics.
...
--HG--
branch : minor
2017-04-29 18:38:23 -03:00
Alex Szpakowski
70b32c47ce
Error if a non-2D/affine matrix is used with auto-batched draws, since they perform CPU-side matrix transforms on 2-component vectors.
...
--HG--
branch : minor
2017-04-23 00:12:57 -03:00
Alex Szpakowski
7161d600b7
Add mipmapping support to Canvases.
...
- Added an optional mipmap index argument to the non-table variant of love.graphics.setCanvas, and an optional ‘mipmap’ field to the table variant.
- Canvas:setMipmapFilter now works.
- Added Canvas:generateMipmaps.
- Added Canvas:getMipmapMode.
- Added a new ‘mipmaps’ enum field to the table passed into love.graphics.newCanvas. Accepted values are “none” (default), “manual”, and “auto”.
If a Canvas has the manual mipmap mode, you will either need to render to a mipmap level or call Canvas:generateMipmaps. If it has the auto mode, mipmaps will be automatically generated after rendering to that Canvas. Generating mipmaps is not free.
--HG--
branch : minor
2017-04-15 01:58:03 -03:00
Alex Szpakowski
a0ef2ac28b
Add Depth compare / shadow sampler support. Officially this is only supported in glsl3 shaders.
...
- Add Texture:setDepthSampleMode(comparemode). Only works on textures with depth pixel formats. A texture with the depth sample mode set will only work with a depth sampler.
- Add DepthImage, DepthArrayImage, and DepthCubeImage sampler keywords to glsl3.
--HG--
branch : minor
2017-04-12 20:26:06 -03:00
Alex Szpakowski
0001b4695e
Add new variants of love.graphics.clear for controlling how the depth and stencil buffers are cleared.
...
- Add love.graphics.clear(r, g, b, a [, stencilvalue, depthvalue]).
- Add love.graphics.clear(color1, color2, …, [, stencilvalue, depthvalue]).
- Add love.graphics.clear(false, stencilvalue, depthvalue).
stencilvalue and depthvalue are either true, false, or a number. True is the default behaviour and clears that buffer to the default value (0 for stencil, 1 for depth), false prevents clearing.
The third variant listed above only clears the depth and/or stencil buffers and not the color buffer.
--HG--
branch : minor
2017-04-11 22:32:40 -03:00
Alex Szpakowski
72c7602650
Readable depth-stencil Canvases with MSAA are not currently supported.
...
--HG--
branch : minor
2017-04-11 20:45:12 -03:00
Alex Szpakowski
fca3d4a841
Improved the error message when a Canvas with the readable field explicitly set is not supported.
...
--HG--
branch : minor
2017-04-11 19:06:51 -03:00
Alex Szpakowski
43172bd3f6
Add optional ‘readable’ boolean field to the table passed into love.graphics.newCanvas. Added new variant of love.graphics.getCanvasFormats which takes a ‘readable’ boolean.
...
--HG--
branch : minor
2017-04-11 19:03:13 -03:00
Alex Szpakowski
c36a53fdcb
Add new non-readable Canvas formats: depth16, depth24, depth32f, depth24stencil8, and depth32fstencil8.
...
--HG--
branch : minor
2017-04-11 18:34:04 -03:00
Alex Szpakowski
018a3831cb
Add a new “stencil8” pixel format for Canvases (resolves issue #1003 ).
...
Also fixed Canvas MSAA (resolves issue #1271 ).
stencil-formatted Canvases can’t be drawn, and can only be used as the value for a new ‘depthstencil’ field to the table-argument variant of love.graphics.setCanvas.
--HG--
branch : minor
2017-04-11 00:00:22 -03:00
Alex Szpakowski
1a9262dda9
Fix compilation on iOS. Fix shader compilation on OpenGL ES. Fix (harmless) GL errors on OpenGL ES 2. Resolves issue #1266 .
...
--HG--
branch : minor
2017-03-09 20:46:26 -04:00