bjorn
48b887f7ee
Always pass identity matrix for animated shader;
...
So at least something shows up if you have an unskinned mesh with
a skinned shader.
2020-01-13 20:47:47 -08:00
bjorn
dc1c011380
Fix bug with std140 offset logic;
2020-01-09 21:57:25 -08:00
Bjorn
16b93869ee
Merge pull request #143 from bjornbytes/shadow-samplers
...
Shadow samplers;
2019-12-14 11:34:38 -08:00
bjorn
e2d8f8c645
platform -> os;
...
The function names are staying the same for now.
2019-12-13 19:55:46 -08:00
bjorn
5957d07448
Fix warnings;
2019-12-13 03:41:35 -08:00
bjorn
e316e6156b
lovr.graphics.get/setColorMask;
2019-12-10 13:44:51 -08:00
bjorn
c87d6dec3d
lovrPlatformGetProcAddress;
...
Seems nicer than a global and allows for logging/hooks;
2019-12-10 13:15:12 -08:00
bjorn
2f9400a5f7
Adjust includes;
2019-12-10 13:01:28 -08:00
bjorn
c07b9e3fec
rm unnecessary include;
2019-11-28 16:04:41 -08:00
bjorn
3e347f0521
Properly initialize uniform.dirty;
2019-11-28 15:31:27 -08:00
bjorn
2ecc1c552f
Fix uniform array hashing;
2019-11-26 11:34:39 -08:00
bjorn
bd169a4a4d
Fix readable buffers;
...
Unsynchronized/invalidated mapping doesn't work if the read bit is set.
2019-11-14 12:42:52 -08:00
bjorn
d21911d010
Add core/map hash table; rm lib/map;
2019-10-30 00:07:05 -07:00
bjorn
4d2aa81647
Reset active texture in lovrGpuInit;
2019-10-15 11:34:49 -07:00
bjorn
d93e17e800
Texture:setCompareMode; Shadow samplers;
2019-10-14 17:12:34 -07:00
bjorn
ac441ec15b
lovrGraphicsGetCamera;
2019-10-12 12:45:11 -07:00
bjorn
5f404e2b1f
WebVR fixes;
...
- Re-add the maf.c file that exports all the maf symbols.
- Fix lovrGpuTock for WebGL.
2019-10-07 19:50:17 -07:00
bjorn
403b217781
Fix Model destructor memory issues;
...
- Memory leaks.
- Freeing things that weren't allocated.
2019-09-20 13:46:27 -07:00
bjorn
2c29119e44
Fix non-interpolated cubic spline keyframe evaluation;
2019-09-19 23:01:50 -07:00
bjorn
1902787b1b
Modify GPU timer API;
...
- lovr.graphics.tock returns the latest value of the timer, or 0.
- Timers are not in the stats table anymore.
This is to prepare for an upcoming internal change that affects timers.
2019-09-18 18:21:38 -07:00
bjorn
17ae64baec
Fix sphere winding;
2019-08-31 03:00:40 -07:00
bjorn
f64e2064ef
Adjust Canvas padding so it's 128 bytes;
2019-08-23 01:43:35 -07:00
bjorn
80eaea21f1
Adjust Buffer padding so it's 48 bytes;
2019-08-23 01:35:46 -07:00
bjorn
8d8f4eef73
Adjust Texture padding so it's 64 bytes;
2019-08-23 01:34:23 -07:00
bjorn
28344928c9
Simplify arr;
2019-08-21 23:16:58 -07:00
bjorn
13655d0df4
Simplify logging;
2019-08-21 19:02:02 -07:00
bjorn
cd09e1e695
rm sds;
2019-08-21 16:30:20 -07:00
bjorn
a4781c7013
Fix cylinder winding;
2019-08-12 20:03:32 -07:00
bjorn
948363e7df
OpenGL: Enable seamless cubemap filtering;
...
It is always used in WebGL 2 and OpenGL ES 3.
2019-08-09 17:22:00 -07:00
bjorn
4d3bfea67c
Model:getMaterial(name|index); rm Model:setMaterial;
2019-08-09 16:10:46 -07:00
bjorn
b5be93b94b
Fix problem with falsy shader flags;
2019-08-07 15:56:13 -07:00
bjorn
54d58c79cd
Fix issue where multiple shader flags don't work;
2019-08-06 14:38:49 -07:00
bjorn
edd162052c
Fix diffuse texture batching;
2019-08-06 11:38:12 -07:00
bjorn
96c47d590c
rm lovrEnvironmentTexture from Material;
2019-08-05 15:20:17 -07:00
bjorn
aab987dbef
Fix WebGL gamma correction;
...
Ugh, WebGL doesn't have sRGB backbuffers.
2019-08-01 13:26:45 -07:00
bjorn
7690db28af
Windows: Fix all the int warnings;
2019-07-31 17:51:49 -07:00
bjorn
4b9e6849c8
Better boolean shader flags; Multicanvas flag;
...
Instead of boolean shader flags turning into actual booleans defines
in the shader source, for GLSL they turn into defines. This lets you
use ifdef, which is the more common intended usage.
Also MULTICANVAS is now a boolean shader flag. The old MULTICANVAS
define is deprecated.
2019-07-28 18:08:23 -07:00
bjorn
f564444641
Fix some WebGL issues;
2019-07-28 17:28:18 -07:00
bjorn
239a9514ea
Model: Fix animations that aren't keyed at t=0;
2019-07-19 16:42:51 -07:00
bjorn
84cdc592bc
Make sure lovrBufferUnmap always unmaps;
2019-07-12 20:16:18 -07:00
bjorn
2eb4b779ab
Model cleanup;
2019-07-11 20:13:47 -07:00
bjorn
4b4020d3a7
Model:pose; Model:getNodePose;
2019-07-11 20:09:46 -07:00
bjorn
f81a65430b
Add support for cubic spline keyframe interpolation;
2019-07-11 11:05:53 -07:00
bjorn
3c07ad6b0b
Replace Animator with Model:animate;
2019-07-10 22:08:19 -07:00
bjorn
f208a5e067
Fix array initialization;
...
Because the new arr.h contains an array on the stack, we can't
initialize it and then copy it, or the pointer to the stack array
will be pointing to the wrong thing, causing incorrect behavior.
2019-07-09 09:06:11 -07:00
bjorn
af29e29e4d
Fix lovr.graphics.setProjection;
...
Needed to be using new frameData stuff.
2019-07-08 14:35:54 -07:00
bjorn
57f97056da
Use I4ui instead of I1ui for lovrDrawID constant value;
...
glVertexAttribI1ui isn't supported on GLES for some reason.
2019-07-02 12:51:36 -07:00
bjorn
2d6aa18069
Be a little more correct about when draw id is written;
2019-07-02 00:14:01 -07:00
bjorn
775cf5cda1
Don't accidentally draw meshes too many times;
...
Oops!
2019-07-02 00:09:43 -07:00
bjorn
44da36b610
Write draw ids at the right time (fix flicker);
2019-07-01 02:47:59 -07:00
bjorn
2fb393306c
rm skybox args;
...
They used to always be necessary, now they are almost never necessary.
2019-06-29 21:01:03 -07:00
bjorn
e3e930d6cc
Set index buffer at the right time;
...
Just a small ordering issue with previous commit.
2019-06-29 20:39:01 -07:00
bjorn
6256acfc6d
Ahhh fix everything;
...
- If you have an instanced batch, it will use the instanced mesh. That
has a drawID attribute that uses the identity buffer, which has a vertex
divisor. BUT if you only have one instance, then we won't emit an
instanced draw, and the use of a divisor'd attribute w/ a non-instanced
draw is causing mega problems on macOS.
- This also fixes observed macOS bugs like:
- Needing to have a small UBO
- Flickering at startup
- Flicker when writing to the last byte of a UBO
- etc.
- Also make the generic attribute value for lovrDrawID more correct (scalar instead of vector).
2019-06-29 20:24:36 -07:00
bjorn
afe4d8c0e3
Fix GL error with buffer unmapping;
...
This doesn't seem to fix any of the macOS rendering bugs though...
2019-06-29 20:08:31 -07:00
bjorn
4222be88b5
Use UBO for Camera matrices;
...
Ugh I don't like the "Camera" concept anymore, but I can't figure
out how to easily get rid of it. Maybe wait till displays are a thing.
2019-06-27 22:17:50 -07:00
bjorn
fa6c4a6b39
Organization;
2019-06-27 21:04:15 -07:00
bjorn
370124c88d
Batching cleanup;
...
- Rename drawMode to topology in some places.
- Batch uses DrawCommand internally to simplify stuff.
- Do less work while flushing.
- Store global head/tail cursors instead of unused per-batch cursors.
2019-06-27 20:58:42 -07:00
bjorn
779949964f
More small batching changes;
...
- Reduce number of batches to 4. Yeah it's arbitrary, will monitor.
- Just use memcmp for BatchParams. Since we're using designated initializers,
we aren't running into issues with memcmp+struct padding bits, and in the
event it does lead to false positives on some platforms, at worst we'll just
experience a harmless reduction in batching efficiency.
2019-06-27 19:05:54 -07:00
bjorn
6da17b0a91
Optimize gamma correction;
...
Currently, we gamma correct colors on every clear and every draw.
It's taking a lot of time. Instead, we'll gamma correct colors
when they're changed using lovr.graphics.setColor/setBackgroundColor.
2019-06-27 15:41:57 -07:00
bjorn
7e067da8e7
Add defaultCanvas;
...
Having a normal Canvas object that represents the backbuffer reduces
some indirection where we have to last-minute check if a Canvas is
set. It also means that all of the draw-related info that was _sometimes_
on the Canvas is now _always_ on the Canvas, which reduces the amount
of redundant information we need to provide for a draw call.
There may be some issues related to changing the width/height/stereo
of the default Canvas.
2019-06-27 15:36:51 -07:00
bjorn
26e474bcfc
Simplify Mesh handling;
...
Removes some indirection from flush (I guess moves it into batch,
not sure what's better).
2019-06-27 14:14:31 -07:00
bjorn
551dea8c86
Adjust includes;
2019-06-27 13:44:09 -07:00
bjorn
b8e63adcbf
graphics: Cleanup;
...
Make batching structs and defines private.
2019-06-27 13:38:38 -07:00
bjorn
fe21de403b
lovrGraphicsDrawMesh;
2019-06-27 13:35:43 -07:00
bjorn
b3080ae5d9
rm macos instancing hack;
...
I haven't been able to see adverse affects from it anymore. Can
always put it back if it resurfaces.
2019-06-27 13:27:43 -07:00
bjorn
39b0d2d754
graphics: Minor refactoring;
2019-06-27 13:26:39 -07:00
bjorn
297208c205
Minor cleanup to stream buffer code;
2019-06-27 13:01:04 -07:00
bjorn
052990aa47
Make some graphics structs private;
2019-06-27 01:48:35 -07:00
bjorn
2baa8d03ee
Make singlepass detection more readable;
2019-06-26 21:47:22 -07:00
bjorn
6b2de4a0a1
Temporary implementation for persistent buffer discard;
...
Should fix potential crashes with persistent buffers.
2019-06-25 19:16:08 -07:00
bjorn
312a7617c3
Fix typo in shader;
2019-06-25 19:15:11 -07:00
bjorn
09b6f74acf
Native textures: initialize mipmapCount;
2019-06-25 18:59:31 -07:00
bjorn
749774e2fc
Native texture depth must be explicitly specified;
...
To fix validation errors when attaching them to Canvases.
2019-06-25 18:57:18 -07:00
bjorn
928ccee5f1
Multiview;
2019-06-25 01:21:59 -07:00
bjorn
a691192af9
lovrBufferDiscard;
2019-06-25 01:21:59 -07:00
bjorn
5cd93b66c6
rm fence syncs;
...
They are too buggy and are not as efficient as orphaning.
2019-06-24 19:17:55 -07:00
bjorn
879c789a08
Polyfill M_PI;
...
It technically isn't part of C, which is causing problems on some systems.
2019-06-20 21:43:40 -07:00
bjorn
5881bdd5b1
Fix gpu timer array;
2019-06-20 14:44:28 -07:00
bjorn
4611b1c9a3
Add no-op standard shader;
2019-06-20 14:21:35 -07:00
bjorn
612f699aa4
Rename default shader to unlit;
2019-06-20 14:09:55 -07:00
bjorn
d856f6d592
opengl: Create default texture at startup;
...
More predictable performance, fixes an obscure bug.
2019-06-20 11:35:46 -07:00
bjorn
eb1e257209
Add new array implementation; Upgrade filesystem;
...
Filesystem:
- Uses streaming file IO.
- Uses less memory when requiring files.
- Simplifies its require path implementation.
2019-06-16 13:30:30 -07:00
bjorn
909ee1ad79
Use highp in vertex shaders on GLES;
2019-06-10 08:12:36 -07:00
bjorn
98f4365474
Add astc and dxt GraphicsFeatures;
2019-06-09 23:59:57 -07:00
bjorn
b0a7d5c122
ASTC textures;
...
I like typing numbers.
2019-06-09 09:11:29 -07:00
bjorn
d1f754d5f9
Fix Model memory leaks;
2019-06-03 08:13:42 -07:00
bjorn
06c6b172de
vec3 has 4 elements;
2019-06-03 07:20:03 -07:00
bjorn
22fe333150
Update refcounting (again);
...
- Ref struct only stores refcount now and is more general.
- Proxy stores a hash of its type name instead of an enum.
- Variants store additional information instead of using a vtable.
- Remove the concept of superclasses from the API.
- Clean up some miscellaneous includes.
2019-06-02 01:02:26 -07:00
bjorn
d2bff7d239
lovr.graphics.tick and tock;
...
Initial support for GPU timer queries.
2019-06-01 17:29:53 -07:00
bjorn
29b2420dea
Work around macOS flicker bug;
...
At this point I don't know if maybe I'm just using UBOs wrong but whatever.
2019-05-27 19:05:47 -07:00
bjorn
56f4c812ce
Small intermediate fix for models without animators;
2019-05-26 21:12:07 -07:00
bjorn
3bf08f0ca3
Add the ability to create default shaders;
...
lovr.graphics.newShader('font')
2019-05-22 18:00:02 -07:00
bjorn
db5076a100
Rename SHADER_DEFAULT to SHADER_UNLIT;
2019-05-22 16:34:57 -07:00
bjorn
698466d19c
Add missing include in animator.h;
2019-05-21 00:32:20 -07:00
bjorn
4cc154fdfa
More number conversions;
2019-05-20 20:35:07 -07:00
bjorn
df6b7fc96a
Ref is mostly private now;
...
It's really nice how objects don't need to care about how they're
allocated/managed now.
2019-05-20 15:09:06 -07:00
bjorn
57aad490ae
Start sized int conversions;
2019-05-20 14:34:03 -07:00
bjorn
67b76e08c2
Details;
2019-05-20 04:15:24 -07:00
bjorn
7645f4c014
Add core folder;
2019-05-20 02:47:33 -07:00
bjorn
a17f10e273
Add modules folder;
2019-05-19 00:38:35 -07:00