Commit Graph

4397 Commits

Author SHA1 Message Date
niki 00974b5820 vulkan: move shader compilation into Shader 2022-07-18 22:28:41 +02:00
niki a544d51c22 vulkan: implement instanced draw 2022-07-17 00:28:41 +02:00
niki 6916182a79 vulkan: implement getAPIStats 2022-07-16 23:46:03 +02:00
niki 913aab0226 vulkan: implement setActive 2022-07-16 23:27:54 +02:00
niki 9b7cfef5ef vulkan: implement setScissor 2022-07-16 23:19:24 +02:00
niki 974c50c751 vulkan: partially implement clear
Only works for color attachments for now.
2022-07-16 21:45:27 +02:00
niki 4c33d0aa36 vulkan: fix Shader::attach() 2022-07-16 17:52:29 +02:00
niki ac9d8ec2a0 vulkan: fix canvas rendering
Sometimes canvas commands wouldn't get executed.
This was because when the window gets resized,
the command buffers would get recreated, and would thus
lose the recorded commands.
2022-07-16 15:55:48 +02:00
niki 95952c691d vulkan: implement setRenderTargetsInternal
basic usage of canvases now works.
Colors probably aren't correct yet.
2022-07-15 01:44:07 +02:00
niki 0ae81091d1 vulkan: use dynamic rendering
This vulkan 1.3 feature will make the code simpler when dealing
with off screen render targets (i.e. löve canvases)
2022-07-14 18:01:46 +02:00
niki 38f15ae97d vulkan: implement cull and winding 2022-07-13 17:27:11 +02:00
niki c6d79ae87e vulkan: implement setColorMask 2022-07-13 16:50:28 +02:00
niki a591b2b99e vulkan: implement setBlendState 2022-07-13 16:37:16 +02:00
niki 04fb789649 vulkan: implement setPointSize 2022-07-13 16:05:12 +02:00
niki 4190807a20 vulkan: implement setWireframe 2022-07-13 15:55:14 +02:00
niki 0834408b90 vulkan: implement draw(DrawCommand)
Now love.graphics.point and love.graphics.line works
2022-07-13 13:56:00 +02:00
niki 14b8abeef5 vulkan: implement setColor 2022-07-11 17:17:32 +02:00
niki 9d04ec0030 vulkan: fix all memory leaks
Now now errors regarding resource management appear in the debug output / validation layers.
2022-07-11 13:58:35 +02:00
niki c5327bfc4f vulkan: fix some more memory leaks 2022-07-11 01:47:34 +02:00
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 12b9978173 Merge remote-tracking branch 'origin/12.0-development' into vulkan 2022-06-12 02:06:44 +02:00
niki 3a4058d750 allow drawing more than one texture 2022-06-12 02:00:30 +02:00
Alex Szpakowski 17b359f939 Windows: add support for high-dpi when capable SDL versions are used.
Issue #1421
2022-06-11 19:49:26 -03: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 dd7e20fe18 Xcode project file maintenance 2022-06-09 19:57:53 -03:00
Alex Szpakowski 07f087c139 Fix newFileData and newThread outputting deprecation warnings.
Fixes #1811.
2022-06-09 19:57:31 -03:00
Alex Szpakowski 4a1d01c68c Fix cmake builds 2022-05-30 22:14:02 -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 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
Miku AuahDark 7b66e50cfc Add support for love.filedropped in Android.
To send file to the filedropped callback, share the files to the game.
Note that for non-fused binary, if there's no game running, LOVE treat it as
*.love game to run.
2022-05-29 01:49:29 +08:00
Miku AuahDark 2879074177 Silence compiler warnings in isModifierActive. 2022-05-28 19:19:50 +08:00
Miku AuahDark 9e1e35ff39 Fixed love.audio.newSource(SoundData) variant. 2022-05-28 19:17:50 +08:00
Miku AuahDark 2822f17a39 Minor improvements and fixes to Android-specific code. 2022-05-28 13:47:53 +08:00