Commit Graph

204 Commits

Author SHA1 Message Date
Christof Petig
3cc88f9b1d move temp and humidity out of array, introduce different smoke types 2022-06-01 22:14:23 +02:00
Imbris
bf48bd5346 update toolchain to nightly-2021-12-19 2021-12-23 13:04:24 +01:00
Jonathan Berglin
596307c9b7 Remove unused clippy suppressions 2021-12-05 17:59:02 +00:00
Imbris
6cabd74871 Make bloom optional with a config option that is not exposed in the UI (to give artists time to refine bloom before exposing the option) 2021-08-01 18:50:38 -04:00
Dr. Dystopia
6480cbd784 Resolve all '#[allow(clippy::len_zero)]' error supressions 2021-07-17 21:49:37 +02:00
Dr. Dystopia
5cc2fc8182 Resolve all '#[allow(clippy::or_fun_call))]' error supressions 2021-07-15 13:49:59 +02:00
Imbris
2b8eaae572 Update wgpu, cleanup a bit of commented shader code, improve sprite LOD selection code 2021-06-03 00:10:06 -04:00
Imbris
8db11cce37 Use expect to document potential panic when starting a new frame recording, fix clippy warning 2021-06-03 00:10:06 -04:00
Imbris
01aa6af1fd Address various TODOs introduced in wgpu transition 2021-06-03 00:10:06 -04:00
Imbris
8403e4c483 address/remove TODOs, fix comment typos, enable wgpu/trace feature by default (So no recompile is needed to collect an API trace) 2021-06-03 00:10:06 -04:00
Imbris
2da58029b9 Make models require a non-zero amount of vertices 2021-06-03 00:10:06 -04:00
Imbris
9ec4fd5b4b Remove commented out sprite code, including the code for getting verts for sprites with a texture rather than a storage buffer 2021-06-03 00:10:06 -04:00
Imbris
d5f4a4443a Fix all clippy warnings 2021-06-03 00:10:05 -04:00
Imbris
9be424de53 Remove unused waves texture 2021-06-03 00:10:05 -04:00
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