Commit Graph

472 Commits

Author SHA1 Message Date
Joshua Barretto
36d20e6990 Better docs, faster terrain meshing 2021-03-07 14:25:07 +00:00
Joshua Barretto
9910398917 Fixed snow biome trees 2021-03-07 14:25:07 +00:00
Joshua Barretto
d4ce69df99 Static light flickering 2021-03-07 14:25:02 +00:00
Joshua Barretto
1d16f14dd5 Small fixes 2021-03-07 14:25:02 +00:00
Joshua Barretto
331375fd8f Adjusted static lighting 2021-03-07 14:25:02 +00:00
Joshua Barretto
fe2479ee4c Better LoD water prediction 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 Barretto
185b1c3053 Specialised giant trees 2021-03-07 14:25:01 +00:00
Joshua Barretto
7d526da735 Experimental giant mother trees 2021-03-07 14:25:01 +00:00
Sarra
db3bc1b9bb added a white firework 2021-03-07 03:48:50 -05:00
Sarra
4284ce0411 made firework explosions colorful 2021-03-05 01:22:29 -05:00
Sam
53b0ba286a Ice particles for Wendigo 2021-02-27 01:42:46 -05:00
jshipsey
5792faa992 some new moves, combine biped weapons into one file 2021-02-27 01:42:46 -05:00
Sam
df70976ff5 Fixed particles. 2021-02-27 01:42:46 -05:00
Timo Kösters
a4513fe09d Improve particles 2021-02-27 01:42:46 -05:00
Joshua Barretto
60c16e57b1 Added snow particles 2021-01-31 15:15:17 +00:00
Rotsuoy
994677a4d0 Rotsuoy/savanna grass 2021-01-23 07:46:54 +00:00
Joshua Barretto
a404707f87 Avoid div0 in shiny water shader 2020-12-30 22:18:19 +00:00
Joshua Barretto
49cabfae18 Made LoD water reflective 2020-12-14 16:52:33 +00:00
Joshua Barretto
a5c37262dd Better aurora 2020-12-05 11:20:25 +00:00
Joshua Barretto
e413392694 Better mist access 2020-12-05 11:20:25 +00:00
Joshua Barretto
46dc49bc0a Fixed bit-twiddling colour bug 2020-11-24 18:44:41 +00:00
Monty Marz
d069eb9a57 street lamp particles, ground fire bowl, misc fixes 2020-11-23 10:58:21 +00:00
Joshua Barretto
e461fbd951 Make chimneys glow 2020-11-23 10:58:21 +00:00
Joshua Barretto
4bb0da24b6 Addressed review comments 2020-11-23 10:57:57 +00:00
Joshua Barretto
8fd2e4537d Addressed review comments 2020-11-23 10:57:57 +00:00
Joshua Barretto
bb9e593a44 Fixed glow AO 2020-11-23 10:57:57 +00:00
Joshua Barretto
b4e3dbc719 Added glow tint 2020-11-23 10:57:57 +00:00
Joshua Barretto
d7bbceca2d Added light/glow map sample interpolation for entities 2020-11-23 10:57:56 +00:00
Joshua Barretto
27e7fd0727 Preserved light/glow maps to prevent sprites/entities being lit when they shouldn't be 2020-11-23 10:57:56 +00:00
Joshua Barretto
51d1a2ecff Added glow 2020-11-23 10:57:56 +00:00
Joshua Barretto
a0f0417f8f Fixed close cloud sampling issue 2020-11-23 10:57:56 +00:00
Joshua Barretto
058908f603 Made flamethrower and healing staff emit light on use 2020-11-23 10:57:55 +00:00
Joshua Barretto
5930ca4a59 Temporarily make particles opaque to avoid depth-related rendering problems 2020-11-23 10:57:55 +00:00
Joshua Barretto
7eb437501d Fixed various particle issues 2020-11-23 10:57:55 +00:00
Joshua Barretto
0f2e7434fc Sun, brightness, and gamma adjustments 2020-11-23 10:57:55 +00:00
Joshua Barretto
bcc220804a Added exposure to settings 2020-11-23 10:57:55 +00:00
Joshua Barretto
062ce4b158 Resolved or patches various water shader issues 2020-11-23 10:57:16 +00:00
Joshua Barretto
1e7b9fa9b5 Resolved or patches various water shader issues 2020-11-23 10:57:16 +00:00
Joshua Barretto
86571c9e2e Partially fixed mist 2020-11-23 10:57:15 +00:00
Joshua Barretto
aa59d66a76 Fixed many map problems, re-added surface mist 2020-11-23 10:57:15 +00:00
Joshua Barretto
579bdcf10e Forest soil undulation, better acadia placement 2020-11-23 10:57:15 +00:00
Joshua Barretto
ef03137c65 Better water, shadows, clouds 2020-11-23 10:57:15 +00:00
Joshua Barretto
be1fb5b5d2 Shader quality tweaks 2020-11-23 10:57:15 +00:00
Joshua Barretto
0e8a14250f Minor emissions tweaks 2020-11-23 10:57:15 +00:00
Joshua Barretto
42c6142ec6 Added occasional sky emission at night 2020-11-23 10:57:15 +00:00
Joshua Barretto
e09c22f9cc Altered splay to avoid strange LoD shape 2020-11-23 10:45:02 +00:00
Joshua Barretto
34987c1654 Don't do gamma twice 2020-11-23 10:45:02 +00:00
Joshua Barretto
271c1e29a5 Adjusted sun/moon for HDR 2020-11-23 10:45:02 +00:00
Joshua Barretto
1d031538f9 Added HDR 2020-11-23 10:45:02 +00:00
Joshua Barretto
49df604de0 Better scattering and scatter (of both varieties) 2020-11-23 10:45:02 +00:00
Joshua Barretto
ee65b4fb17 Improved cloud quality by improving sun access heuristic 2020-11-23 10:45:02 +00:00
Joshua Barretto
de685b00b2 Improved water pathfinding 2020-11-23 10:45:01 +00:00
Joshua Barretto
b352ef5d55 Terrain pop-in, fixed agent pathfinding in water 2020-11-23 10:45:01 +00:00
Joshua Barretto
717fd88565 Experimental dissolve VD 2020-11-23 10:45:01 +00:00
Joshua Barretto
6adfa547db Added site icons to main map 2020-11-23 10:45:01 +00:00
Joshua Barretto
d4d4f17d3c Added world map size icons 2020-11-23 10:45:01 +00:00
Joshua Barretto
c906764889 Better LoD 2020-11-23 10:45:01 +00:00
Joshua Barretto
99a881f349 Added entity simulation to rtsim, reification, assimilation 2020-11-23 10:44:59 +00:00
Joshua Barretto
2b5e09e32e Better high-quality clouds 2020-11-23 10:38:00 +00:00
Joshua Barretto
c3cedd4ddf Improved cloud quality 2020-11-23 10:37:59 +00:00
Joshua Barretto
171ef1d7b9 Upscaling support 2020-11-15 22:18:35 +00:00
Joshua Barretto
9b233708e2 Turned tree generation into a post-processing layer, ripped out old tree generator for performance wins 2020-11-09 10:20:22 +00:00
Joshua Barretto
0aca8ee0f7 Better minimal clouds 2020-10-30 15:43:51 +00:00
Joshua Barretto
70f0a7c57c Cloud tweaks 2020-10-30 15:43:51 +00:00
Joshua Barretto
2237500743 Clouds 2020-10-21 21:05:25 +00:00
Sam
14e4af7ab6 Addressed playtesting feedback. 2020-10-14 21:06:52 -05:00
Sam
7ef73f5981 Added particles for fire shockwave. Added ability key enum so held abilities could differentiate what button they should check. Modified energy fields on basic beam so it could drain energy every second. 2020-10-14 20:56:22 -05:00
Sam
cbb72363af Reworked explosions. Tweaked staff fireball. 2020-10-14 20:56:21 -05:00
Sam
04dcd012da Flamethrower particles. 2020-10-14 20:56:21 -05:00
Sam
c80f16ae74 Started to add particles. 2020-10-14 20:56:20 -05:00
Imbris
a3ee5a4006 Rename model_col -> highligh_col to better reflect its usage 2020-10-10 02:10:32 -04:00
Imbris
ef74d395a6 Improve figure and sprite highlighting 2020-10-10 02:10:31 -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
56d2afc0dc Added keyframe support to basic beam state. Addressed some comments. 2020-09-29 19:48:15 -05:00
Sam
de45784596 Addressed round of testing feedback. 2020-09-29 19:48:09 -05:00
Sam
6bb680f372 M1 now only regens stamina when healing allies if they are not at full health. 2020-09-29 19:48:02 -05:00
Monty Marz
387f2cb60c color adjustments 2020-09-29 19:47:59 -05:00
Sam
6b23af6e0b Tweaked particles. Added skill icons. 2020-09-29 19:47:58 -05:00
Sam
8b9202710f New sceptre M2 is functional. 2020-09-29 19:47:57 -05:00
Sam
921d224ef6 Lifesteal now works. Added particles to healing beam. 2020-09-29 19:47:57 -05:00
Sam
6a1acd47a1 Added maximum vertical angle for shockwave. 2020-09-19 14:40:19 -05:00
Sam
819fb8ee77 Changed boss from cyclops to stone golem. Added ai specific for boss.
Tweaked shockwave.

