Commit Graph

190 Commits

Author SHA1 Message Date
Imbris
93ad05d237 Fix most of the cargo check warnings 2021-06-03 00:10:05 -04:00
Imbris
77689d1420 Comment out lod depth tweaks not designed for reverse depth, convert waves image to rgba before constructing a texture, misc fix after rebase 2021-06-02 23:59:50 -04:00
Imbris
ceaa20c668 Update wgpu 2021-06-02 23:59:50 -04:00
Imbris
0e0c8fbfc8 wgpu branch rebase fixes 2021-06-02 23:59:50 -04:00
Imbris
64398f6c0a Try out using storage buffer for sprite vertices 2021-06-02 23:59:50 -04:00
Imbris
b9931588e4 Fix bugs with sprite rendering 2021-06-02 23:59:50 -04:00
Imbris
a90373604e Fix sprite vertex lookup, normalize sprite
normals in vert shader
2021-06-02 23:59:50 -04:00
Imbris
8d63446300 Almost implement instance merging for sprites (validation error), rebase
fix
2021-06-02 23:59:50 -04:00
João Capucho
f5dc871c59 Update to the most recent wgpu 2021-06-02 23:59:49 -04:00
Imbris
7a67ce87e7 Implement toggleable gpu profiling that saves the timings from a recent frame with the screenshot key, rebase fixes 2021-06-02 23:59:49 -04:00
Imbris
843529c7bb Update to latest wgpu git (around 0.7), temporarily disable shader validation due to naga bug, rebase fixes!! 2021-06-02 23:59:49 -04:00
Imbris
fce14fbaa9 Avoid extra set_pipeline calls 2021-06-02 23:59:48 -04:00
Joshua Yanovski
93568754a0 Inverse depth planes.
Also added a function that has extensive details about what the
projection options mean, and set our near plane much closer (0.25 to
0.0625) and far plane much farther (100000.25 to 524288.0625).  In the
future we may completely remove the far plane (opting for an infinite
one) and may possibly improve accuracy elsewhere using analysis of other
floating point values.
2021-06-02 23:59:48 -04:00
Joshua Yanovski
c97a42fdb7 Various fixes for shadows. 2021-06-02 23:59:48 -04:00
Capucho
23f1144fe2 Fix the shadow drawing code
Very poorly optimized
2021-06-02 23:59:48 -04:00
Capucho
b6c37be299 Re enable sprite rendering 2021-06-02 23:59:48 -04:00
Imbris
fe6cf0396f Draw water 2021-06-02 23:59:48 -04:00
Capucho
14f683d403 Fix wrong color format in col light 2021-06-02 23:59:48 -04:00
Capucho
1083d04c73 Reenable terrain rendering
Refractor col lights
2021-06-02 23:59:48 -04:00
Imbris
1e2d956106 Render the UIs 2021-06-02 23:59:47 -04:00
Imbris
124d69d7ad Render Ui 2021-06-02 23:59:45 -04:00
Imbris
d9c523ba0d Make compile through various changes, update wgpu to latest git 2021-06-02 23:56:43 -04:00
Capucho
8c3995298b More fixes 2021-06-02 23:56:43 -04:00
Capucho
8c6e43572f Switched from zerocopy to bytemuck
Fixing errors
2021-06-02 23:56:40 -04:00
Avi Weinstock
5aa98d18e3 Depend on crossbeam-utils and crossbeam-channel instead of crossbeam in voxygen. 2021-06-02 00:39:58 -04:00
Joshua Yanovski
d87225d908 Various improvements to chunk load latency.
Firstly, most importantly, improves the heuristic used for deciding
which chunks to mesh (which matters more even at low view distances
with meshing being so expensive now, but has an even more obvious
improvement at large view distances).  Essentially, instead of always
prioritizing whatever chunk was fetched earliest from the server,
instead we prioritize chunks *closest* to the player first, then chunk
order.

This greatly improves the apparent latency for things like
picking up a sprite, as well as cases where the player moves out of the
loaded range but (due to slow loading from the server or a large VD
range) there are many remaining chunks left to be meshed still within
the VD but nowhere near the player.  By properly priotizing chunks near
the player, we minimize the time / likelihood of a player being on or
very near an unmeshed chunk, and make high VDs and faster travel
speeds more viable.

We make a few other minor improvements as well:

Avoid duplicate meshing of neighbors when first inserting chunks, if
they are already in the todo list and the chunk being inserted was not
directly modified.

Also avoid remeshing neighbors if only a solid block's color changed,
which could sometimes be useful for non-sprite modifications (for
example flame-induced changes to non-destructible terrain color).
2021-05-18 17:10:29 -07:00
Joshua Yanovski
978b7232db Make meshing work properly for rapid changes.
The previous fix accidentally caused meshing to not perform an update if
a chunk was already actively meshing; this change fixes this behavior to
go back to the old behavior.  It also fixes a subtle bug where sprites
would be using old lighting if a chunk was being actively meshed on the
same tick that a sprite change happened (this should only affect things
in a handful of circumstances and could be avoided if, e.g., only color
was changing, but this can be addressed better at another time).
2021-05-18 12:43:38 -07:00
Joshua Yanovski
3869cdf1d2 Don't remesh chunk vertex data on sprite update.
This results in an extremely visually noticeable improvement in latency
when adding or removing sprite data and makes the game feel more
responsive.

