Commit Graph

209 Commits

Author SHA1 Message Date
Bjorn 78a70670bb
Merge branch 'dev' into MSFT_controller_model 2022-12-03 19:34:49 -08:00
bjorn a615351f66 Actions; Sponsors; README; 2022-12-02 18:14:31 -08:00
Ilya 92c136bc73
Merge branch 'bjornbytes:master' into picofix 2022-12-01 21:20:33 +03:00
bjorn f9d7742dfd Add support for headless headset rendering;
Although the name is unfortunate, this allows access to lovr.headset
when no window is opened or when the graphics module is disabled.  This
requires the XR_MND_headless extension to be supported by the runtime.
2022-11-26 14:40:39 -08:00
Ilya Chelyadin 3f20364c3f Pico is back!
Tested on Pico Neo 3 with PUI v4.9.3
Also included generic (Monado-Android) Android flavor.
2022-11-22 22:01:13 +03:00
s-ol 043f9c7920 store headset model metadata for animations 2022-11-22 12:24:57 +01:00
bjorn 9783140725 Fix window resize; 2022-11-09 19:05:01 -08:00
bjorn b81f86b5ad rm Android flavors for now;
There used to be oculus and pico but pico doesn't work anymore.

Eventually things will converge on the standard loader and we won't
need different loaders, but manifests may require flavors.
2022-11-09 00:21:49 -08:00
bjorn 36e1471cf0 lovr.graphics.isInitialized;
Returns whether the graphics module is initialized.  Used by the default
error handler to know if it's safe to try to render the error screen.
2022-11-07 19:12:11 -08:00
bjorn 5e2b44ad08 Fix stereo mirror window;
For some reason this was rendering both layers of a multi-layer
texture all squished.  I think it was supposed to just render the
first layer.
2022-11-07 17:14:27 -08:00
bjorn 904fb282c2 v0.16.0; 2022-10-15 21:49:25 -07:00
bjorn ee3cc30851 Animator renormalizes quantized weights;
It would be nice to do this in the importer, but it was 50+ lines and
was really tricky to write without reading from uncached GPU-mapped
memory.  Instead, it's 1 line here.

I hope zero-weight vertices aren't a thing?
2022-10-03 01:29:01 -07:00
bjorn cd04060467 Use correct roughness for indirect specular lighting; 2022-09-23 23:58:47 -07:00
bjorn d905b649a4 Lighting helper fixes; 2022-09-23 23:44:31 -07:00
bjorn ef407fd564 Add var shader helper;
Now you can write var(0) instead of layout(set = 2, binding = 0).
The advantage is less typing and resilience in the event that the
default set changes.
The disadvantage is that now you can't use var.
2022-09-22 20:44:06 -07:00
bjorn 952bff414a Add more oculus manifest permissions;
- Keyboard tracking
- Render model
- Passthrough
2022-09-21 14:58:30 -07:00
bjorn 72334cc1f2 Fix cubemaps being horizontally flipped; 2022-09-20 22:17:58 -07:00
bjorn 28869431fb Fix stereo mirror window; 2022-09-15 20:45:26 -07:00
bjorn 1dd737d8a4 Make the logo a default shader;
Improves build system, improves filesize, seemingly improves startup time
2022-09-13 17:36:10 -07:00
bjorn d8c6c47e00 Add normal DefaultShader;
It's a pretty normal shader.
2022-09-10 11:07:55 -07:00
bjorn 5c4fc79242 mv lovr.graphics.init lovr.graphics.initialize;
init is undocumentable due to Lua conventions.
2022-09-10 10:22:52 -07:00
bjorn 688c698808 Enable hand tracking 2.0 in AndroidManifest.xml; 2022-09-02 18:53:31 -07:00
bjorn 8697466009 Shader flag adjustments;
- glowTexture is on by default, but still requires the glow flag.
- occlusionTexture is named ambientOcclusion, and is on by default,
  but is still not used by any builtin shaders/helpers.
