Commit Graph

2172 Commits

Author SHA1 Message Date
Sasha Szpakowski c764626a6a vulkan: fix shader:send with fields in an array-of-structs. 2024-03-30 12:20:52 -03:00
Sasha Szpakowski b5b6d07108 metal: fix shader:send with fields in an array-of-structs. 2024-03-30 12:03:20 -03:00
Sasha Szpakowski 4387935f16 Allow drawing a Mesh that has no VertexPosition attribute, if it has custom attributes. 2024-03-29 21:01:04 -03:00
Sasha Szpakowski 302da1b3af vulkan: potentially fix validation errors when creating a cubemap canvas. 2024-03-28 19:06:42 -03:00
Sasha Szpakowski b33afc4371 vulkan: love.graphics.clear fixes.
- Fix love.graphics.clear(color) when multiple canvases are active.
- Fix love.graphics.clear when an integer-format canvas is active.
2024-03-28 19:00:29 -03:00
Sasha Szpakowski d82922f774 vulkan: let the system handle device rotation for us.
We'd need to inject a whole bunch of code into user shaders (for example to rotate derivates) if we wanted to reliably handle it ourselves, which isn't viable.
2024-03-27 20:00:05 -03:00
Sasha Szpakowski 2bdadf51d4 Merge branch 'main' into SDL3 2024-03-24 18:53:08 -03:00
Sasha Szpakowski 21b71d02b5 Add love.graphics.setCustomProjection.
The active projection matrix is reset when changing canvases, and when the window is resized if no canvas is active at the time.
2024-03-24 10:46:29 -03:00
Sasha Szpakowski 7bfbd647ba Make shader clip space consistent across APIs and projection matrices.
- All shaders are expected to output clip space values that are effectively y-up, with [-1, 1] z, in NDC.
- The transform to a backend's expected clip space values from the above range now happens after user vertex shader code is run, instead of inside a projection matrix.
- Projection matrices no longer need to be flipped when rendering to a canvas versus the main screen.

