Sasha Szpakowski
42812ad521
Add texture views. Fixes #2022 .
...
Add love.graphics.newTextureView(basetexture, viewsettings). Requires GLSL4 support.
Add 'viewformats' boolean setting to texture setting tables.
Add Texture:hasViewFormats.
The viewsettings table has the following fields:
format = nil, -- set this to a pixel format to override the base format. It must have the same number of bytes per pixel as the original, and the 'viewformats' setting on the original texture must be true for this to work. Cannot be used for compressed or depth/stencil textures.
type = nil, -- set this to a texture type to override the base texture type. 2d base textures can make [2d, array] views. [array, cube] base textures can make [2d, array, cube] views.
mipmapstart = nil, -- set to a number to use a less detailed mipmap level as a base.
mipmapcount = nil, -- set to a number to override the number of mipmaps in the texture view.
layerstart = nil, -- set to a number to use a specific layer or cube face as a base.
layers = nil, -- set to a number to override the number of layers in an array texture view.
2024-02-24 15:45:43 -04:00
Sasha Szpakowski
d880c48502
Clean up some internal texture data upload parameters.
2024-02-17 14:10:38 -04:00
Sasha Szpakowski
64a30f177f
Merge branch 'main' into 12.0-development
2024-02-10 12:24:48 -04:00
Sasha Szpakowski
94d5864144
update year for copyright notice
2024-02-10 12:13:22 -04:00
niki
c8da517759
don't use optional for debugName
2023-12-14 00:42:19 +01:00
niki
364b5c3b7b
adjust code styling
2023-12-14 00:16:38 +01:00
niki
7a25dfa7fc
add texture:getDebugName and buffer:getDebugName
2023-12-14 00:09:08 +01:00
niki
a5d7ba1589
implement #1992
...
add debugname to settings table for texture and buffer,
which can be used for debugging in e.g. RenderDoc.
2023-12-13 14:28:34 +01:00
Sasha Szpakowski
343d192f10
Compressed texture formats have explicit sRGB variants
2023-10-14 15:01:01 -03:00
Sasha Szpakowski
defe811f62
Allow creating a mipmapped texture with less than the full mip range.
...
When creating a texture with user-specified mipmaps, it no longer errors if all mipmaps down to 1x1 aren't present.
Added a 'mipmapcount' field to the settings table in newImage and friends (only used when mipmaps are enabled for the texture.) If it's set, only mipmap levels up to the specified count will be created instead of always creating the full range.
Old OpenGL ES 2 devices don't support loading a mipmapped texture without the full mipmap range, so there's a new 'mipmaprange' boolean field in the table returned by love.graphics.getSupported.
2023-01-29 16:02:39 -04:00
Sasha Szpakowski
f6cdbdc868
Merge branch 'main' into 12.0-development
2022-12-31 22:46:34 -04:00
Sasha Szpakowski
c823dbca96
Update copyright year for 2023
2022-12-31 22:25:49 -04:00
slime
919ffc08f0
remove some dead code
2022-10-10 14:35:12 -03:00
slime
b9da6d6ddc
vulkan: always use optimal image tiling.
...
Linear is useful for intermediate texture copy steps between the CPU and GPU, but we use buffers instead of textures for that.
2022-09-25 22:05:18 -03:00
Alex Szpakowski
3a5c3df02f
Add sync and async texture and buffer readback APIs.
...
- Add imagedata = love.graphics.readbackTexture(texture, [slice, mipmap, x, y, w, h, [dest, destx, desty]]).
- Add readback = love.graphics.readbackTextureAsync(texture, [slice, mipmap, x, y, w, h, [dest, destx, desty]]).
- Add bytedata = love.graphics.readbackBuffer(buffer, [offset, size, [dest, destoffset]]).
- Add readback = ove.graphics.readbackBufferAsync(buffer, [offset, size, [dest, destoffset]]).
- Deprecate Texture:newImageData.
The async variants return a new GraphicsReadback object. It has the following methods:
- isComplete()
- hasError()
- wait()
- getBufferData()
- getImageData()
- update() (called automatically every frame by love, not normally needed).
Support notes:
- readbackBuffer and readbackBufferAsync require buffer copying support.
- readbackTexture with a render target (canvas) is always supported. readbackTexture with a non-render-target requires copy-texture-to-buffer support.
- readbackTextureAsync with a render target requires copy-render-target-to-buffer support. readbackTextureAsync with a non-render-target requires copy-texture-to-buffer support.
2022-05-30 21:53:55 -03:00
Alex Szpakowski
bc1c38d361
improve logic for detecting when Texture:generateMipmaps is supported
2022-02-19 16:34:52 -04:00
Alex Szpakowski
d96e1636b1
Improve setCanvas validation of volume texture layer + mipmap values.
2022-01-16 13:00:12 -04:00
Alex Szpakowski
d51e012812
Merge branch '12.0-development' into metal
2022-01-05 21:12:22 -04:00
Alex Szpakowski
7f3538d2ba
Merge branch 'main' into 12.0-development
2022-01-05 21:10:27 -04:00
Alex Szpakowski
40aa50662a
Merge branch '12.0-development' into metal
2022-01-01 15:36:57 -04:00
Alex Szpakowski
8e7fd10b6f
Update copyright year for 2022
2021-12-31 18:33:40 -04:00
Alex Szpakowski
52101b2563
Add love.graphics.copyTextureToBuffer and copyBufferToTexture.
2021-12-28 12:46:56 -04:00
Alex Szpakowski
e63025b74f
Merge branch '12.0-development' into metal
2021-12-24 15:34:05 -04:00
Alex Szpakowski
a551fcd492
Initial support for writing to textures in compute shaders.
2021-08-13 14:43:03 -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
52d4a5c679
metal: initial shader texture binding implementation.
...
rework metal shader compilation/parsing.
2021-03-31 18:35:57 -03:00
Alex Szpakowski
2d2918a254
Merge branch '12.0-development' into metal
2021-03-26 21:42:08 -03:00
Alex Szpakowski
2e2ebe95cd
Clean up some obsolete internal graphics code
2021-01-17 16:50:44 -04:00
Alex Szpakowski
5e77944dc0
refactor texture format support internals
2021-01-16 13:09:01 -04:00
Alex Szpakowski
20a92a4106
Merge branch '12.0-development' into metal
2020-12-22 22:37:17 -04:00
Alex Szpakowski
e10444c21f
Move Texture:generateMipmaps error handling out of backend code
2020-10-25 23:13:50 -03:00
Alex Szpakowski
9d2dca5740
metal: nogame and error screens work.
...
- implement love.graphics.setColor
- implement default textures
- hacky implementation of default uniform data
- use texture swizzles to set up LA8 (text) texture data
- shader reflection work
2020-06-13 20:29:23 -03: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
12c90b3dca
Merge Image and Canvas GL backend classes into new common Texture class.
2020-02-07 20:29:21 -04:00
Alex Szpakowski
0017f9c77d
Remove a redundant internal Texture method
2020-02-04 22:15:18 -04:00
Alex Szpakowski
258129738f
Remove graphics::Canvas and graphics::Image
2020-02-04 22:06:55 -04:00
Alex Szpakowski
0304bdf450
Move getMipmapMode from Canvas to Texture
2020-02-04 19:56:19 -04:00
Alex Szpakowski
4104c136cf
Move Canvas:newImageData to Texture:newImageData
2020-02-04 19:19:37 -04:00
Alex Szpakowski
4716211c14
Move replacePixels from Image to Texture
2020-02-04 19:05:43 -04:00
Alex Szpakowski
63c5df6aa7
Begin unification of Canvases and Images.
2020-02-03 23:05:46 -04:00
Alex Szpakowski
fc0d60a96d
Move Canvas:getMSAA to Texture:getMSAA.
2020-02-03 19:26:11 -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
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
efa2bd7837
Consolidate some internal graphics state definitions into a new renderstate file.
...
--HG--
branch : minor
2019-12-26 23:07:51 -05:00
Alex Szpakowski
0752f27bdf
Update copyright year for 2019
2019-01-03 21:09:05 -04:00