niki
0759e8d513
vulkan: fix some memory leaks
2022-07-11 01:13:50 +02:00
niki
7fe2a2d821
vulkan: fix vertex format
2022-07-10 22:52:03 +02:00
niki
ef08282f0d
vulkan: implement getRendererInfo
2022-07-10 19:13:10 +02:00
niki
565455c3ea
proper selection of vulkan renderer
2022-07-10 03:46:12 +02:00
niki
b1fb5b551e
working text rendering
2022-07-10 02:25:28 +02:00
niki
73348e5012
enable alpha blending
2022-07-01 13:43:51 +02:00
niki
2a65ea5fb1
cleanup some debug code
2022-06-30 20:16:40 +02:00
niki
0cea07806f
use different uniform buffers for each draw call
2022-06-30 18:42:49 +02:00
niki
7f894e5bf7
some work on drawQuads (not fully working yet)
2022-06-25 23:02:13 +02:00
niki
efdc2b8ee2
fix crash on exit
2022-06-16 02:25:55 +02:00
niki
b5ba2b65b5
stop hardcoding vulkan vertex layouts
2022-06-16 01:16:23 +02:00
niki
2bf7c35220
use constant color for VertexColor
2022-06-14 23:30:51 +02:00
niki
1111aa3f42
(almost) integrate default löve shaders for vulkan
2022-06-14 18:18:23 +02:00
niki
c996860602
Use löve's uniform data object for vulkan shader
2022-06-13 16:50:12 +02:00
niki
3a4058d750
allow drawing more than one texture
2022-06-12 02:00:30 +02:00
niki
acf0474cc8
Implement drawing very basic textures
...
With this commit you can draw very simple textures.
The following code will showcase it:
```lua
function love.run()
local data = love.image.newImageData(40, 40)
for i = 0,39 do
for j=0,39 do
if i <= 20 then
if j <= 20 then
data:setPixel(i, j, 1, 0, 0, 1)
else
data:setPixel(i, j, 0, 1, 0, 1)
end
else
if j <= 20 then
data:setPixel(i, j, 0, 0, 1, 1)
else
data:setPixel(i, j, 1, 1, 1, 1)
end
end
end
end
local texture
texture = love.graphics.newTexture(data)
return function()
love.event.pump()
for name, a,b,c,d,e,f in love.event.poll() do
if name == "quit" then
if not love.quit or not love.quit() then
return a or 0
end
end
love.handlers[name](a,b,c,d,e,f)
end
love.graphics.origin()
love.graphics.clear()
love.graphics.draw(texture, 50, 500)
love.graphics.present()
end
end
```
2022-06-11 20:33:44 +02:00
niki
6c19e8c10a
merge newest 12.0 commits
2022-06-11 01:34:17 +02:00
niki
4c415479c0
Merge remote-tracking branch 'origin/12.0-development' into vulkan
2022-06-11 01:22:29 +02:00
niki
b9496f6d43
use glslang to compile vulkan ShaderStage
...
Before this commit a system call to glslc was made to compile the shaders dynamically during runtime.
That was obviously a very hacky way, so now the proper way was implemented.
2022-06-11 00:59:14 +02: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
fb450b1df4
Add internal code for temporary buffers.
2022-05-30 21:46:55 -03:00
Alex Szpakowski
a533982cb4
Replace internal 'staging' buffer data type with new 'readback' type.
2022-05-30 21:43:25 -03:00
niki
d0aaddfef6
cleanup redundant initialization code
2022-05-08 22:51:11 +02:00
niki
c16c07780f
use default texture when rendering primitives
2022-05-08 22:44:32 +02:00
niki
75a6bc9b5d
Merge remote-tracking branch 'origin/12.0-development' into vulkan
2022-05-06 16:46:55 +02:00
niki
4e8304255d
first draft of vulkan texture impl
2022-05-06 16:06:09 +02:00
niki
8f55f093a4
partially implement initCapabilities for vulkan
2022-05-04 23:43:23 +02:00
niki
1b816e93ae
usa vma as single header lib not through cmake
2022-05-04 15:42:36 +02:00
niki
e6f8b465bc
use vma for streambuffer implementation
2022-05-04 15:41:50 +02:00
niki
77f1af598d
add skeleton for vulkan texture impl
2022-05-03 18:11:31 +02:00
niki
394956e320
ignore minsize in StreamBuffer::map
2022-05-03 17:51:54 +02:00
niki
9299219977
perform prepareDraw only once per frame
2022-05-03 17:51:35 +02:00
niki
0953f3540e
remove temporary files after compilation
2022-05-03 17:51:18 +02:00
Alex Szpakowski
ee336e5393
opengl: restructure code for computing format support.
2022-04-23 13:15:58 -03:00
Alex Szpakowski
28a64c2b29
Use uint32 instead of int for some internal bit-flags.
2022-04-23 09:41:29 -03:00
Alex Szpakowski
c09fef8e79
Audio source decoding improvements.
...
- Streaming sources now also stream the file contents instead of loading it into memory, by default. Added a new stream type enum parameter to newSource ("file" or "memory").
- Audio file decoding now chooses the most appropriate decoder based on the file contents instead of the file extension.
- Videos now stream audio from the file instead of loading all of the video file into memory for use with audio decoding.
2022-04-21 19:57:32 -03:00
niki
6dc12be45d
fix crash on resizing
2022-03-22 14:32:41 +01:00
niki
158052c52c
implement basic per frame uniform variables
2022-03-22 14:31:50 +01:00
niki
157c8f8a20
include custom vulkan shader in love source
2022-03-21 15:26:27 +01:00
Miku AuahDark
405e33a689
Use int instead of PixelFormatUsageFlags for isPixelFormatSupported.
2022-03-05 13:42:20 +08:00
Alex Szpakowski
0fa00e0bdc
love.graphics.newShader: add a compile options table parameter.
...
The only field currently read from the table is 'defines', which can contain either an array of define names, or name-value pairs.
For example: newShader(file, {defines={"MYFEATURE_ENABLED", MYSETTING=1}})
Fixes #1577
2022-02-20 12:23:41 -04:00
Alex Szpakowski
bc1c38d361
improve logic for detecting when Texture:generateMipmaps is supported
2022-02-19 16:34:52 -04:00
Alex Szpakowski
171533dbf8
Another shader fix for metal+iOS
2022-02-15 21:16:55 -04:00
Alex Szpakowski
caf89998cc
iOS: fix shader compilation with metal
2022-02-15 21:12:13 -04:00
Alex Szpakowski
c28731ea80
opengl: fix love's internal quad index buffer failing to populate
2022-02-12 09:37:30 -04:00
niki
197dfb9738
start implementing vulkan Shader type
2022-02-06 22:56:24 +01:00
niki
4692a0490c
basic functionality for indexed draw in vulkan
2022-02-06 02:11:20 +01:00
niki
7d680838b6
restructure to not hardcore draw vk commands
2022-02-05 20:44:36 +01:00
Alex Szpakowski
7216a022f9
metal: remove unused internal code
2022-02-04 22:09:50 -04:00
niki
f39d01e940
Merge branch 'vulkan' of https://github.com/nikeinikei/love into vulkan
2022-02-05 01:53:05 +01:00