Commit Graph

297 Commits

Author SHA1 Message Date
Imbris
308cca0dc9 Put server-cli specific settings in their own structure, serde_derive -> serde 2020-10-10 02:10:32 -04:00
Sam
47abf49751 Addressed comments 2020-09-29 20:48:23 -05:00
Sam
207586cfab Beam particles fixed/tweaked. 2020-09-29 19:48:17 -05:00
Sam
6b23af6e0b Tweaked particles. Added skill icons. 2020-09-29 19:47:58 -05:00
Sam
921d224ef6 Lifesteal now works. Added particles to healing beam. 2020-09-29 19:47:57 -05:00
Joshua Barretto
ece4a01867 Improved representation of Block for better performance, more features, and better backwards-compatibility 2020-09-20 11:46:12 +01:00
Sam
0c48efd445 Added particles dedicated for shockwave. 2020-09-19 14:40:15 -05:00
Monty Marz
5fe79e1c6a new loading screen bgs (part 1)
Add a basic random feature to char creation

loading screen bg (part 2)

loading screen changes, random button graphics
Random appearance also pick a random npc name
2020-09-18 23:17:47 +00:00
Ben Wallis
712f2e9c97 * Moved migrations to beginning of server initialisation
* Added migrations for entity ID changes to existing tables
2020-09-17 23:02:14 +00:00
Imbris
f39d1e9bb5 Use less verbose span names when the tracy feature is off 2020-09-07 00:59:16 -04:00
Imbris
50ceb1c93e Add workaround for spans with winit loop, configure filtering when the tracy feature is on, spinkle some spans in the codebase 2020-09-06 22:28:14 -04:00
Joshua Barretto
49c713a071 Merge branch 'zesterer/rtsim' into 'master'
Beehives, Fireflies, and minor worldsim/lighting adjustments

See merge request veloren/veloren!1357
2020-09-05 17:16:08 +00:00
Imbris
0b9f2a5d3b Merge branch 'sharp/default-shadows-real' into 'master'
Make shadow maps the default.

See merge request veloren/veloren!1361
2020-09-05 05:47:21 +00:00
Joshua Yanovski
a2de759296 Make shadow maps the default. 2020-09-04 16:41:08 +02:00
Joshua Barretto
032ec9ef41 Added bee hives 2020-09-04 11:48:56 +01:00
Joshua Barretto
88add8456f Added fireflies, reeds near rivers 2020-09-04 11:48:56 +01:00
Joshua Yanovski
4eeb131f4b Create (segment, offset) just once per figure. 2020-09-01 11:23:19 +02:00
Joshua Yanovski
3a96b73b2c Move figure meshing to a background thread. 2020-08-28 05:25:31 +02:00
notoria
2be4202d01 Corrected some spelling errors 2020-08-25 12:21:25 +00:00
jiminycrick
86b4dd6ba3 set shiny water to default 2020-08-23 22:58:01 -07:00
Joshua Barretto
1b80f05e82 Centred particle meshes correctly 2020-08-20 22:34:58 +01:00
Joshua Barretto
7eff8ff0ad Added lifetime particle parameter 2020-08-20 21:38:21 +01:00
Joshua Barretto
d1bbfc9960 Added BlocksOfInterest and block particle emission 2020-08-20 21:15:13 +01:00
Joshua Yanovski
2dfd3b13d1 (See sharp/lod-history) LOD, shadows, greedy meshing, new lighting, perf
---

Pretty much a Veloren fork at this point.  Here's a high level overview of the changes (will be added to CHANGELOG just before merge).

At a high level this MR incorporates roughly two groups of changes.

The first group consists of new game features: more flexible map sizes, level of detail terrain, shadow maps, and a new lighting
engine.  This is "feature work" that (mostly)  only adds new things to Veloren, and mostly shouldn't affect old stuff.