Fix rebasing errors.
2020-09-19 14:40:16 -05:00
scott-c
1f2ed53c42 Tweak particle effects 2020-09-19 14:40:15 -05: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
Joshua Barretto
0adc57e487 Made particle code more rugged 2020-09-04 11:49:49 +01:00
Joshua Barretto
70f52d876a Improved lighting 2020-09-04 11:48:57 +01: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 Barretto
4405227ffb Made light attenuation nicer, fixed campfire light offset 2020-09-04 11:48:54 +01:00
Marcel
e512578ef5 Merge branch 'intel-gpu-fix' into 'master'
Fix a crash and model/shadow issues on Intel Gen7/7.5 GPUs.

See merge request veloren/veloren!1349
2020-09-03 09:11:19 +00:00
scott-c
69e0bf2023 fix missing firework particle rng & adjust firework colors 2020-09-01 20:33:17 +08:00
Lippy13
7c33e7d714 Work around an issue with Intel Gen7/7.5 GPUs where matrices default to being row major if they are not directly assigned to a matrix that has a column major layout. 2020-08-31 19:50:45 +01:00
Lippy13
7efa3373f6 Fix crash on Intel Gen7 GPUs caused by having two return statements in the same branch of code. 2020-08-31 19:49:01 +01:00
Joshua Barretto
bf7afcf5c9 Merge branch 'zesterer/small-fixes' into 'master'
Better world colours, better projectiles, better aiming, many other small improvements