2022-09-02 15:33:18 -07:00
bjorn 0b0faf6dc6 DefaultColor respects flag_colorTexture; 2022-09-02 15:07:45 -07:00
bjorn d513b98ce2 Fix cubemap shader; 2022-08-26 22:22:37 -07:00
bjorn 085550da33 Tonemapping, I guess; 2022-08-26 10:34:32 -07:00
bjorn ad7c854571 Add evaluateSphericalHarmonics helper; 2022-08-26 10:28:43 -07:00
bjorn 70aff00a11 Rename shader flags; Add color flags; 2022-08-26 10:28:23 -07:00
bjorn 5a2fe54c04 Improve Pass:fill;
It can now fill an array texture to a multiview pass, copying to
the corresponding layers.
2022-08-26 09:57:51 -07:00
bjorn f4f95a64d7 Pass blends by default; 2022-08-25 22:01:12 -07:00
bjorn ede1036694 Temporary Passes;
Sigh, back to getPass.  I don't even know at this point.  Basically now
that we came up with a half-solution for temp buffers, it makes sense to
apply this to passes as well, since we aren't going with the workstream
idea and temp passes are more convenient than retained passes.
2022-08-25 21:57:15 -07:00
Josip Miskovic 11f2d052ef Skybox view matrix includes local transform 2022-08-18 09:04:42 -07:00
bjorn 51312f4704 Add attachmentCount/defaultPointSize specialization constants; 2022-08-14 09:43:00 -07:00
bjorn 5799b0effb Rename setBackground back to setBackgroundColor;
The "fancy background" idea won't go here.
2022-08-13 21:10:58 -07:00
bjorn f894c87723 Clamp roughness to .05; 2022-08-13 00:26:18 -07:00
bjorn 13f40a05c3 Update getPixel syntax for array textures;
vec3 is just kinda weird.
2022-08-13 00:00:00 -07:00
bjorn 507c02bfb1 Invert surface normal when backfacing; 2022-08-12 23:30:39 -07:00
bjorn efdbc7f7ba Fix equirect shader; 2022-08-12 22:46:59 -07:00
bjorn f6a1fbdfb9 Add new 'Constants' helper; 2022-08-12 22:44:18 -07:00
bjorn 3cbf85c98a Adjust error screen font size and default perspective; 2022-08-12 21:08:25 -07:00
bjorn 23932c6e7c Default errhand stops audio playback; 2022-08-12 20:46:59 -07:00
bjorn 016d3753d5 Further boot.lua cleanup; 2022-08-12 20:32:45 -07:00
bjorn ad6360d2fd Clean up boot.lua;
A lot of clean up can happen now that C doesn't push delayed errors to
Lua.  This was happening for Pico and WebVR, neither of which are used
anymore.

Also default vsync to true but force it off if VR is active.
2022-08-12 20:18:55 -07:00
bjorn 5324ae9a84 Fix error screen; 2022-08-12 19:28:25 -07:00
bjorn b51d4e7de7 Normal mapping; 2022-08-12 17:59:06 -07:00
bjorn 7e5221492d rm pointSize from Material;
It's weird, and about as inconvenient as just putting it in the shader.
2022-08-09 19:54:54 -07:00
bjorn 0a599ccdd6 Rename PixelColors to PixelColor; 2022-08-09 19:51:53 -07:00
bjorn 63a327c0b2 Add getLighting builtin function to shaders; 2022-08-09 19:49:47 -07:00
bjorn 6d6e79e704 Recompile nogame shader;
Need to automate better, but later
2022-08-08 20:46:27 -07:00
bjorn 2047127a97 Enable depth submission by default; 2022-08-06 23:45:37 -07:00
bjorn 9b7b4e323c appveyor rebuilds when CMakeLists changes; 2022-08-06 18:56:52 -07:00
bjorn 7efd19c45c Add uniform buffer for global constants;
So far it has resolution and timestamp.

Broke the nogame shader, need to recompile.
2022-08-06 13:37:27 -07:00
bjorn 642388709b Shader helper improvements; 2022-08-06 13:06:42 -07:00
bjorn c41188c4b4 Merge branch 'master' into dev 2022-08-06 11:08:02 -07:00
bjorn 8b2fe0aa31 Adjust VulkanSDK path; 2022-08-06 10:58:42 -07:00
bjorn 246cbdfcdc Update appveyor VulkanSDK command flags; 2022-08-06 10:52:17 -07:00
bjorn b09519cdf4 Rebuild when changing etc; 2022-08-06 10:38:38 -07:00
bjorn 88ab8e5e5b appveyor builds dev branch; 2022-08-06 10:36:09 -07:00
bjorn 6213dfb844 Test VulkanSDK on appveyor; 2022-08-06 10:34:25 -07:00
bjorn dd40e6c829 Fix errhand; 2022-08-06 00:29:40 -07:00
bjorn fcbeccdfb1 Fix background colors; 2022-08-05 21:05:02 -07:00
bjorn 804a1e6844 Fix stereoblit shader; 2022-08-05 19:18:29 -07:00
bjorn acd87a5e5c lovr.graphics.present;
It's nice to have an explicit action for presentation.
2022-08-04 00:06:54 -07:00
bjorn 89312c1c4b Add on-disk shader cache;
Set t.graphics.shadercache to true (the default) and lovr will
read/write a shader cache file from/to disk.
2022-08-02 22:06:44 -07:00
bjorn 4ee092e81b Make Pass a regular object;
It uses newPass instead of getPass.  Temporary objects had lifetime
issues that were nearly impossible to solve.  And normal objects are
easier to understand because they behave like all other LÖVR objects.

However, Pass commands are not retained from frame to frame.  Pass
objects must be re-recorded before every submit, and must be reset
before being recorded again.

Pass objects now provide a natural place for render-pass-related info
like clears and texture handles.  They also allow more information to be
precomputed which should reduce overhead a bit.

It is now possible to request a stencil buffer and antialiasing on the
window and headset textures, via conf.lua.

lovr.graphics.setBackground should instead set the clear color on the
window pass.  Though we're still going to try to do spherical harmonics
in some capacity.