This means custom projection matrices might need to be altered to account for the more consistent range.
2024-03-23 22:00:02 -03:00
Sasha Szpakowski 698d305212 Remove love.graphics.setOrthoProjection and setPerspectiveProjection 2024-03-23 17:58:34 -03:00
Sasha Szpakowski 565eab4ae1 samplers use mediump instead of lowp by default in GLSL ES. 2024-03-23 09:50:48 -03:00
Sasha Szpakowski 1e657ea0bf metal: fix love_ScreenSize shader variable when rendering to a non-default mipmap level of a Canvas. 2024-03-22 23:15:09 -03:00
Sasha Szpakowski 9aaeabd6a5 vulkan: fix love_ScreenSize shader variable when a canvas is active. 2024-03-22 23:08:34 -03:00
Sasha Szpakowski 17cb64c45f vulkan: fix validation errors in love.graphics.getTextureFormats. 2024-03-21 21:43:45 -03:00
Sasha Szpakowski bbaa55f8b8 vulkan: fix validation errors in layout transitions for depth-only and stencil-only images. 2024-03-21 21:32:03 -03:00
Sasha Szpakowski 95796caa06 improve performance of love.graphics.draw's Lua binding code. 2024-03-20 18:36:59 -03:00
Sasha Szpakowski 4d1865fe1a opengl: attempt to fix the Android workaround for r8 pixel format support. 2024-03-17 13:54:40 -03:00
Sasha Szpakowski 60911c5181 vulkan: remove some newly dead code 2024-03-17 00:01:10 -03:00
Sasha Szpakowski 48aefd91fa vulkan: captureScreenshot improvements.
- Don't create several persistent screen-sized images and buffers for screenshots, only create one temporary buffer during a frame that requests a screenshot.
- Attempt to handle more out-of-memory situations.
- Make sure the final screenshot is opaque.
- Swap R and B channels in the screenshot ImageData when the backbuffer is BGRA.
2024-03-16 23:51:40 -03:00
Sasha Szpakowski f3887361e5 Merge pull request #2037 from nikeinikei/main
vk: unify local uniform buffer
2024-03-13 18:33:56 -03:00
niki 07c5c44ea3 vulkan: simplify code with alignUp 2024-03-13 22:16:33 +01:00
Sasha Szpakowski f8859358c3 allow graphics debug output when OpenGL ES 3.2 is used. 2024-03-12 18:28:26 -03:00
Sasha Szpakowski 930053d81d opengl: ignore debug notifications when debug output is enabled. 2024-03-12 18:27:49 -03:00
Sasha Szpakowski 63aba28d18 metal: fix shader compilation when using void effect() with MRTs. 2024-03-11 19:14:25 -03:00
niki 295fb214d5 vulkan: remove unused constant and use correct sizes for mapping
the local uniform stream buffer
2024-03-11 13:47:43 +01:00
Sasha Szpakowski c91101d2e4 Fix texel buffer detection in shaders. 2024-03-10 21:24:10 -03:00
Sasha Szpakowski ec9fb6eb28 Improve Windows vulkan draw performance by reducing the size of a struct. 2024-03-10 14:33:29 -03:00
Sasha Szpakowski b12ecf49d8 Fix compile errors 2024-03-10 13:51:33 -03:00
Sasha Szpakowski 9e00ce0973 metal: fix uniform data corruption
The wrong buffer binding offset was being used in 2/3rds of frames.
2024-03-10 13:38:28 -03:00
Sasha Szpakowski 75fd2fa06e metal: add debug labels for internal buffers. 2024-03-10 13:08:04 -03:00
niki 54f27a8277 vulkan: unify local uniform buffer 2024-03-10 14:41:37 +01:00
Sasha Szpakowski b6c47cd3ec vulkan: fix typo preventing storage textures in shaders from working. 2024-03-09 16:09:26 -04:00
Sasha Szpakowski b08f35d341 vulkan: only set cubemap compatibility for array textures with >= 6 layers. 2024-03-09 16:01:26 -04:00
Sasha Szpakowski 892411a737 don't error during newShader if a buffer is unused. 2024-03-09 13:22:39 -04:00
Sasha Szpakowski 10565e9967 vulkan: improve draw performance via Shader::cmdPushDescriptorSets. 2024-03-09 13:22:15 -04:00
Sasha Szpakowski be377601f7 vulkan: shader binding mapper works with arrays of resources 2024-03-09 13:07:23 -04:00
Sasha Szpakowski 51d5773b93 vulkan: optimize vertex buffer binding code 2024-03-09 00:15:13 -04:00
Sasha Szpakowski 52f33041a5 Fix Shader:send with storage buffers. 2024-03-08 17:52:48 -04:00
niki ca0264e906 vulkan: fix #2032
when using the low level vertexmain and pixelmain entry points
it can happen that there are no local uniforms used.
2024-03-08 13:42:05 +01:00
Sasha Szpakowski 8dae72b88e vulkan: fix shader:send(texture|buffer) not calling love.graphics.flushBatch. 2024-03-07 23:04:22 -04:00
Sasha Szpakowski c35b9cba4a vulkan: fix a potential error during draws. 2024-03-07 22:31:05 -04:00
Sasha Szpakowski 321143755f metal: clean up some shader resource binding code 2024-03-07 21:53:40 -04:00
Sasha Szpakowski ad42570cef Fix compile errors on Linux/Android 2024-03-07 21:37:21 -04:00
Sasha Szpakowski 2079f657e7 graphics: most uniform reflection is handled at a higher level instead of backend code.
Fixes boolean uniforms when Metal is used.
2024-03-07 21:24:11 -04:00
Sasha Szpakowski 3509e651fd Fix Texture:getWidth for texture views. 2024-03-06 14:23:18 -04:00
Sasha Szpakowski 32e777c156 vulkan: fix a crash. 2024-03-05 23:03:55 -04:00
Sasha Szpakowski 01fbedb225 vulkan: improve some error messages when shader compilation fails. 2024-03-03 12:40:23 -04:00
Sasha Szpakowski fe56f88f8e opengl es: expand support for rendering to floating point formats. 2024-02-28 17:55:37 -04:00
Sasha Szpakowski 8ba72d8cf1 opengl: the computewrite flag isn't supported for sRGB textures. 2024-02-28 13:20:11 -04:00
Sasha Szpakowski ff06718f8a opengl: only populate Shader:getWarnings string when there are warnings. 2024-02-27 23:17:24 -04:00