See merge request veloren/veloren!1332
2020-08-25 15:59:05 +00:00
notoria
2be4202d01 Corrected some spelling errors 2020-08-25 12:21:25 +00:00
Joshua Barretto
91c8effc80 Less harsh terrain noise 2020-08-24 12:36:27 +01:00
Joshua Barretto
c905819adc Made below-ground LoD dark 2020-08-24 12:36:27 +01:00
jiminycrick
86b4dd6ba3 set shiny water to default 2020-08-23 22:58:01 -07:00
jiminycrick
6b8e458027 Fixed NVidia shiny water shader bug and re-enabled in settings
missed a commented line
2020-08-21 14:59:18 -04:00
Joshua Barretto
db183e607f Added particle explanation, more efficient particle pushing 2020-08-21 09:53:09 +01: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
Sam
05f4024e1a Normal now rotates with particle (fixes lighting). 2020-08-20 21:31:30 +01:00
Joshua Barretto
d31d25b170 Added orientation to more particle modes 2020-08-20 21:28:12 +01:00
Joshua Barretto
c759c8120f Centralised particle offset, variable chunk range, better smoke offsets 2020-08-20 21:28:11 +01:00
Sam
0a3f0db26d Added rotation to leaf particles. 2020-08-20 21:18:14 +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
fcdd875bff UI fixes, assets update 2020-08-12 18:10:18 +00:00
Monty Marz
6789b7ae27 Add firework hues 2020-08-12 22:29:06 +08:00
scott-c
267d5a141a cleanup unneeded matrix and shader code 2020-08-08 19:26:52 +08:00
Joshua Barretto
a924f9694d Explosion sound and event lights 2020-08-08 19:26:52 +08:00
Joshua Barretto
7c31baef6f Added outcome system, sound effects 2020-08-08 19:26:48 +08:00
Joshua Barretto
3f7667352d Better hash RNG 2020-08-08 19:25:33 +08:00
scott-c
82a0ecad6b Add zest's changes 2020-08-08 19:25:33 +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
Joshua Barretto
30619771af Improved block picking 2020-07-06 23:04:13 +01:00
Joshua Barretto
62b59de95a Fixed sprite select flickering 2020-07-06 22:41:21 +01:00
Joshua Barretto
f1b166d15d Innumerable camera improvements 2020-05-18 23:40:28 +01:00
Joshua Barretto
68e77f43f8 Made figure placement correct with warping 2020-05-18 15:15:58 +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
3e62f7edc3 Better LoD distance scaling 2020-04-25 21:44:23 +01:00
Joshua Barretto
1c2f05ac51 Fully fixed sub-voxel noise issue 2020-04-23 22:05:14 +01:00
Joshua Barretto
c0bd0279fc Added sites to the map 2020-04-23 21:59:09 +01:00
Joshua Barretto
444f2ecb45 Made /waypoint admin-only, MR cleanup 2020-04-23 18:19:41 +01:00
Joshua Barretto
1983fd8ec1 Cleanup, fixed clouds, removed 45-degree terrain sprites 2020-04-23 18:19:41 +01:00
Joshua Barretto
8d4f1da3a6 Improved path rendering on the map, removed ugly path noise 2020-04-23 18:19:41 +01:00
Joshua Barretto
a65dbc570a Returned to normal world size 2020-04-23 18:19:41 +01:00
Joshua Barretto
7edd0e701c Fixed sub-voxel noise flickering on NVIDIA cards 2020-04-23 18:19:41 +01:00
Joshua Barretto
cd925e8cea Faster sub-voxel noise function 2020-04-23 18:19:41 +01:00
Joshua Barretto
431e199731 Added correctly generating world paths, sub-voxel shader noise 2020-04-23 18:19:41 +01:00
Joshua Barretto
e242604a4c Further improved AO 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
fd14223c33 Basic boss spawning in dungeons, better AO 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
525cba5029 Added dungeon rooms, corridors, mazes 2020-04-23 18:19:41 +01:00
Joshua Barretto
568a8ab87c Increased block rendering altitude range 2020-04-23 18:19:41 +01:00
Joshua Barretto
0125897117 Slightly better clouds 2020-04-23 18:19:41 +01:00
Joshua Barretto
4830757bc9 Began adding building skeleton structure 2020-04-23 18:19:40 +01:00
Joshua Barretto
dde0319293 Lighting improvements, fixed NaN issue for agents 2020-04-23 18:19:40 +01:00
Joshua Barretto
d7385fd99b Fixed cheap shader 2020-04-23 18:19:40 +01:00
Joshua Barretto
16a175abe0 Nicer water shaders 2020-04-23 18:19:40 +01:00
Joshua Barretto
a0dae82a2b Added correctly allocated labours, fishing 2020-04-23 18:19:40 +01:00
Joshua Barretto
46190aa634 Began work on basic economic simulation 2020-04-23 18:19:40 +01:00
Joshua Barretto
b9cc0f387b Cleaner clouds, better movement 2020-04-23 18:19:40 +01:00
Joshua Barretto
df5aa93fd7 Better AO, fixed cloud pixelation 2020-04-23 18:19:40 +01:00
Joshua Barretto
d91d66027a Fixed cloud bugs, made pets run into you less 2020-04-23 18:19:40 +01:00
Joshua Barretto
5f2d0021a3 Reversed water draw order 2020-04-23 18:19:40 +01:00
Joshua Barretto
0021bd6452 Added new settlement generation to world, basic rendering 2020-04-23 18:19:40 +01:00
Capucho
8f6686adc1 Fix the problems of players walking over water with dithering 2020-04-07 22:50:01 +00:00
Capucho
a21ae27a77 Add player transparency and silhouette 2020-04-04 19:36:55 +00:00
Joshua Barretto
3a989f061f Better water shaders 2020-03-27 15:13:36 +00:00
Joshua Barretto
3559252a5e Nicer point lights 2020-03-17 13:29:42 +00:00
Treeco
abe47d8621 Gamma setting now works 2020-02-17 00:46:31 +00:00
Treeco
aaf1de9f9b Added gamma setting, not hooked up yet 2020-02-16 20:32:17 +00:00
Joshua Yanovski
e524e86090 Merge branch 'sharp/zoom-minimap' into 'master'
Minimap rotation, zoom, orientation indicator, Mainmap changes & indicator