There are still major issues with OpenXR that are going to be ironed
out, and the desktop driver hasn't been converted over to the new
headset Pass system yet.  So lovr.headset integration is a bit WIP.
2022-08-02 22:06:44 -07:00
bjorn 67b338a1d8 Change default window size; 2022-08-01 21:46:00 -07:00
bjorn 4bb3405ff0 Add missing shader; 2022-08-01 21:26:34 -07:00
bjorn ac104e6f41 WIP stereo blit shader; 2022-07-31 13:26:35 -07:00
bjorn 6de50a83c4 Shader changes; 2022-07-31 12:49:18 -07:00
bjorn 50f596bd34 Default shaders use lovrmain; 2022-07-31 11:18:15 -07:00
bjorn ff39a7485b Update appveyor.yml; 2022-07-19 08:48:59 -07:00
bjorn a0173252b9 Slight improvement to lovr.mirror; 2022-07-17 20:07:31 -07:00
bjorn 83fa750a4d Support and default to reverse-z with infinite far plane; 2022-07-17 12:37:59 -07:00
bjorn 7aab5ce79b Fix errhand; 2022-07-17 09:55:27 -07:00
bjorn a4e4181489 Error screen; 2022-07-10 21:37:52 -07:00
bjorn 72dd7ee0f2 Fix compute shader compilation; 2022-07-09 23:39:20 -07:00
bjorn b0c1dd5f12 Put nogame in its own file; 2022-07-06 23:50:43 -07:00
bjorn 3bf5ec5744 Shader improvements;
Mostly renaming things and adding helper functions.
2022-07-06 22:54:56 -07:00
bjorn b934fac1df Pass:skybox; 2022-07-04 00:18:38 -07:00
bjorn 7ce32e38b1 nogame screen; 2022-07-03 20:07:05 -07:00
bjorn 1a1026bc0f Fix font alpha; 2022-07-03 20:06:55 -07:00
bjorn 0d23d10e43 Animate normals; Use material color; 2022-07-03 19:20:30 -07:00
bjorn d088c5471d Model;
Does not include some of the fancier accessors yet.
2022-07-03 17:26:31 -07:00
bjorn 8b37b25e54 TIME WIZARD; 2022-06-30 18:47:01 -07:00
bjorn 18a31349b4 boot.lua uses headset clip distance; 2022-06-25 14:37:49 -07:00
bjorn 4021d4e893 Pass:monkey;
Questionable.
2022-06-24 23:05:09 -07:00
bjorn 5c43ad0792 Pass:fill; 2022-06-24 19:59:48 -07:00
bjorn 0c36f53fe6 Placeholder error screen; 2022-06-20 18:26:32 -07:00
bjorn 3df9aea3fd Add Font shader; 2022-06-20 18:17:37 -07:00
bjorn af8c061c50 Default buffer can be used for colors; 2022-06-18 23:31:51 -07:00
bjorn 3c5288e979 Default fragment shader samples default texture; 2022-06-18 17:40:34 -07:00
bjorn c1bb47d737 Merge branch 'master' into dev 2022-06-16 23:50:11 -07:00
bjorn 86b2c934e8 Materials, mostly; 2022-06-16 23:49:09 -07:00
bjorn 7de6bdf242 Shaders; Rework vertex formats; 2022-06-15 20:46:43 -07:00
bjorn c2dab3cf2c Update lovr.draw signature;
- If you return a truthy value from lovr.draw, the pass won't be
  submitted.  A falsy value will submit the input pass.
- For convenience, lovr.graphics.submit returns true.
2022-06-08 23:59:48 -07:00
bjorn 0d4d7bc0e3 Fix vertex shader draw count; Simplify upload sync; 2022-06-08 21:23:30 -07:00
bjorn d5325b87b4 Headset support; 2022-06-05 20:38:14 -07:00
bjorn e36cc6482d rename pass/buffer to getPass/getBuffer; 2022-06-05 18:56:03 -07:00
bjorn ffb71c9c04 rm vertex colors for now; 2022-05-30 15:36:26 -07:00
bjorn 6e27648ce5 Wire up non-headset lovr.draw/lovr.mirror; 2022-05-30 15:35:07 -07:00
bjorn ff77a30f01 Default shaders; 2022-05-27 20:47:20 -07:00
bjorn 970a84a514 Surface, swapchain, window texture, vsync; 2022-05-11 15:28:04 -07:00
bjorn e820e40e08 Move window opening to lovr.system; 2022-05-09 12:43:19 -07:00
bjorn 4483145d53 Allow passing a file to lovr;
The file will be treated as main.lua.
Its directory will be treated as the source.
2022-04-28 17:36:05 -07:00
bjorn c2e9ff3c32 Add graphics table to conf; 2022-04-26 22:48:51 -07:00
bjorn 40e9a4ab73 core/gpu; 2022-04-21 17:39:59 -07:00
bjorn 37221afbc6 rm graphics module; 2022-04-21 17:39:58 -07:00
bjorn efbcb5e4c2 Merge branch 'master' into dev 2022-03-30 13:52:58 -07:00
bjorn faa42ee38b mv resources etc; 2022-03-30 12:34:34 -07:00