This happens, for instance, when picking up a sprite like an apple or
flower from the environment.  We check to make sure that for items
with lighting (like Velorite) or changes that otherwise affect meshing
(like changing from fluid to nonfluid) this doesn't trigger.
2021-05-11 12:58:15 -07:00
Joshua Barretto
1478daecbc Prevented low FPS from limiting chunk loading performance 2021-05-10 14:23:37 +01:00
Joshua Barretto
5598d07944 Added crafting stations 2021-04-20 02:45:59 +02:00
Joshua Yanovski
1bdf3b13a8 Mesh sprites in the background.
This makes the delay afetr selecting a character before logging into the
game much shorter, in the common case.  It still doesn't handle things
perfectly (it blocks creating Terrain::new if it's not finished, and it
could be faster due to working in the background), but it's still a lot
better than it was before.

To improve sprite meshing performance, we also apply the terrain
flat_get optimizations to sprites.  Though I didn't initially know how
much of an impact it would have, it feels significantly faster to me,
though being able to parallelize it would be ideal.
2021-04-10 17:51:42 +02:00
Joshua Yanovski
866cc79d2e Enable allocation of new textures on atlas allocation failure.
This solves the problem of not being able to set the view distance too
high, especially in pathological cases like giant trees.  For
simplicity, we just freeze any atlas where allocation failed and start
allocating to a new texture and atlas, letting reference counting
destroy the old one when there are no more references to it.  Because of
the spatial locality of chunk allocations, chunks allocated together
will virtually always have similar lifetimes, so the odds of this
causing significant fragmentation are very low, meaning this simple
solution should not do much worse than a much fancier one.
2021-03-20 16:21:41 +01:00
Marcel Märtens
a286eb084a create a wrapper around rayon, slowjobpool, that spawns on rayon but drop feed it 2021-03-16 13:31:04 +01:00
Marcel Märtens
4ebfbdde0f Move Specs code to own common_ecs create, put tracy and macros into common_base 2021-03-09 00:54:01 +01:00
Joshua Barretto
911acdd9db Fixed clippy warnings and fmt 2021-03-07 14:25:07 +00:00
Joshua Barretto
862cd5fe49 fmt 2021-03-07 14:25:03 +00:00
Joshua Barretto
a229d65932 Static light improvements, fixed lighting update bug 2021-03-07 14:25:02 +00:00
Joshua Barretto
9e09c96a2a Fixed static light directionality 2021-03-07 14:25:01 +00:00
Joshua Barretto
31832e1245 Fixed wall leaking with dynamic light ambiance 2021-03-07 14:25:01 +00:00
Joshua Barretto
aabe1d7cfd Point light ambiance for less harsh shadows 2021-03-07 14:25:01 +00:00
Joshua Barretto
100cafa91b Directional baked lights for figures 2021-03-07 14:25:01 +00:00
Joshua Yanovski
2dd7089e52 Bring vek up to date so we can bump rustc (hopefully). 2021-03-04 05:46:59 +01:00
Marcel Märtens
1a7c179bbb share tokio Runtime between Client and Server, name rayon Threadpool 2021-02-22 17:35:06 +01:00
Marcel Märtens
514d5db038 Update Network Protocol
- now last digit version is compatible 0.6.0 will connect to 0.6.1
 - the TCP DATA Frames no longer contain START field, as it's not needed
 - the TCP OPENSTREAM Frames will now contain the BANDWIDTH field
 - MID is not Protocol internal

Update network
 - update API with Bandwidth

Update veloren
 - introduce better runtime and `async` things that are IO bound.
 - Remove `uvth` and instead use `tokio::runtime::Runtime::spawn_blocking`
 - remove futures_execute from client and server use tokio::runtime::Runtime instead
 - give threads a Name
2021-02-22 17:34:55 +01:00
Rotsuoy
994677a4d0 Rotsuoy/savanna grass 2021-01-23 07:46:54 +00:00
Benoît du Garreau
7b4aa6d4cc cargo fmt 2020-12-17 12:06:22 +01:00
Benoît du Garreau
0cf164f33a Use assets_manager to load assets 2020-12-17 12:06:07 +01:00
Marcel Märtens
ccb01e1898 adjust fmt and clippy after toolchain upgrade 2020-12-10 14:53:01 +01:00
Sam
33e4448542 Replaced every unnecssary powf in the entire codebase with either powi or sqrt. 2020-11-24 18:28:24 -06:00
Joshua Barretto
26fd40c0e3 Fmt, make clippy happy 2020-11-23 15:39:03 +00:00