See merge request veloren/veloren!784
2020-02-06 17:34:32 +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
Joshua Barretto
e520712077 Minor performance improvements 2020-02-04 22:58:56 +00:00
Vechro
377433c2fc Get abs value of maxd and mind 2020-01-31 12:12:57 +02:00
Treeco
6ada176e54 Bumped up the numbers further, behaves nicer still 2020-01-27 14:28:20 +00:00
Treeco
7334f9782c Made depths behave nicer when zoomed really far out 2020-01-27 12:12:38 +00:00
Joshua Barretto
4eb5b76d5f Added point light ambiance 2020-01-27 10:58:33 +00:00
Joshua Barretto
d2e0445b34 Added point light ambiance 2020-01-27 01:47:23 +00:00
Joshua Barretto
115ecf15d3 Made stars spin with sun and moon 2020-01-27 01:22:07 +00:00
Joshua Barretto
966a61ad42 Stopped stars popping into existence 2020-01-27 01:03:55 +00:00
Joshua Barretto
7167320c92 Fixed shadows, better pathfinding cap 2020-01-26 12:52:28 +00:00
Imbris
166aba61f0 Make nametages etc fixed size and only display within limited range 2020-01-24 22:09:45 -05:00
Joshua Barretto
34c88708af Adjusted cloud fuzz factor 2020-01-21 13:14:25 +00: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
Joshua Barretto
54773b57b6 Fixed water normals 2020-01-19 18:39:20 +00:00
Joshua Barretto
020c57ec4a Fixed terrain normal decoding 2020-01-19 18:27:03 +00:00
Joshua Barretto
21069a48dd Made clouds bigger, more performant and prettier 2020-01-19 18:06:34 +00: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
3a5c69a314 Prevented chunk load popping with smooth view distance growth 2019-11-20 10:38:11 +00:00
Joshua Barretto
8745d0a3af Non-linear depth buffer 2019-11-20 09:59:27 +00:00
Joshua Barretto
c60799de3d Stronger moonlight 2019-11-19 20:43:41 +00:00
Joshua Barretto
9993a4c81a Smoother water at distance, fixed warnings 2019-11-19 19:22:56 +00:00
Joshua Barretto
7ad22c647d Fixed cloud shader banding issue 2019-11-19 19:09:22 +00:00
Joshua Barretto
5cb6f691dc Fixed dense cloud void issue 2019-11-19 19:09:22 +00:00
Joshua Barretto
28e625635f Split terrain rendering to avoid redrawing skybox 2019-11-19 19:09:22 +00:00
Joshua Barretto
bca3817163 Massive performance boost for clouds, fixed reflection misprojection bug 2019-11-19 19:09:22 +00:00
Joshua Barretto
39d686961e Removed cloud sampler early return 2019-11-19 19:09:22 +00:00
Joshua Barretto
651bc8a9a3 Fixed close cloud precision noise 2019-11-19 19:09:22 +00:00
Joshua Barretto
eeec7df7d3 Fixed passthrough reduction curve 2019-11-19 19:09:22 +00:00
Joshua Barretto
fa4e68c165 Cleanup and speedup 2019-11-19 19:09:22 +00:00
Joshua Barretto
559106ff2c Better passthrough calculation 2019-11-19 19:09:22 +00:00
Joshua Barretto
4ccd8ac72a Improved cloud precision from internal perspective 2019-11-19 19:09:22 +00:00
Joshua Barretto
b7e59dfcc2 Better precision cloud sampling and moon halo highlight 2019-11-19 19:09:22 +00:00
Joshua Barretto
2c2dd49aed Made clouds render over terrain 2019-11-19 19:09:22 +00:00
Joshua Barretto
9d48cc8fb7 Better water transparency 2019-11-19 19:09:22 +00:00
Joshua Barretto
fd2c9e8cde Prevent sun/moon terrain overlap 2019-11-19 19:09:22 +00:00
Joshua Barretto
f80f303a18 Prevented cloud overlap on terrain 2019-11-19 19:09:22 +00:00
Joshua Barretto
0f37bfa829 Fixed hill colour blending 2019-11-19 19:09:22 +00:00
Joshua Barretto
337383feaa Faster cloud reflections 2019-11-19 19:09:22 +00:00
Joshua Barretto
7375c2c207 Faster clouds, better water 2019-11-19 19:09:22 +00:00
Joshua Barretto
5162256e45 Faster and more visually pleasing clouds 2019-11-19 19:09:22 +00:00
Joshua Barretto
aa111d34e5 Added clouds 2019-11-19 19:09:22 +00:00
Joshua Barretto
18ec6dbbec Prevented the moon rising/setting too early/late 2019-11-19 19:09:22 +00:00
Joshua Barretto
68502b22c1 Better moonlight 2019-11-19 19:09:22 +00:00
Joshua Barretto
10ce8b45e7 Added moon 2019-11-19 19:09:22 +00:00
Joshua Barretto
2134bf87a7 Smaller water details 2019-11-05 15:45:01 +00:00
Joshua Barretto
671313a523 Overhauled water shaders 2019-11-05 15:45:01 +00:00
Joshua Barretto
6d8d06ff7c Smoother water 2019-11-05 15:45:01 +00:00
Joshua Barretto
7ecfde2925 Better water 2019-11-05 15:45:01 +00:00
Vechro
c9787846d5 Fix MSAA x16 2019-10-21 21:55:49 +03:00
Joshua Barretto
dcf8655202 Fixed srgb normal bug 2019-10-17 17:35:17 +01:00
Joshua Barretto
04c64dc122 Better (and faster) water shaders 2019-10-17 17:11:55 +01:00
Joshua Barretto
3279a278b7 Move computations to terrain fragment shaders 2019-10-16 15:05:45 +01:00
Joshua Barretto
c01e19fc05 Don't render water that isn't there, improved chunk render order 2019-10-16 12:40:18 +01:00
Joshua Yanovski
8ae2692b6e Allow canceling chunk generation.
Currently we only do this when no players are in range of the chunk.  We
also send the first client who posted the chunk a message indicating
that it's canceled, the hope being that this will be a performance win
in single player mode since you don't have to wait three seconds to
realize that the server won't generate the chunk for you.