The second big group of changes are those addressing the fallout from all the new features.  These include performance fixes of
various sorts: the addition of multiple graphics options and optimization of the cheap ones to avoid work, switching all voxel
models to use some variant of greedy meshing, switching over much of our CPU-side vector math to exploit SIMD instructions
(coinciding with a fork of `vek`), and a rewrite of how the UI handles text rendering (coinciding with updates to our fork
of `conrod`).  Making Veloren's hardcoded colors appear correct under the new lighting engine also required considerably
changes (TODO: Fill in this section when it's complete).

The second category of changes often heavily touches code owned by other people, including frequently modified code "owned" by a
handful of people, so I recommend that this code be reviewed particularly carefully.

---

At a high level (each will be described in more detail below):
- The world map has been refactored.
  - The world size is no longer hardcoded (@zesterer).
  - The map generation code was made generic to allow using it outside of the `world` crate (@zesterer).
  - On world creation, we now compute *horizon maps* (@zesterer).
  - The way we pass the world from the server to the client has been updated (@xMAC94x).
  - Artifacts related to image rotation were fixed (@imbris).
  - Multiflow rivers were enabled (@zesterer).
  - In the process of making changes related to the world map, various incidental fixes and optimizations were required.
- The new *level of detail* feature was added (@zesterer wrote part of this and has checked out the rest).
  - A new LOD terrain rendering step was added to the pipeline.
  - The LOD terrain quality was made configurable via a graphics setting.
  - Horizon maps were used to cast shadows from LOD chunks on both LOD and non-LOD terrain.
  - A "voxelization" effect was incorporated into rendered LOD terrain to make it blend better into the world.
  - In the process of making changes related to LOD, various incidental fixes and optimizations were required.
- Veloren's lighting has been completely overhauled (@zesterer has already checked most of this out).
  - A semi-accurate index of refraction was assigned to our materials.
  - A new, more realistic, physically based approach to lighting was used using the *Ashikhmin Shirley* BRDF.
  - We emulate *atmospheric scattering* using equations designed for measuring solar panel light exposure.
  - We attempt to compute *realistic light attenuation* in water using its real material properties.
  - In the process of making changes related to LOD, various incidental fixes and optimizations were required.
- Point and directional lights now cast realistic shadows, using *shadow mapping.* (@imbris, @zesterer, @Treeco, @YuriMomo)
  - Point light shadow maps were added to the rendering pipeline, using geometry shaders and *seamless cube maps*.
  - Directional light shadows were added to the rendering pipeline, using LISPSM together with disabling *depth clamping*.
  - "Shadow-only" chunks and NPCs were added to prevent shadows from models behind you from disappearing.
  - In the process of making changes related to shadow maps, various incidental fixes and optimizations were required.

The addition of shadow maps, LOD terrain, and the new lighting all led to significant performance degradation, on top of other
changes happening in master.  Therefore, a large number of performance improvements were also needed:

- The graphics options were made much more flexible and configurable, and shaders were optimize.
  - New options were provided for how to render lights and shadows  (@Pfauenauge, @zesterer).
  - Graphic setting storage and configuration were overhauled to make adding new features easier (@Pfauenauge, @imbris).
  - Shaders were rewritten to utilize GLSL's preprocessor to avoid overhead (@zesterer, @YuriMomo).
  - In the process of making changes related to providing additional rendering options, various incidental fixes and optimizations were required.
- Voxel model creation was switched to use *greedy meshing.*
  - A new voxel meshing method, greedy meshing, was added (@imbris).
  - Uses of the older meshing methods were migrated to use greedy meshing (@imbris, @jshipsey, @Pfauenauge).
  - New restrictions were added to terrain, figure, and sprites to future proof them for further optimizations (@jshipsey, @Pfauenauge, @zesterer).
  - Most positions are now relative to either chunk or player position for better precision (@imbris, @zesterer, @scottc).
  - In the process of making changes related to greedy meshing, various incidental fixes and optimizations were required.
- Animation and terrain math were switched to use SIMD where possible.
  - Fixes were made to vek to make its SIMD feature usable for us (@zesterer, @imbris).
  - The interface and types used in bone animation were changed in various ways (@jshipsey, @Snowram, @Pfauenauge).
  - Redundant code generation for body animation is now partly taken care of by a macro (@jshipsey, @Snowram, @Pfauenauge).
  - Animation code was modified to to use vek's SIMD representation where possible (@jshipsey, @Snowram, @Pfauenauge).
  - Terrain meshing code and shadow map math were also modified to use vek's SIMD representation (@imbris).
  - SIMD instruction generation was enabled (@YuriMomo, @jshipsey, @Snowram, @imbris, @Angelonfira, @xMAC94x).
  - In the process of making changes related to greedy meshing, various incidental fixes and optimizations were required.
- The way we cache glyphs was completely refactored, fixed, and optimized.
  - Our fork of `conrod` was optimized in various ways (@imbris).
  - Our fork of `conrod` now exposes whether a widget was updated during the current frame (@imbris).
  - Our use of the glyph cache was rewritten for correctness (@imbris).
  - A *text cache* was introduced that lets us skip remeshing glyphs that have not changed (@imbris).
  - Various changes were made to reduce pressure on the glyph cache, with more planned (@imbris, @Pfauenauge).
  - In the process of making changes related to the glyph cache, various incidental fixes and optimizations were required.
- Colors were changed to keep Veloren's look consistent with master.
  - Some older tree models were brought back (@Pfauenauge).
  - TODO(@Sharp): All hardcoded colors were extracted and made hotloadable.
  - TODO(@Treeco, @Pfauenauge, @imbris, @jshipsey): Hardcoded colors were fixed to conform to Veloren's style.
  - TODO(@Treeco, @Pfauenauge, @imbris, @jshipsey): Color models were fixed to conform to Veloren's style.

A detailed description of the involved changes follows.

---

- The world size is no longer hardcoded.  All functions dependent on world size now take a `WorldSizeLg`, which holds the base 2 logarithm of each actual world dimension and is guaranteed to maintain certain properties (outlined in `common/src/terrain/map.rs`).  Additionally, many utility functions that utilize the world size were moved into `common` as well (mostly `common/src/terrain/mod.rs`).  Finally, the world map format was updated in order to store its size explicitly, with a migration path from the old format that should work whenever the old formatted map was a square (practically always).  See `world/src/sim/mod.rs` for these changes.
- The map generation code was made generic to allow using it outside of the `world` crate.  The parts of the map generating code that do not need to query the world were moved over to `common/src/terrain/map.rs`, allowing them to be used from the client without creating a dependency on `world`.  The rest of it was turned into helper functions in `world/src/sim/map.rs`, which can be passed as closures to the generic map generation code to complete its construction.  This also means that colors are now passed in separately to the map generation function.  See <https://veloren.net/devblog-78/> for more details.
- On world creation, we now compute *horizon maps*.  See the function in `world/src/sim/util.rs`.

  Given a height map and a plane intersecting that height map, our horizon maps allow us to encode enough information to reconstruct shadows for each point on the height map using only the *horizon angle* (the angle at which the sun starts to become visible).  As Veloren's sun only covers one plane, this is sufficient for encoding sun shadows for LOD terrain, by encoding two angles per chunk (one for each 90 degrees the sun covers).  We can also use this for the moon, if we want, since the moon follows the same path.  Additionally, we store the *height* of the furthest occluder, to try to make the shadows volumetric; so this means 4 bytes in total for each chunk.

  Support for horizon maps has been merged into the map functionality in common as well.
- The way we pass the world from the server to the client has been updated.  Rather than passing the prerendered map, we instead pass three maps with values for each chunk; one with the color information, a second with altitude information, and a third with horizon map information.  We then reconstruct the map on the client, together with some additional information we send from the server (like the sea level and maximum height).  See `common/src/msg/server.rs` for a detailed description of the format of `WorldMapMsg`, and `server/src/libr.rs` and `client/src/lib.rs` for details of the map construction and parsing.
- Artifacts related to image rotation were fixed.  See the commit message for commit SHA `cf74d55f2e3d2ae7d25fd68d5c73b01a6afde86e` for a detailed explanation.  This involved changes to shaders, the addition of a new type of graphic (also reflected in the graphic cache) that allows specifying a border color (which automatically makes the associated texture immutable), and some related fixes.  I reproduce the first two paragraphs of the MR description as well:

 ```
 Fix map image artifacts and remove unneeded allocations.

 Specifically, we address three concerns (the image stretching during
 rotation, artifacts around the image due to clamping to the nearest
 border color when the image is drawn to a larger space than the image
 itself takes up, and potential artifacts around a rotated image which
 accidentally ended up in an atlas and didn't have enough extra space to
 guarantee the rotation would work).
 ```
- Multiflow rivers were enabled.
  This does not really need to be part of this MR, and would be easy to revert, but since it seemed to provide a nice improvement it's currently packaged with it.
  We already computed multiple outflows from each chunk for erosion purposes long before this MR.
  However, we never modified river rendering to be able to handle this case (just a single downhill river flow is complex enough!) so this was not exposed when deciding which chunks were rivers.
  Now that
- In the process of making changes related to the world map, various incidental fixes and optimizations were required.  Some examples of fixes include making sure terrain is never lowered to below sea level (to make the shadow maps report correct values), fixing map altitudes and colors to understand things like cliffs and "block level" coloring (that doesn'te xist on the column level), and fixing a crashbug when rendering images for the UI where source pixels are strongly rectangular.  Some examples of related performance fixes include avoiding allocating a fresh vector for all the maps (i.e. copying it over to change the format from `[u32; n]` to `DynamicImage` and then copying again to convert to `RgbaImage`), and instead using the `gfx::memory::slice` function to accomplish the same thing.  These sorts of changes are spread all arond the code.

This includes the additon of a new scene, `voxygen/src/scene/lod.rs`, a new pipeline `voxygen/src/render/pipeline/lod_terrain.rs`, and new shaders `assets/vxygen/shaders/lod-terrain-vert.glsl` and `assets/vxygen/shaders/lod-terrain-frag.glsl`, as well as associated changes to the renderer in `voxygen/src/render/renderer.rs`.

The main idea behind our initial approach to LOD was to take the world data we now get from the server (altitude, color, and horizon mapping).

  - Some previously computed values were turned into shader uniforms for better prediction on weak processors. (@zesterer)
  - Calls to power or trig functions were removed or replaced with multiplications, where possible.
  - After some deliberation
  - To properly handle sprite "waving" for nearby sprites,

We explicitly designed the greedy meshing system with figures and sprites in mind.
In both cases, we want to be able to *efficiently* pack many different models into the same texture, especially in cases where we know
we will either not be removing any of the grouped-together from the models from the texture, or will remove all of them at once (so
they can be packed into some specific subtexture).
For sprites, since we know every model in advance and never intend to deallocate them, we currently pack them all as efficiently as
possible into one giant tetxure atlas.  However, in the future we might opt to pack them slightly less efficiently in exchange for
shrinking the sprite vertex size.
For figures, we pack all the textures for each *model* into the same atlas.
is a global texture atlas used for every sprite, and for figures which is why we have the ability to mesh multiple
models to the same texture area (using the simple texture atlas allocator) without requiring intermediate vector allocations.
This is accomplished by delaying the time when we actually write the color and light data to the texture until *after* all the
model vertices have been meshed; then, we can just allocate the whole color/light array at once, making the atlas we use an
exact fit.  In computer science-y terms, we accomplish this delay by, after we perform the initial greedy meshing (without
texture information), not continuing to create the texture data, but instead constructing a *continuation*--that is, a function
that, when called, will execute the rest of the computation.  We push this continuation (which in Rust terms is a `FnOnce` closure
that takes the `ColLightsInfo` that it is supposed to write to as context) onto a

onto a vector

resizing.  To allow for suspended writes to texture data, Rust pointed out to me that the continuation that would eventually write the color and light data to the texture atlas (the one that is shared by all models sharing the same greedy mesher) would have to *own* whatever data it mshed.  Because we often generate the model data to mesh as a temporary in `voxygen/src/load.rs`, the

  - Matrix multiplications in the shader were reduced for figure data (@zesterer).
  - Vertex "waves" for fluid data were removed.
  - Terrain "bending" near edges was removed.
  - Scaling was fixed to make sure empty space was not introduced in a space previously occupied by a block.  It was also changed to take ownership of its voxel data,
    rather than sharing it, to let it be used with meshing.
  - Rust's nightly version was bumped in order to use the `array_map` function, which lets us reuse more code between the simple map and `FigureModelCache`.

- PositionedGlyph::standalone.

---

I tried to cite sources in many cases[^realtime],[^lloyd],[^lispsm],[^pbrt],[^greedy],[^tjunctions]
where I needed features from elsewhere but I am particularly grateful for the following resources,
esepcially where they have accompanying source code.  I linked all of them that are accessible to the public (those that are not were
obtained through legal means).

[^realtime]: Eisemann, Elmar, Michael Schwarz, Ulf Assarsson, Michael Wimmer. Real-Time Shadows. A K Peters/CRC Press (T&F), 20160419.
[^lloyd]: Lloyd,B. 2007. [Logarithmic perspective shadow maps](http://gamma.cs.unc.edu/papers/documents/dissertations/lloyd07.pdf). PhD thesis, University of North Carolina.
[^lispsm]: Wimmer, M., Scherzer, D., and Purgathofer, W. 2004. [Light space perspective shadow maps](http://gamma.cs.unc.edu/papers/documents/dissertations/lloyd07.pdf). In Proceedings of Eurographics Symposium on Rendering 2004, pp. 143– 152.

[^pbrt]: Pharr, Matt, et al. [http://gamma.cs.unc.edu/papers/documents/dissertations/lloyd07.pdf](Physically Based Rendering: From Theory to Implementation). Third edition, Morgan Kaufmann Publishers/Elsevier, 2017.
[^greedy]: mikolalysenko. “Meshing in a Minecraft Game.” 0 FPS, 30 June 2012, <https://0fps.net/2012/06/30/meshing-in-a-minecraft-game/>.
[^tjunctions]: blackflux. “Meshing in Voxel Engines – Part 1.” Blackflux.Com, 23 Feb. 2014, <https://blackflux.wordpress.com/2014/02/23/meshing-in-voxel-engines-part-1/>.

I am also especially grateful to Khronos, Wikiepdia, and stackoverflow for answering many of my specific questions while writing the MR.

---

Squashed commit of the following:

commit 300505e730
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 18:46:25 2020 +0200

    Fixing cargo doc and typo in CHANGELOG.

commit ec0aeb18e8
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 15:38:50 2020 +0200

    Hopefully final commit for the LOD branch.

commit 5e8ea0b1ea
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 10:14:26 2020 +0200

    Falling back to power as stopgap.

commit e44a1cbf46
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 09:25:41 2020 +0200

    Address imbris feedback.

    Temporarily disables shiny water, lowers max VD.

    These restrictions will be lifted soon after merging.

commit 561e25778a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 08:31:13 2020 +0200

    Tweaking shaders a bit.

commit 7d19259078
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 07:59:43 2020 +0200

    Fix view example as well.

commit 051cd4934e
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 07:29:06 2020 +0200

    Fix meshing benchmark.

commit c95e07db3b
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 05:46:22 2020 +0200

    Address MR feedback, fix scene clouds.

commit 1bfb816cab
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 04:39:36 2020 +0200

    Incorporating Pfau's figure color changes.

    New eyes and new humanoid colors.

commit 3f9b89a3ac
Merge: e2f5162e4 62c53963a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 04:29:41 2020 +0200

    Merge remote-tracking branch 'origin/sharp/small-fixes' into sharp/small-fixes

commit e2f5162e4f
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 20 04:28:38 2020 +0200

    World colors are all hotloadable.

    They live in assets/world/style/colors.ron.

    Only a small handful of hardcoed colors remain in World; they are either
    part of the map, or difficult to disentangle from the rest of the
    computation.  Comments are made where appropriate.

commit 62c53963ab
Author: Marcel Märtens <marcel.cochem@googlemail.com>
Date:   Wed Aug 19 15:59:00 2020 +0200

    replace pretty_env_logger with tracing

commit 5b1625f99d
Merge: d71003acd 4942b5b39
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Aug 19 05:15:56 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit d71003acda
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Aug 19 05:14:34 2020 +0200

    Hotloading colors, part 1: colors in common.

    Currently, this just entails humanoid colors.  There are only three
    colors not handled; the light emitter colors in
    common/src/comp/inventory/item/tool.rs.  These don't seem important
    enough to me to warrant making hotloadable, at least not right now, but
    if it's needed later we can always add them to the file.

commit 63b5e0e553
Merge: c32b337a4 6d2c4b9c1
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Aug 17 13:05:37 2020 +0200

    Merge remote-tracking branch 'origin/master' into sharp/small-fixes

commit c32b337a46
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Aug 17 05:52:04 2020 +0200

    Fixing LOD grid, for real.

commit a166ae0360
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Aug 17 05:28:05 2020 +0200

    Addressing imbris's initial feedback.

    Fixes two minor bugs: explosion particles were no longer spawning
    randomly, and LOD grids were not perfectly even.

commit 4cbad004f4
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun Aug 16 19:27:58 2020 +0200

    Bumping nightly per request.

commit 548680276a
Merge: acc098604 8f8b20c91
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun Aug 16 19:26:06 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit acc0986040
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Aug 15 22:28:32 2020 +0200

    Lower resolution due to lying drivers.

commit d3b878de2a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Aug 15 22:15:38 2020 +0200

    Fix issues msh encountered with Intel 4600.

commit 10245e0c1b
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Aug 15 21:15:02 2020 +0200

    Merge more models into one mesh than we did previously.

commit 3155c31e66
Merge: 7204cc8a7 3c199280e
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 13 22:35:22 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 7204cc8a7a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 13 22:34:43 2020 +0200

    Fix not yet done NPC animations.

    This forces them all to be the idle animation if not specified.

    This fixes issues where you'd have giant NPCs in water.

commit bc83360f2a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 13 19:36:37 2020 +0200

    Try to fix some bugs:

    - Z fighting with LOD terrain and water.
    - Audio SFX not playing.

commit 1fd104aa60
Merge: 862df3c99 7c2c392a3
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 13 12:02:31 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 862df3c997
Merge: 0a4218ed9 75c1d4401
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 13 05:52:56 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 0a4218ed9d
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Aug 12 22:27:14 2020 +0200

    Fix particle depth.

commit f51dfdeb44
Merge: c6251a956 5e6dc0471
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Aug 12 20:19:04 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit c6251a956a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Aug 12 20:15:46 2020 +0200

    Cache figures more intelligently.

    Cache figures for longer, and don't cache character states for the
    player except where they actually affect the rendered model.

commit 0ed801d540
Merge: c11b9bdf0 eea64f78f
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Aug 12 16:32:24 2020 +0200

    Merge remote-tracking branch 'origin/master' into sharp/small-fixes

commit c11b9bdf0a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Aug 12 11:47:15 2020 +0200

    Remove unneeded Clippy annotation.

commit 16aa9ef40a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Aug 8 00:53:02 2020 +0200

    Fix hotloading and Clippy.

commit 3dc973e0be
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Aug 7 23:50:27 2020 +0200

    Major speedups with SIMD.

commit fba64a7d93
Merge: 76429d00e d1e10b178
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Aug 7 13:23:19 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 76429d00ee
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Aug 7 13:23:10 2020 +0200

    Add clippy.toml.

commit c79f512f84
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Aug 7 11:55:20 2020 +0200

    Fix all clippy issues, clean up Rust code.

commit 6f90e010b3
Merge: 77a8c7c26 5929cfa5c
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Aug 7 06:47:30 2020 +0200

    Merge remote-tracking branch 'origin/sharp/small-fixes' into sharp/small-fixes

commit 77a8c7c267
Merge: b44e44232 44febaabd
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Aug 7 06:47:10 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 5929cfa5c7
Author: jshipsey <jshipsey18@gmail.com>
Date:   Thu Aug 6 20:47:27 2020 -0400

    fixed in-hand arrow bug

commit b44e442325
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Aug 6 13:40:35 2020 +0200

    Miscellaneous performance improvements.

commit be37acf287
Merge: 125d7fc6c c11876547
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Aug 3 05:49:27 2020 +0200

    Merge remote-tracking branch 'origin/master' into sharp/small-fixes

commit 125d7fc6c4
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Aug 3 04:55:31 2020 +0200

    Abstract over simd vs. repr_c vectors.

    Also some minor improvements to Event size.

commit d4d4956e92
Merge: 5f3b7294a aced5f979
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun Aug 2 20:56:54 2020 +0200

    Merge remote-tracking branch 'origin/master' into sharp/small-fixes

commit 5f3b7294af
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun Aug 2 20:43:52 2020 +0200

    Fix formatting issues I missed before.

commit a428a3ebba
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun Aug 2 20:41:51 2020 +0200

    Fix clippy warnings, part 1.

    There aer still a bunch of type too complex and
    function takes too many arguments warnings that I'll fix later
    (or ignore, since in the one case I did fix a function takes too
    many arguments warning I think it made the code *less* readable).

commit ba54307540
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Jul 30 13:22:42 2020 +0200

    Fix light animations so they are removed when the light turns off.

commit 7e0f4bcbf0
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Jul 29 21:10:20 2020 +0200

    Fix crash in edge case for pixel art.

commit 56da06f7a3
Merge: cf74d55f2 9f53a4a19
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Jul 29 18:56:52 2020 +0200

    Merge remote-tracking branch 'origin/master' into sharp/small-fixes

commit cf74d55f2e
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Jul 29 18:29:52 2020 +0200

    Fix map image artifacts and remove unneeded allocations.

    Specifically, we address three concerns (the image stretching during
    rotation, artifacts around the image due to clamping to the nearest
    border color when the image is drawn to a larger space than the image
    itself takes up, and potential artifacts around a rotated image which
    accidentally ended up in an atlas and didn't have enough extra space to
    guarantee the rotation would work).

    The first concern was addressed by fixing the dimensions of the map
    images drawn from the UI (so that we always use a square source
    rectangle, rather than a rectangular one according to the dimensions of
    the map).  We also fixed the way rotation was done in the fragment
    shader for north-facing sources to make it properly handle aspect ratio
    (this was already done for north-facing targets).  Together, these fix
    rendering issues peculiar to rectangular maps.

    The second and third concerns were jointly addressed by adding an
    optional border color to every 2D image drawn by the UI.  This turns
    out not to waste extra space even though we hold a full f32 color
    (to avoid an extra dependency on gfx's PackedColor), since voxel
    images already take up more space than Optiion<[f32; 4]> requires.
    This is then implemented automatically using the "border color"
    wrapping method in the attached sampler.

    Since this is implemented in graphics hardware, it only works (at
    least naively) if the actual image bounds match the texture bounds.
    Therefore, we altered the way the graphics cache stores images
    with a border color to guarantee that they are always in their own
    texture, whose size exactly matches their extent.  Since the easiest
    currently exposed way to set a border color is to do so for an
    immutable texture, we went a bit further and added a new "immutable"
    texture storage type used for these cases; currently, it is always
    and automatically used only when there is a specified border color,
    but in theory there's no reason we couldn't provide immutable-only
    images that use the default wrapping mdoe (though clamp to border
    is admittedly not a great default).

    To fix the maps case specifically, we set the border color to a
    translucent version of the ocean border color.  This may need
    tweaking going forward, which shouldn't be hard.

    As part of this process, we had to modify graphics replacement to
    make sure immutable images are *removed* when invalidated, rather
    than just having a validity flag unset (this is normally done by
    the UI to try to reuse allocations in place if images are updated
    in benign ways, since the texture atlases used for Ui do not
    support deallocation; currently this is only used for item images,
    so there should be no overlap with immutable image replacement,
    so this was purely precautionary).

    Since we were already touching the relevant code, we also updated
    the image dependency to a newer version that provides more ways
    to avoid allocations, and made a few other changes that should
    hopefully eliminate redundant most of the intermediate buffer
    allocations we were performing for what should be zero-cost
    conversions.  This may slightly improve performance in some
    cases.

commit ad18ce9399
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Tue Jul 28 13:21:09 2020 +0200

    Fix continent scale hack.

commit 36b1cb074f
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Tue Jul 28 12:11:40 2020 +0200

    Enable loading different sized maps without a recompile.

    We may want to tweak the effects of the continent_scale_hack.

commit 13b6d4d534
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Tue Jul 28 10:55:48 2020 +0200

    Removing WORLD_SIZE, part 1.

    Erased almost every instance of WORLD_SIZE and replaced it with a local
    power of two, map_size_lg (which respects certain invariants; see
    common/src/terrain/map.rs for more details about MapSizeLg).  This also
    means we can avoid a dependency on the world crate from client, as
    desired.

    Now that the rest of the code is not expecting a fixed WORLD_SIZE, the
    next step is to arrange for maps to store their world size, and to use
    that world size as a basis prior to loading the map (as well, probably,
    as prior to configuring some of the noise functions).

commit 30b1d2c642
Merge: 7d56ba31b 1377b369f
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Jul 27 13:16:58 2020 +0200

    Merge remote-tracking branch 'origin/sharp/small-fixes' into sharp/small-fixes

commit 7d56ba31b4
Merge: 2101113b4 598f14b25
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Jul 27 13:16:27 2020 +0200

    Merge remote-tracking branch 'origin/master' into sharp/small-fixes

commit 1377b369f6
Author: Monty Marz <m.marzouq@gmx.de>
Date:   Sun Jul 19 23:25:38 2020 +0200

    more saturated pumpkins

commit ae8d50527f
Author: Monty Marz <m.marzouq@gmx.de>
Date:   Sat Jul 18 20:29:56 2020 +0200

    acacia models

commit 2101113b46
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Jul 18 18:55:25 2020 +0200

    Higher detail LOD.

commit add2cfae04
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Jul 16 01:57:39 2020 +0200

    Revert some irrelevant stuff.

commit 2e2ab3dc1e
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Jul 15 13:30:49 2020 +0200

    Fixing various things about shadows.

    * Correcting optimal LISPSM parameter.
    * Figure shadows are cast when they're not visible.
    * Chunk shadows stay cast until you look away.
    * Seamless cubemaps for point lights.
    * Etc.

commit 6c31e6b562
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun Jul 12 19:50:26 2020 +0200

    Fix shadow creation.

commit 6332cbe006
Merge: be438657c 930e0028b
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun Jul 12 18:47:00 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit be438657c3
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun Jul 12 18:28:08 2020 +0200

    Tweaks to shadows.

    Added shadow map resolution configuration, added seamless cubemaps,
    documented all existing rendering options, and fixed a few Clippy
    errors.

commit 23b4058906
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Jul 8 10:11:19 2020 +0200

    Fix moon, use nonlinear noise for terrain.

    Note that the latter has a bit of performance cost.

commit 7fbe5cbfbb
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Jul 8 02:23:02 2020 +0200

    Address lies about max texture size.

commit bcfc62b5e1
Merge: 75e3626a7 18a08e8fe
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Jul 8 02:22:08 2020 +0200

    Merge remote-tracking branch 'origin/sharp/small-fixes' into sharp/small-fixes

commit 75e3626a78
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Jul 8 02:21:52 2020 +0200

    OpenGL 3.3 minimum.

commit 18a08e8fe2
Author: Monty Marz <m.marzouq@gmx.de>
Date:   Tue Jul 7 23:57:52 2020 +0200

    settings localization

commit 90c5d1ca36
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Tue Jul 7 21:11:48 2020 +0200

    Lower near distance.

commit 0e66f02b25
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Tue Jul 7 20:09:01 2020 +0200

    All sprites sway in the wind now.

commit db1401a691
Merge: 69e508d8c e8b4b29d7
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Tue Jul 7 19:34:17 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 69e508d8c9
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Tue Jul 7 18:41:37 2020 +0200

    Make it easy to switch to SIMD for math.

commit ffe0f5928c
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Jul 4 21:21:12 2020 +0200

    Fix some issues with underwater rendering.

commit bfda6da42f
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Jul 4 19:17:59 2020 +0200

    Fix some minor display issues.

commit 0ed752e087
Merge: ccc6a06a8 518edcb85
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Jul 4 18:14:21 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit ccc6a06a8d
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Jul 4 18:04:34 2020 +0200

    Some minor changes.

commit 4e02024670
Merge: 50a64d927 e05c9267a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Jul 4 16:17:40 2020 +0200

    Merge remote-tracking branch 'origin/master' into sharp/small-fixes

commit 50a64d927e
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Jul 4 13:07:03 2020 +0200

    Fix far plane.

commit 7dd06da34c
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Jul 2 22:25:35 2020 +0200

    Add shadows.glsl.

commit 618a18c998
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Jul 2 22:10:22 2020 +0200

    Adding shadows, greedy meshing, and more.

commit eaea83fe6a
Merge: 267018495 2f89b863e
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu May 21 22:47:07 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 2670184954
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu May 21 21:20:01 2020 +0200

    Make civsim and sites deterministic.

    For anything in worldgen where you use a HashMap, *please* think
    carefully about which hasher you are going to use!  This is
    especially true if (for some reason) you are depending on hashmap
    iteration order remaining stable for some aspect of worldgen.

commit f8376fd5dc
Merge: 654f7e049 cdee191dd
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu May 21 17:53:57 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 654f7e0492
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed May 20 21:22:30 2020 +0200

    Correct backface culling.

commit 560501df05
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Tue May 19 17:22:06 2020 +0200

    Greedy messhing for shadows.

commit a4d87e1875
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun May 17 05:59:00 2020 +0200

    Shadow maps work for lantern.

commit 243d0837b8
Merge: 04382dc28 71dd520cd
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri May 15 14:53:13 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 04382dc286
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri May 15 14:22:17 2020 +0200

    WIP: better graphics config, better LOD, shadow maps.

commit 22ddbad3eb
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat May 2 18:54:09 2020 +0200

    Minor shader fixes.

commit 746a10e8d0
Merge: 0f4a0e763 40ab94673
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat May 2 04:02:09 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 0f4a0e763d
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri May 1 23:03:24 2020 +0200

    Switch back to pop-in terrain.

commit dd74fa7e4a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri May 1 22:58:55 2020 +0200

    LOD shading closer to voxel shading.

commit ef67bd58ba
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Tue Apr 28 20:49:03 2020 +0200

    Experimental underwater lighting.

commit 2c5ad9d076
Merge: 748279835 303967a6f
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Apr 27 22:35:24 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 7482798354
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Apr 27 21:59:55 2020 +0200

    Replace discard in figure-frag.

commit d83b4ae69b
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Apr 27 18:45:57 2020 +0200

    Fix sprite lighting, HDR from focus_pos.

commit 0594238004
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Apr 27 18:14:10 2020 +0200

    Proper HDR from point lights.

commit 48c93d2b41
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Apr 27 14:01:43 2020 +0200

    Brighter ambiance, darker LOD shadows.

commit e0452e895c
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Apr 27 13:13:23 2020 +0200

    More proper HDR.

commit 4c6da3ed16
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Apr 27 00:13:10 2020 +0200

    Trying LOD noise.

commit 682a3d74c8
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun Apr 26 23:11:08 2020 +0200

    Fix LOD heights in towns.

commit cc39e5734e
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sun Apr 26 21:01:23 2020 +0200

    More LOD fixes.

commit 8116b21c2e
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Apr 25 23:54:43 2020 +0200

    I like this coloring.

commit bc2560ea90
Merge: 14effdd5d e690efe71
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Apr 25 23:48:33 2020 +0200

    Merge remote-tracking branch 'origin/master' into sharp/small-fixes

commit 14effdd5db
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Apr 25 22:24:35 2020 +0200

    Re-saturate.

commit 48a643955d
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Apr 25 22:23:57 2020 +0200

    Various fixes.

commit f7b497a0c2
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Apr 25 03:22:49 2020 +0200

    Render figures again.

commit 44e4aad48d
Merge: e6f0a5a98 9ec319a18
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Apr 25 02:01:04 2020 +0200

    Merge remote-tracking branch 'origin/master' into sharp/small-fixes

commit e6f0a5a981
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Apr 24 16:12:20 2020 +0200

    Add atmospheric scattering.

commit f2953087f6
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Apr 23 00:01:20 2020 +0200

    Fix shadowing for specular reflections.

commit ddd4a67a97
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Wed Apr 22 22:56:12 2020 +0200

    HDR fixes.

commit 1015e60dee
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Tue Apr 21 18:25:19 2020 +0200

    More lighting changes.

commit 80c264abd1
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Mon Apr 13 00:29:59 2020 +0200

    Lighting experiments.

commit 8414987e58
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Apr 9 02:38:40 2020 +0200

    WIP -- lighting changes and soft shadows.

commit 9cd2b3fb0d
Merge: c7ea687eb 8b149ad11
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Apr 4 02:33:29 2020 +0200

    Merge branch 'sharp/new-lighting' into sharp/small-fixes

commit c7ea687ebb
Merge: 476441531 22f3319b4
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Apr 4 02:33:02 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/small-fixes

commit 8b149ad11a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Sat Apr 4 02:32:39 2020 +0200

    Trying out a new lighting model.

commit b0ac9f36f7
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Apr 3 07:56:11 2020 +0200

    Use bicubic interpolation for terrain.

commit f6fc9307a1
Merge: 33140a295 22f3319b4
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Apr 3 05:01:41 2020 +0200

    Merge remote-tracking branch 'origin/master' into zesterer/lod

commit 4764415312
Merge: ed2d0111d 13388ee6a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Apr 3 04:54:48 2020 +0200

    Merge branch 'sharp/map-colors' into sharp/small-fixes

commit 13388ee6a4
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Apr 2 20:30:08 2020 +0200

    Various fixes (to coloring and to soft shadows).

commit fbd084a94a
Merge: 5a089863b 4fdf6896a
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Apr 2 18:50:38 2020 +0200

    Merge branch 'master' of gitlab.com:veloren/veloren into sharp/map-colors

commit ed2d0111d9
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Apr 2 06:49:27 2020 +0200

    Combining colors and LOD.

commit 88342640c6
Merge: 33140a295 5a089863b
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Apr 2 04:49:20 2020 +0200

    Merge branch 'sharp/map-colors' into sharp/small-fixes

commit 33140a2951
Merge: 4c65a5aed f34d4b379
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Apr 2 04:36:21 2020 +0200

    Merge remote-tracking branch 'origin/master' into zesterer/lod

commit 5a089863be
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Apr 2 03:17:49 2020 +0200

    Making maps brighter.

    This is probably not the right way to do it, but oh well!

commit 32b2c99109
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Thu Apr 2 02:46:36 2020 +0200

    Horizon mapping and "layered" map generation.

    Horizon mapping is a method of shadow mapping specific to height maps.
    It can handle any angle between 0 and 90 degrees from the ground, as
    long as know the horizontal direction in advance, by remembering only a
    single angle (the "horizon angle" of the shadow map).  More is explained
    in common/src/msg/server.rs.  We also remember the approximate height of
    the largest occluder, to try to be able to generate soft shadows and
    create a vertical position where the shadows can't go higher.

    Additionally, map generation has been reworked.  Instead of computing
    everything from explicit samples, we pass in sampling functions that
    return exactly what the map generator needs.  This allows us to cleanly
    separate the way we sample things like altitudes and colors from the map
    generation process.  We exploit this to generate maps *partially* on the
    server (with colors and rivers, but not shading).  We can then send the
    partially completed map to the client, which can combine it with shadow
    information to generate the final map.  This is useful for two reasons:
    first, it makes sure the client can apply shadow information by itself,
    and second, it lets us pass the unshaded map for use with level of
    detail functionality.

    For similar reasons, river generation is split
    out into its own layer, but for now we opt to still generate rivers on
    the server (since the river wire format is more complicated to compress
    and may require some extra work to make sure we have enough precision to
    draw rivers well enough for LoD).

    Finally, the mostly ad-hoc lighting we were performing has been (mostly)
    replaced with explicit Phong reflection shading (including specular
    highlights).  Regularizing this seems useful and helps clarify the
    "meaning" of the various light intensities, and helps us keep a more
    physically plausible basis.  However, its interaction with soft shadows
    is still imperfect, and it's not yet clear to me what we need to do to
    turn this into something useful for LoD.

commit f8926a5737
Merge: a1aee931e 875ae6ced
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Mar 13 13:32:42 2020 +0100

    Merge remote-tracking branch 'origin/master' into sharp/map-colors

commit 4c65a5aed3
Author: Treeco <5021038-Treeco@users.noreply.gitlab.com>
Date:   Mon Feb 24 16:48:05 2020 +0000

    Made LOD setting slider exponential

commit 2fa7b2d20d
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Mon Feb 24 17:49:53 2020 +0000

    Added mist to LoD

commit aab059a450
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Mon Feb 24 15:14:06 2020 +0000

    Added LoD slider

commit 779c36b538
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Mon Feb 24 12:54:55 2020 +0000

    Reduced cost of vertex pushing

commit 9fea150473
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Mon Feb 24 12:38:53 2020 +0000

    Fixed maths, improved LoD resolution

commit 5481df38fe
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Mon Feb 24 11:22:50 2020 +0000

    Dynamically relocate LoD vertices to enhance details

commit a3e36a50ab
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Sun Feb 23 18:13:51 2020 +0000

    Simpler terrain spiral rendering

commit 255f450ae9
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Sun Feb 23 16:53:17 2020 +0000

    Better LoD precision

commit 3d027aebe8
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Sun Feb 23 16:04:03 2020 +0000

    Better falloff

commit be775c9484
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Sun Feb 23 15:30:45 2020 +0000

    Applied good ideas from experimental branch

commit 58587b6854
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Fri Feb 21 16:15:13 2020 +0000

    Minor fixes to LoD merging

commit 7b42aebd70
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Fri Feb 21 15:04:44 2020 +0000

    Capped LoD dragging

commit 8aafc559f8
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Fri Feb 21 14:54:37 2020 +0000

    Better blending between LoD and terrain border

commit edd3455d51
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Fri Feb 21 14:40:19 2020 +0000

    Fixed LoD z depth, added sea level offset

commit b9b0674462
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Fri Feb 21 14:27:43 2020 +0000

    Better LoD smoothing

commit a1aee931e7
Author: Joshua Yanovski <pythonesque@gmail.com>
Date:   Fri Feb 21 14:52:17 2020 +0100

    Adding shadows.

commit 2400786c13
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Fri Feb 21 13:48:40 2020 +0000

    Use world map as LoD source

commit dbf650f504
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Mon Jan 20 00:48:14 2020 +0000

    Better clouds at distance

commit 5e6f81b86c
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Sun Jan 19 23:59:02 2020 +0000

    sync

commit 745e7540dd
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Fri Nov 22 12:40:48 2019 +0000

    Improved cloud falloff mist, faster noise sampling

commit f6a200d0cb
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Fri Nov 22 10:09:00 2019 +0000

    Improved long-range depth precision, removed unnecessary LoD polygons

commit 63d1b2bb22
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Thu Nov 21 20:57:46 2019 +0000

    Working LoD shader

commit f13d98ee3e
Author: Joshua Barretto <joshua.s.barretto@gmail.com>
Date:   Thu Nov 21 11:03:40 2019 +0000

    LoD first attempt (stack overflow issue)
2020-08-20 20:34:59 +02:00
Monty Marz
6789b7ae27 Add firework hues 2020-08-12 22:29:06 +08:00
scott-c
dd1e89a691 Implement particle heartbeat scheduler 2020-08-08 19:26:52 +08:00
Joshua Barretto
a924f9694d Explosion sound and event lights 2020-08-08 19:26:52 +08:00
scott-c
5ba4d26821 Update changelog 2020-08-08 19:25:29 +08:00
scott-c
5acfe44cbb Add toggle particles graphics setting 2020-08-08 19:25:01 +08:00
scott-c
bb2a5c885b Add fireball and bomb particle effects 2020-08-08 19:25:00 +08:00
scott-c
4bc373a832 remove particle emitter component 2020-08-08 19:25:00 +08:00
scott-c
803677f0fb Add particle velocity and ability particle emitter 2020-08-08 19:25:00 +08:00
scott-c
39b676cd8f Add ParticleMgr 2020-08-08 19:24:55 +08:00
scott-c
7e35617f59 Add particle pipeline 2020-08-08 19:24:25 +08:00
Ben Wallis
a9be045cb8 Fixed suppressed clippy warnings for #587 - useless_conversion 2020-07-13 20:57:13 +01:00
Shane Handley
304e06cbce Fix clippy warnings after toolchain update 2020-06-23 16:52:04 +10:00
Marcel Märtens
9485b45e70 switch to tracing stlye and enhance logs with usefull information
- Updated CHANGELOG
- reduce dependencies
- found out that we have alot of duplicate coding... alot...
2020-06-22 09:53:15 +02:00
Kevin Glasson
af3af6c169 Convert voxygen to use tracing
There are several noteable changes in this commit that mean that logging
will behave differently to how it did previously.

- There are now no separate filter levels for terminal and file output.
This is a feature that is lacking in `tracing` but is set to be resolved
by https://github.com/tokio-rs/tracing/pull/508. At which point we MAY
include it.

- The default log level was previously `WARN` - it is now `INFO`.
2020-06-21 23:17:25 +08:00
Imbris
d00e88b804 Hotreload animations using libloading 2020-06-19 00:48:19 -04:00
Imbris
fb47115695 Merge branch 'xvar/clippy-fixes-redundant_closure_found' into 'master'
Fixed suppressed clippy warnings for #587 - redundant_closure

See merge request veloren/veloren!1065
2020-06-14 16:33:04 +00:00
Ben Wallis
4d6c553b1b Fixed suppressed clippy warnings for #587 - redundant_closure 2020-06-12 20:47:22 +01:00
Ben Wallis
8ed2109bcf Fixed suppressed clippy warnings for #587 - collapsible_if 2020-06-12 20:34:54 +01:00
Ben Wallis
967fd9280b Fixed suppressed clippy warnings for #587 - many_single_char_names 2020-06-11 20:07:46 +01:00
Ben Wallis
950c62efc6 Suppressed all existing clippy warnings in preparation for fixes as part of #587 2020-06-10 22:01:42 +01:00
Joshua Barretto
1e91f7a0ab Added 1 extra bit per figure vertex position component, resolved char screen bug 2020-04-29 15:22:08 +01:00
Marcel Märtens
83af40a460 Allow for 0.5 offsets in figures 2020-04-29 14:10:46 +02:00
Joshua Barretto
8e95444d85 Made GPU bone updates more conservative for moar fps 2020-04-25 21:44:23 +01:00
Joshua Barretto
7208b37dc5 Squashed figure vertices for better performance 2020-04-25 21:44:23 +01:00
Joshua Barretto
37301706d4 Reduced size of terrain sprite vertices 2020-04-25 21:44:23 +01:00
Joshua Barretto
c05f4fe009 Added configurable sprite view distance, minor bug fixes 2020-04-25 21:44:23 +01:00
Joshua Barretto
444f2ecb45 Made /waypoint admin-only, MR cleanup 2020-04-23 18:19:41 +01:00
Joshua Barretto
431b2ae07b Fixed window mask layering, fmt 2020-04-23 18:19:41 +01:00
Joshua Barretto
a9adebcab3 Improved rendering performance with smarter meshing order 2020-04-23 18:19:41 +01:00
Joshua Barretto
6448c17110 Fixed sprite AO, overhauled entity spawning, better enemy spawning in dungeons, made agents more skilled at combat 2020-04-23 18:19:41 +01:00
Joshua Barretto
e3ebdc56b3 Fixed figure AO (still need to do sprite AO), added more control over NPC spawning, loot in dungeons 2020-04-23 18:19:41 +01:00
Joshua Barretto
c4879e991d Enabled AO in darkness, better light attenuation 2020-04-23 18:19:41 +01:00
Joshua Barretto
568a8ab87c Increased block rendering altitude range 2020-04-23 18:19:41 +01:00
Capucho
a21ae27a77 Add player transparency and silhouette 2020-04-04 19:36:55 +00:00
Treeco
abe47d8621 Gamma setting now works 2020-02-17 00:46:31 +00:00
Monty Marz
93d7c67cdc Hack to allow minimap rotation.
Currently it just always rotates towards the camera, but it wouldn't be
hard to create a config option that swaps out the rotation of the
indicator and the map.
2020-02-06 17:34:32 +00:00
Marcel Märtens
dae31ae5b6 apply new rustfmt - touching alot of files 2020-02-01 21:39:39 +01:00
Joshua Barretto
8e7a8aa4f9 Shader optimisations 2020-01-21 12:58:20 +00:00
Imbris
9d6bf66a32 Add options to turn off the clouds and to render ugly water 2020-01-19 14:05:31 -05:00
Monty Marz
851d7858e6 Scrolling Combat Text (SCT) 2020-01-10 00:33:38 +00:00
Yusuf Bera Ertan
fd9cc76786 Reimplement #210 2020-01-07 18:40:45 +03:00
Joshua Barretto
9993a4c81a Smoother water at distance, fixed warnings 2019-11-19 19:22:56 +00:00
Joshua Barretto
28e625635f Split terrain rendering to avoid redrawing skybox 2019-11-19 19:09:22 +00:00
Joshua Barretto
aa111d34e5 Added clouds 2019-11-19 19:09:22 +00:00
Joshua Barretto
04c64dc122 Better (and faster) water shaders 2019-10-17 17:11:55 +01:00
Imbris
799e962663 AA mode UI improvements 2019-09-26 23:46:49 -04:00
Imbris
a3daa6065a Add aa modes, with ui interface to switch 2019-09-26 23:14:27 -04:00
Imbris
432e828517 Add MSAAx4 2019-09-26 23:14:27 -04:00
Joshua Barretto
bef4f11536 Added sprite selection 2019-09-26 11:43:03 +01:00
Joshua Barretto
499344ccab Added entity shadows 2019-09-26 00:15:07 +01:00
Joshua Barretto
46fdc87014 Animated chunk loading 2019-09-26 00:15:07 +01:00
Imbris
e9bedf529d Pixel perfection, vox orientation, image rotation 2019-09-01 15:34:20 -04:00
Joshua Barretto
75e1ee3cd7 Added per-instance transformation matrix, variable wind swaying 2019-08-21 13:47:29 +01:00
Joshua Barretto
7960e6ea6d Sprite distance fading, grass 2019-08-19 22:54:16 +01:00
Joshua Barretto
b31cca4bb3 Added wheat and sprite rendering 2019-08-19 21:09:35 +01:00
Joshua Barretto
6f35786b84 Added Instances construct 2019-08-19 18:23:47 +01:00
Joshua Barretto
e2082088c8 Added sprite pipeline 2019-08-19 18:01:23 +01:00
Joshua Barretto
75dbebbd05 More interesting waves 2019-08-18 10:33:18 +01:00
Joshua Barretto
f0e52e6002 Better reflections and water fog 2019-08-18 10:33:18 +01:00
Joshua Barretto
fa6825f13b Better fluid meshing, disabled fluid backface culling and depth buffer writing 2019-08-18 10:33:18 +01:00
Joshua Barretto
42237a84e4 Added translucent meshing pass, water reflections 2019-08-18 10:33:18 +01:00
Luc Fauvel
4a29900914 Copying terrain pipeline and shaders for fluids 2019-08-18 10:33:18 +01:00
Imbris
d89fff1499 Fix typo, move shaders back out of subfolders 2019-08-15 23:59:10 -04:00
Imbris
be0e0e52a8 Improve colors 2019-08-15 23:59:09 -04:00
Imbris
c09eb77149 Add srgb converion in shaders 2019-08-15 23:56:14 -04:00
Imbris
cb25c45dec Move shaders, start asset reloading system 2019-08-15 23:56:12 -04:00
Tesseract
ec34fcf9c8 Optimised fragment and vertex shaders. Framebuffer depth target changed from DEPTH24_STENCIL8 to DEPTH24 for faster depth writing and reading (no bitwise operations needed). 2019-08-04 12:25:15 +01:00
Joshua Barretto
b34d22565e Added point lights 2019-07-21 19:22:49 +01:00
Joshua Barretto
92d4b4dfbe Smoothed world borders 2019-07-09 21:42:27 +01:00
timokoesters
d7c159a4e1
Fix warnings all around voxygen 2019-07-04 14:08:01 +02:00
Imbris
b5ed35fd27 Smaller graphics cache that removes unused items 2019-07-02 21:21:36 -04:00
Joshua Barretto
e671d8473c Bluer snow, altered rock colour 2019-06-13 11:59:05 +01:00
Cody
14ac5babd4 Removes most unused imports; changes some unused variables to underscores or provides a leading underscore; removes some unnecessary variables and mutable declarations; and performs other miscellaneous warning fixes. 2019-06-06 14:48:41 +00:00
Joshua Barretto
eb2d1f3278 Comment cleanup 2019-06-06 06:46:02 +01:00
Joshua Barretto
9da2d82197 Added proper VD fog 2019-06-05 20:52:51 +01:00
Joshua Barretto
cd630b0816 Reduced threadpool threads to keep render thread smooth 2019-06-05 20:52:51 +01:00
Joshua Barretto
c3cd3b9a69 Compressed vertex data even more 2019-06-04 00:09:49 +02:00
Joshua Barretto
e2182b1a68 Added basic light 2019-06-03 22:50:47 +01:00
Imbris
4a8e85ef64 restore lost changes
Former-commit-id: a94c52677287131e02c88748694dfbcaf90b531a
2019-05-26 11:24:25 -04:00
Imbris
45bea22727 Add healthbars, rebase fixes, warning fixes
Former-commit-id: e293133eb18452a53446d2d765ecbe00e50720ba
2019-05-24 02:31:03 -04:00
Imbris
b828bffba9 Make name labels work
Former-commit-id: 633905535d2842b320d347e368a28ac967a8469a
2019-05-24 02:31:02 -04:00
Imbris
7fd3854093 ingame_ui
Former-commit-id: 5e836043d58f9217d711462d9f700e3eb096a076
2019-05-24 02:31:01 -04:00
Joshua Barretto
3963d4a3ef fmt
Former-commit-id: b76defa253e555cd381ab6ccf66c8e7f3e816433
2019-05-22 19:49:06 +01:00
Joshua Barretto
1684013138 Improved GPU memory usage by ~5x by compressing vertex data
Former-commit-id: b657ae88e44c6ecbede8073ffe17991ba3a99886
2019-05-22 19:32:33 +01:00
Imbris
4f970b63ef fix screen shot flipping
Former-commit-id: 47ed01cd5f91445d1367121d939c01876008f643
2019-05-18 19:09:23 -04:00
Imbris
7855dfe52f Add screenshot, fullscreen, & debug keys
Former-commit-id: 9358575794b71535905c5133eb6764284c35fb34
2019-05-18 17:16:35 -04:00
Cody
6b09fd7c53 Pedantic comment and language fixes.
Former-commit-id: eb49765c911aaa97a9c8ed351216a7a6f8411213
2019-05-17 18:32:07 -04:00
Imbris
c780b85f24 Stop crash when minimizing
Former-commit-id: ca52ae2520bf5616d24f27d98244a470966f3573
2019-05-17 01:13:14 -04:00
Joshua Barretto
1209f0393d Added figure colour to shader and health component
Former-commit-id: 222c39bd401ad0a9707eb348d5640717004dbf96
2019-05-15 13:26:14 +01:00
robojumper
ee9f54bacd Move u_globals to shared included file
Former-commit-id: b6122177ce98cd52bc032e2d8414671d3bcb9b5c
2019-05-12 11:23:21 +02:00
Imbris
b99a8dea39 Stop recreating vertex buffers for ui
Former-commit-id: 6e9326d1bca942e4da70281e3d86b624f9d2504a
2019-05-11 10:22:20 -04:00
Joshua Barretto
54cc9e137a fmt
Former-commit-id: b43b7192f7a2dd71da26182ca0c74449867381f3
2019-05-09 18:58:16 +01:00
Joshua Barretto
6da495f0bd Fixed window resizing
Former-commit-id: 81f2e18274aadb53b07704cf10c5c27efdccb032
2019-05-09 18:57:47 +01:00
Joshua Barretto
e5db851f30 Added FXAA to post-processing shader
Former-commit-id: 9cfdb3762b63688d1b59d65066c90355c7209c62
2019-05-09 18:57:47 +01:00
Joshua Barretto
c48a82e78d Adjusted sun and added F16 render target
Former-commit-id: 5585e0038846ef34378933eeb9051714ffe2c100
2019-05-09 18:57:47 +01:00
robojumper
209b29a870 Slightly improve render target creation code
Former-commit-id: 7ce92cce35834b006df9dacb4b4dd3e88d603b4e
2019-05-06 14:06:07 +02:00
robojumper
821ab80c5b Add post-process pipeline
Former-commit-id: aed1fff25f7fd95fe040b0877011cbe57e77eba3
2019-05-06 10:22:47 +02:00
Forest Anderson
993388e56a Ran fmt on codebase
Former-commit-id: 7fecffa1dc66fffba4f07d45fb80960dc5178f4f
2019-04-29 20:37:19 +00:00
Imbris
0daa8ef3f3 fix scaling artifacts
Former-commit-id: 7b90e7d033438a0c83e254ea7bcc791ad83808b3
2019-04-20 08:59:26 -04:00
Imbris
7707636c4e rearrange ui graphic code
Former-commit-id: d0ea7feee59a1daf4ad93e9b9224750deb75ee45
2019-04-19 15:06:58 -04:00
Pfauenauge90
6ebff7ce2c Merged with UI-Input
Former-commit-id: f18e92dcac87c3b2806065078c70527ffd805876
2019-04-04 16:45:57 +02:00
Imbris
b0009f9e14 apply scizzor from conrod, replace [T; 4] with vek::Aabr<T> for ui rects
Former-commit-id: 4eaa8832ddda40882cc45c3a08c5de2fa5e68682
2019-03-20 01:26:24 -04:00
Imbris
16ed207437 add main menu and more hud elements
Former-commit-id: 29557c100e2b82597ced04df09f41c4f132ffc5e
2019-03-20 01:24:25 -04:00
Imberflur
e35e2fffc1 add support for drawing portions of images in the ui
Former-commit-id: 98a939fcdde6ed202c884cdaae56326e3f90d61d
2019-03-20 01:24:23 -04:00
Imberflur
71da6e6588 rewrite/address/remove some ui TODOs and comments
Former-commit-id: bbcbb0ee6e8d4049ad98a5cea6274ce9ef0027e0
2019-03-20 01:24:22 -04:00
Imberflur
1962320f7e add ui text rendering
Former-commit-id: 5b9b809c660a2fdd178688bdaa63d16128debe08
2019-03-20 01:24:21 -04:00
Imberflur
3f052cae1c setup ui image rendering, started creating test ui with iteraction
Former-commit-id: 73235ad6b25ab160e9cde3ad2513d4dd32660161
2019-03-20 01:24:20 -04:00
Joshua Barretto
2fffe21bc7 Added client localhost connection
Former-commit-id: d4dec70ef3ecad8f40196b87b0f5c8b55c51c44a
2019-03-04 19:58:58 +00:00
Imberflur
6f5f80f749 add player movement with basic physics ecs system
Former-commit-id: f2e151971a42b25bfd1971311f5a06535a577007
2019-03-01 22:48:30 -05:00
Joshua Barretto
c16a257ae3 Added server-cli, UI tests
Former-commit-id: 93bf5b39138920aa7a4a773a8247d716866c4a05
2019-01-30 12:11:34 +00:00
Joshua Barretto
a1617e7b5c Added window resize handling 2019-01-23 22:39:31 +00:00
Joshua Barretto
bd561dd1aa Added terrain pipeline 2019-01-14 23:13:58 +00:00
Joshua Barretto
c5a506dad2 Moved client to session type 2019-01-14 15:47:57 +00:00
Joshua Barretto
86e70751e0 Moved to Skeleton and Animation traits 2019-01-14 14:18:58 +00:00
Joshua Barretto
8184bc6fc0 Added figures, segments, test .vox files, basic animation test 2019-01-13 20:53:55 +00:00
Joshua Barretto
b37a6b67f9 Added time of day, tick time, basic skybox shader and client to voxygen 2019-01-12 15:57:19 +00:00
Joshua Barretto
96d01a9293 Made it bloo 2019-01-12 14:01:01 +00:00
Joshua Barretto
979f47420d Added camera panning and cursor trapping 2019-01-12 13:56:34 +00:00
Joshua Barretto
45d5a0a396 Added cursor trapping, more documentation 2019-01-12 01:14:58 +00:00
Joshua Barretto
c9d877de7a Added session, documented, improved structure 2019-01-11 23:18:34 +00:00
Joshua Barretto
d559d633ab Added pipeline components 2019-01-11 20:14:37 +00:00
Joshua Barretto
d8c87984d5 Switch back to old gfx backend 2019-01-11 17:30:13 +00:00
Joshua Barretto
5d6ec363a5 Added triangle test 2019-01-07 21:10:31 +00:00