Commit Graph

205 Commits

Author SHA1 Message Date
Alex Szpakowski 433190d1df Merge branch 'master' into 12.0-development 2021-06-06 11:43:54 -03:00
Alex Szpakowski e9c58c8192 Work around certain buggy Vivante GPU drivers on Android
love2d/love-android#204
2021-04-17 15:09:21 -03:00
Alex Szpakowski 21f5ba86d3 Merge branch 'master' into 12.0-development 2021-04-07 20:33:44 -03:00
Alex Szpakowski f89aabb0bb Update copyright year for 2021 2021-04-04 16:14:45 -03:00
Alex Szpakowski 694d448e83 Vertex shaders can write to gl_PointSize (fixes #1603).
If a shader uses gl_PointSize then it can only be used when drawing points. If a shader doesn't use gl_PointSize then it can't be used when drawing points.

Added 'ConstantPointSize' and 'CurrentDPIScale' built-in shader uniforms.

ConstantPointSize is in DPI-scaled points, whereas gl_PointSize is in pixels, so to get the correct default behaviour a shader needs to do gl_PointSize = ConstantPointSize * CurrentDPIScale
2021-01-23 13:47:12 -04:00
Alex Szpakowski deff795908 Rename some internal buffer enums to better match what they do 2021-01-17 20:59:16 -04:00
Alex Szpakowski 4244e01a35 More texture format support cleanup 2021-01-17 14:48:35 -04:00
Alex Szpakowski e2838131f2 Add love.graphics.copyBuffer. 2021-01-17 14:02:00 -04:00
Alex Szpakowski 5e77944dc0 refactor texture format support internals 2021-01-16 13:09:01 -04:00
Alex Szpakowski 50ff86bd92 Graphics Buffers can be used as Shader Storage Buffers. 2021-01-10 17:53:12 -04:00
Alex Szpakowski 65bfeedd4e Merge branch 'master' into 12.0-development 2020-12-26 22:48:08 -04:00
Alex Szpakowski fe23c16198 Disable gamma correction on Windows + Intel HD 2/3000 / Intel HD Graphics
It's completely broken there. Closes #1592
2020-12-24 20:31:33 -04:00
Alex Szpakowski d357ceb191 Merge pull request #1648 from xordspar0/tegra-3-bug
Work around Ouya driver bug related to texture array support
2020-12-23 20:13:41 -04:00
Jordan Christiansen 0fd53e2e3d Disable GL_EXT_texture_array on OpenGL ES 2.0
The Nvidia Tegra 3 driver for Android (used by Ouya) erroneously claims
to support the desktop-oriented GL_EXT_texture_array extension. On
desktop GPUs using (non ES) OpenGL, the glTexImage3D and similar
functions are always present, and the GL_EXT_texture_array extension
simply adds support for texture arrays to those functions. On OpenGL ES
2.0, those functions do not exist, and GL_OES_texture_3D is required to
define them.

Calling glTexImage3D on the Tegra 3 causes a segfault. This change works
around the issue by manually setting GLAD_EXT_texture_array to 0 on
OpenGL ES 2.0 systems, which causes LÖVE to avoid codepaths that assume
that the 3D texture functions are available. It doesn't make sense for
any OpenGL ES 2.0 GPU to claim support for GL_EXT_texture_array.

Fixes #1647
2020-12-09 19:54:36 -06:00
Alex Szpakowski b011487a3e Add new texel buffer type.
GLSL 3+ shaders can read from texel buffers by declaring a uniform samplerBuffer variable and calling texelFetch with a 0-based index, in the shader code. All attributes in a texel buffer's format array must have the same data format (e.g. all 'floatvec4' formats).

Shader:send accepts a texel Buffer for samplerBuffer uniforms.

Added 'texelbuffer' to love.graphics.getSupported (requires GLSL 3+ and desktop OpenGL).
Added 'texelbuffersize' to love.graphics.getSystemLimits. Returns the max number of values in a texel buffer (array length multiplied by the number of attributes declared in the buffer's format array).
2020-07-28 20:44:36 -03:00
Alex Szpakowski 3f4161dd5d Merge branch '12.0-development' into GraphicsBuffer 2020-07-20 18:13:27 -03:00
Alex Szpakowski f848b201ae Merge branch 'master' into 12.0-development 2020-07-18 21:29:36 -03:00
Alex Szpakowski dde3db3006 Apply Image:replacePixels/missing text workaround to more ATI drivers
issue #1563
2020-07-12 18:25:55 -03:00
Alex Szpakowski 2c4bfab1de Merge branch '12.0-development' into GraphicsBuffer 2020-05-23 20:29:38 -03:00
Alex Szpakowski d13e97fd83 Merge branch 'master' into 12.0-development 2020-03-15 19:25:48 -03:00
Alex Szpakowski 8fac08809a Eliminate redundant glActiveTexture calls when shaders are used.
The redundant calls were introduced with the previous commit.
2020-03-15 19:24:49 -03:00
Alex Szpakowski c5b6cc3228 Merge branch 'master' into 12.0-development 2020-03-15 19:17:04 -03:00
Alex Szpakowski 9c2454816f Fix the active GL texture unit not always being set properly.
Fixes issues where texture methods wouldn't have any effect, depending on the current internal opengl state.
2020-03-15 01:29:33 -03:00
Alex Szpakowski 2828761060 Move some code from Mesh wrapper to Buffer wrapper 2020-02-22 18:58:41 -04:00
Alex Szpakowski b1c028a4d3 Merge branch '12.0' into GraphicsBuffer 2020-02-17 16:31:02 -04:00
Alex Szpakowski aa636381d0 Fix MSAA texture creation logic 2020-02-09 12:46:52 -04:00
Alex Szpakowski 694bc9c5b7 rename love_Canvases to love_RenderTargets in shaders.
More misc. renaming
2020-02-09 12:11:19 -04:00
Alex Szpakowski 453322678c Rename internal uses of canvas to texture/render target 2020-02-08 20:40:10 -04:00
Alex Szpakowski 12c90b3dca Merge Image and Canvas GL backend classes into new common Texture class. 2020-02-07 20:29:21 -04:00
Alex Szpakowski 63c5df6aa7 Begin unification of Canvases and Images. 2020-02-03 23:05:46 -04:00
Alex Szpakowski b46b3ed552 Move some Canvas code to Texture, devirtualize Texture::draw. 2020-02-03 19:02:58 -04:00
Alex Szpakowski f9248d478c Refactor sampler state parameters for textures. 2020-02-02 22:26:28 -04:00
Alex Szpakowski 2572f0c7a1 Meshes expose GraphicsBuffers, part 2 2020-02-01 15:39:59 -04:00
Alex Szpakowski 25d9ae2ba0 Meshes expose vertex buffers, part 1
(compiles, but is currently half-implemented and broken)
2020-01-19 15:03:19 -04:00
Alex Szpakowski 1bc2b947fc Rename Attributes struct to VertexAttributes 2020-01-13 20:44:39 -04:00
Alex Szpakowski ee5304ba53 Remove vertex namespace 2020-01-13 20:41:05 -04:00
Alex Szpakowski b0232a4a6b Initial work on unified graphics buffers representing different types of data. 2020-01-12 16:41:23 -04:00
Alex Szpakowski 23bc1a7aae Add new mesh data formats: int32, uint32, [u]int8, [u]int16, snorm8, and snorm16.
Integer formats for vertex attributes are only supported in glsl3 shaders. They use ivec/uvec types in glsl.

--HG--
branch : minor
2020-01-11 22:24:38 -04:00
Alex Szpakowski 5f9b5a21d0 Merge default into minor
--HG--
branch : minor
2020-01-03 22:45:36 -04:00
Alex Szpakowski fc4847c69d Update copyright for the new year 2020-01-03 22:40:36 -04:00
Alex Szpakowski 361cefbb05 Add new wrap mode "clampone". Pixels sampled outside of [0, 1] are white (1, 1, 1, 1).
--HG--
branch : minor
2019-12-27 13:57:20 -05:00
Alex Szpakowski 6c662ade41 Fix disabling blending,
--HG--
branch : minor
2019-12-27 13:28:15 -05:00
Alex Szpakowski f3b52f66fe Update the internal naming convention for pixel formats.
--HG--
branch : minor
2019-12-23 23:38:04 -04:00
Alex Szpakowski 3a227cea37 Merge default into minor
--HG--
branch : minor
2019-11-19 21:47:48 -04:00
Alex Szpakowski 6a552d5a6f Allow Canvases to use the r16, rg16, and rgba16 pixel formats. 2019-11-18 22:45:54 -04:00
Alex Szpakowski 3435a6bcbf Change the internal constant color from a (per-draw) vertex attribute to a uniform. Pack most built-in uniforms into a single vec4 array and update them all with a single glUniform call.
--HG--
branch : minor
2019-11-18 21:13:54 -04:00
Alex Szpakowski 1e0a7cad67 Fix instanced vertex attributes. 2019-10-04 19:28:55 -03:00
Alex Szpakowski 157282ec7e Fix a typo causing mesh attribute instancing to behave weirdly. 2019-09-28 00:31:44 -03:00
Alex Szpakowski 58e26280c2 Fix detection for support of r16 and rg16 image formats on desktops. 2019-09-18 19:36:08 -03:00
Alex Szpakowski 55d4dc0f9e Restructure some internal vertex buffer binding code to be closer to how graphics APIs actually behave. 2019-08-25 16:50:15 -03:00