We now check an atomic flag for every column sample in a chunk.  We
could probably do this less frequently, but since it's a relaxed load it
has essentially no performance impact on Intel architectures.
2019-10-16 11:39:41 +00:00
Joshua Barretto
4bbc340f52 Faster meshing, better dusk 2019-10-14 10:48:40 +01:00
Joshua Barretto
889fd678c6 More opaque water surface 2019-10-08 12:21:05 +01:00
Joshua Barretto
087bfffc8a Proper tree colour variation 2019-10-07 09:05:18 +01: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
7e6eede740 Better sun halo colours 2019-09-26 00:15:07 +01:00
Joshua Barretto
6dbeda3267 Better light attenuation 2019-09-26 00:15:07 +01:00
Joshua Barretto
499344ccab Added entity shadows 2019-09-26 00:15:07 +01:00
Joshua Barretto
899a7c56ab Dark water 2019-09-26 00:15:07 +01:00
Joshua Barretto
207568a012 Better day/night cycle, less intense sun 2019-09-26 00:15:07 +01:00
Joshua Barretto
71247f3e5d Fractional FXAA scaling 2019-09-26 00:15:07 +01:00
Joshua Barretto
dfcdd5656b Added persistent ambiance back 2019-09-26 00:15:07 +01:00
Joshua Barretto
46fdc87014 Animated chunk loading 2019-09-26 00:15:07 +01:00
Joshua Barretto
3979dddbc1 Faster meshing, better AO, colour correction 2019-09-26 00:15:07 +01:00
Joshua Barretto
f1d590464f Added colour smoothing 2019-09-26 00:15:07 +01:00
Imbris
34221a0f1d Disable AO 2019-09-26 00:15:07 +01:00
Joshua Barretto
a432cef263 Better colour correction 2019-09-26 00:15:07 +01:00
Joshua Barretto
3f2e22f039 Exponential interpolation for linear damping
With an additional approximation to allow for the same size jumps given different framerates.
2019-09-09 19:11:40 +00:00
Monty Marz
f53904b534 More sprites, ui fixes, lianas 2019-09-01 19:04:03 +00:00
Joshua Barretto
5a677b9c1e Added modular building generation 2019-08-31 11:44:52 +01:00
Joshua Barretto
55350d8f5f Better wind waving, improved sun ambiance 2019-08-21 17:03:03 +01:00