Git Product home page Git Product logo

lux-client's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

lux-client's Issues

Light floating-point rounding errors

The light mesh seems to experience floating-point rounding errors even at a relatively small distance, it can also rarely be seen near the spawn as black or white stripes between chunks.

Dithering

Dithering is needed to smooth out color banding that is visible in the lightning system, perhaps some OpenGL feature already does that, but needs to be enabled, or perhaps manual dithering (e.g. using bayer matrix) needs to be implemented in frag shader.

Ambient occlusion

Ambient occlusion is very easy to add, as there are only 4 possible case for a vertex, which depend on the opacity of surrounding blocks, based on these cases a color would be given to the vertex. It seems though that it needs to happen outside meshing, since diagonal access for neighbouring chunks is also needed, it could happen in the same function where future lightning system would, see #5.

Depth buffer bottleneck

Currently due to a high number of fragments tested to the depth buffer, there is a rendering bottleneck.
Possible solution would be to dismiss chunks that are guaranteed not to be visible.

Debug user interface

Debug user interface showing coordinates, and other debug info, also allowing for debug actions, such as switching to wireframe mode.

Field of view system

A system where obstructed objects are not visible, similarly to the game Monaco, the obstructed area would later show memory that the player has of that area. Additionally, the player shouldn't see what's behind them.

Frustrum culling

Culling chunks that are not visible could give some performance gain.

Greedy meshing

Meshing can use greedy meshing instead of simple face culling, this could require some modifications to texture loading, and should be optional. It can greatly reduce the number of vertices, so it could give substantial performance gain.

Random tileset noise

A mechanism that generates 10 random noise textures per-save that is later randomly mixed into the tileset should be generated.

Basic entity rendering

Entities should be rendered, additionally server can transport data like entity name, that would be displayed in the client (above the entity). If action system is implemented, actions should be sent and rendered (e.g. entity walking animation), in the future they would also play sounds.

Level of detail

There can be few versions of a mesh for a chunk, similarly to how mipmaps work. Chunks that are far away would use lower detail of the mesh, that for example is 2x smaller than the original.

Static lightning

Lightning using breadth-first search is fast and easy to add, possible obstacle is how map is divided in chunks.

OpenGL 3.3 support

Opengl 3 adds a lot of useful features, some examples:

  • array textures for texture atlases
  • geometry shader to reduce CPU->GPU transfer and move computations to GPU (e.g. meshing)
  • VAOs
    Still, the OpenGL 2.1 should remain maintained too.

Darkness noise

some amount of random noise textures should be generated on game start, that get increasingly mixed into the game with lower luminosity and then iterated based on time, this should give the visual effect of noise seen in darkness

Weird block border tearing

Block borders flash with black color sometimes, especially when the player is looking in a straight angle towards axes. Perhaps related to #2. Possibly correlated is the fact that a shape going from the center of the screen is shown when the tearing happens, this is visible only in wireframe mode.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.