hex's todo

For people working on the C++ code.
Post Reply
User avatar
hex
Member
Posts: 82
Joined: Sun Dec 06, 2020 04:22
IRC: hecks
In-game: hex hhhehehe

hex's todo

by hex » Post

Make shadow mapping optional for games
├ Fix shadows appearing in overcast skies
├─ Replace the shader system with one that supports variants
├ Sky layers with directional lights to replace sun and moon (#11366)
└ Developer covenant to prevent future breakage (#11365)

De-hardcode Minetest
├ Viewmodels
├ Camera API
├ Animation-triggered footsteps and other sounds
└ Animation blend maps driven by velocity, looking direction, client input (replacement for current clientside anims)

Cosmetic Attachments
├ Provide attachments for hair, clothing and wields which do not rely on abusing CAOs for the purpose
├ Bone sync for clothing
└ Mirror the functionality in formspec model display

Kill the "BS Space"
├ Change everything internally to metric units, eliminate all BS conversion
├ Transparently convert to BS in serialization, but only if justified
└ Provide new APIs for scripts alongside old ones, quietly convert old data to metric

Serialization
We define data types in comments and then write the encoding/decoding logic for them inline. Is there no better way?

Reduce OpenGL driver chatter
├ Eliminate drawcalls
├─ Try monkey patching MultiDrawElements into IrrMt
├─ Cull harder
├ Eliminate other redundant state
└ Dispatch GL commands in one burst to aid driver threading

Reduce network chatter and stalls
├ Split the packet queues by category and implied dependency
├ Further split "fat" categories like CAO traffic whenever possible
└ Maintain more server-side copies of various state to only send what is necessary

SAO & CAO refactor
├ Try an entity-component approach to reduce bloat
├─ Clean and futureproof transform component (fp64 positions? fp64 everything?)
├─ Dirty-clean dependency graph for component properties for minimal overhead
├─ Data oriented design; mind the cache and keep things close in memory
├─ Wrap all Irrlicht operations in preparation for the divorce (see below)
└ Introduce reliable 64 bit GUIDs and easy to use persistent references

Divorce Irrlicht
├ Isolate client and server common dependencies into a libMT of sorts
├─ Keep the vector math
├─ libMT must absolutely not depend on Irrlicht for anything
├─ Anticipate other uses of libMT (tools, compatible implementations)
├ Split server and client
├─ Server must absolutely not depend on Irrlicht for anything
├ Eliminate Irrlicht from the client
├─ Pick a GL wrangler that works on all platforms
├─ Decode all supported media formats
├─ Provide own resource types
├─ Eliminate scene node usage (see CAO refactor)
├─ Replace any STL-like Irr types with actual STL features
└ Alternative migration plan: Chip away at unused features in IrrMt until a stub remains that can be absorbed.

OpenGL 4 renderer
├ Use MultiDrawElementsIndirect for map rendering
├ Store block meshes in sparse buffers for easy memory management
├ Cull with compute shaders
├ Sparse Texture Arrays in place of atlasing
├ Geometry Shader replaces meshing wherever possible
├─ One vertex per node
├── Allows a GL_POINTS farmap proxy
├─ Compress node position to one int16 number
├─ Instantiate all common drawtypes with GS
├── Generate and store bitmask to cull faces
├── Use duplicate verts for multiple nodeboxes
├── Convert trivial meshes to GS snippets
├─ Cull and render complicated mesh nodes individually with instancing
├ Skin CAOs with compute shader
└ Instance unskinned CAOs

Low priority / wishlist
├ Kill or move the questionable tonemapper living in the fragment shader
├─ Postprocess full screen tonemapper
├─ HDR framebuffer
├─ Server sent color grading curves
├ MIDI playback in clients
├─ Soundfont support
├── Server provided soundfont
├─ Allow using an external MIDI device on systems that support it
├ Server sent shaders and materials (Shader rewrite will help)
├ Server provided scripts
└ Multiple worlds and worlds as entities (CAO refactor will help)

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest