Commit Graph

520 Commits

Author SHA1 Message Date
Alex Szpakowski 52101b2563 Add love.graphics.copyTextureToBuffer and copyBufferToTexture. 2021-12-28 12:46:56 -04:00
Alex Szpakowski d7bfc2ebcb Fix compile error 2021-12-27 21:31:04 -04:00
Alex Szpakowski 5b3a5e7721 Remove the need for copysource and copydest buffer usage flags. 2021-12-27 21:17:04 -04:00
Alex Szpakowski 75b2ddc3c9 Fix love.graphics.clear's alpha component. 2021-12-24 16:14:06 -04:00
Alex Szpakowski 601d4e120d don't need memory barriers for readonly storage textures. 2021-08-13 18:13:45 -03:00
Alex Szpakowski a551fcd492 Initial support for writing to textures in compute shaders. 2021-08-13 14:43:03 -03:00
Alex Szpakowski cffd485976 Allow rendering to integer textures. 2021-08-12 17:43:33 -03:00
Alex Szpakowski 48b3a4e860 Initial support for integer format textures.
They can't be rendered to and ImageData can't use the formats, for now.
2021-08-12 16:38:54 -03:00
Alex Szpakowski 4caeb27047 Slightly less heavy-handed compute memory barrier implementation.
Also validate whether there are any unbound writable resources when dispatching compute shader work.
2021-08-11 18:41:38 -03:00
Alex Szpakowski 80f051b97d Merge pull request #1715 from bjornbytes/compute-shaders
Compute Shaders
2021-07-18 13:09:48 -03:00
bjorn dc5f68e709 World's worst sync; 2021-07-17 20:02:04 -07:00
bjorn 25fbf1d8ce love.graphics.dispatchThreadgroups; 2021-07-17 19:49:53 -07:00
bjorn 085ba2cb6e Add compute ShaderStage; 2021-07-17 19:46:05 -07:00
bjorn f6559ce49e Add threadgroups{x,y,z} SystemLimits; 2021-07-17 19:38:45 -07:00
bjorn bbb4cd66be Fix default shader storage buffer initialization; 2021-07-01 17:22:03 -07:00
Alex Szpakowski 14cda7818f Rename internal enum 2021-04-07 20:43:22 -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 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 95ab4054ff Fix a freeze on Intel drivers when using mipmapped Canvases
Fixes #1585

Also disallow generateMipmaps on depth/stencil canvases because it's not really supported.
2020-12-26 16:37:37 -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 1f9d98263d Refactor Buffer internals.
Allows buffers created with love.graphics.newBuffer to only allocate VRAM data. Previously they had a copy of their contents in RAM.
Also makes it easier to implement Buffers in other graphics APIs and to implement more types of Buffers in the future.
2020-12-22 19:23:02 -04:00
Alex Szpakowski a1861a8ff4 Don't allow calling Texture:generateMipmaps on depth/stencil textures 2020-12-21 13:36:29 -04:00
Alex Szpakowski 442f37e0a1 Fix a potential bug in captureScreenshot on some older systems 2020-10-25 23:00:12 -03:00
Alex Szpakowski 7934ce0a66 Handle backbuffer MSAA manually in love.graphics code
Previously love would use SDL APIs to make the system (WGL etc) handle it, which meant the OpenGL context had to be recreated whenever MSAA changed.
2020-10-25 22:24:07 -03: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 2c4bfab1de Merge branch '12.0-development' into GraphicsBuffer 2020-05-23 20:29:38 -03:00
Alex Szpakowski 2cff535eb1 Move shader parsing code from Lua to C++. 2020-03-03 19:30:22 -04:00
Alex Szpakowski 7fbb68e90e Merge branch '12.0-development' into GraphicsBuffer 2020-02-28 23:10:21 -04:00
Alex Szpakowski 9425c9224b Rename internal batched draw code to be more clear 2020-02-27 20:08:50 -04:00
Alex Szpakowski 1ddfcd4cc8 Always use explicitly typed buffers, even in internal code 2020-02-23 16:30:55 -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 17f77407bb Replace internal C++ newImage and newCanvas methods with newTexture 2020-02-05 20:39:55 -04:00
Alex Szpakowski 258129738f Remove graphics::Canvas and graphics::Image 2020-02-04 22:06:55 -04:00
Alex Szpakowski b71eaf73cc Replaced some references to Image and Canvas with Texture. 2020-02-04 20:52:57 -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 f24b1aa377 Move internal Slices class from Image to Texture 2020-02-02 13:50:37 -04:00
Alex Szpakowski 6c447ab4f6 Clean up some common Image and Canvas code. 2020-02-01 23:54:51 -04:00
Alex Szpakowski 2572f0c7a1 Meshes expose GraphicsBuffers, part 2 2020-02-01 15:39:59 -04:00