Giter VIP home page Giter VIP logo

Comments (6)

afritz1 avatar afritz1 commented on June 8, 2024 1

Revised roadmap as of 1/13/2024.

Part 1

  • Implement 3D triangle rasterization (projection, clipping, barycentric coordinates, perspective correctness)
  • Implement vertex buffers, attribute buffers, and index buffers
  • Implement 8-bit texturing
  • Implement basic scene graph which feeds the renderer draw calls every frame for visible geometry
  • Implement one pixel shader for all geometry just to get everything on-screen
  • Various engine design clean-ups to support renderer development as needed (scene management, etc.)
  • Get to a geometry-complete state with the chunk system, meaning all voxels and entities are appearing in-world

Part 2

  • Get to a geometry-complete state with sky objects, particles, and screen-space fog (fog shading not required)
  • Implement pixel shader per material (opaque, alpha-tested, ghost, chasm wall, etc.)
  • Implement sky gradient using dither textures
  • Implement lights using light tables and basic forward rendering, supporting up to 8 lights per draw call
  • Get to a complete state with lighting voxels and entities using the light levels from the original game
  • Get appearance to be nearly identical to Arena while supporting any screen resolution

Part 3

  • Implement voxel visibility manager using quadtree
  • Optimize voxel draw call generation
  • Implement entity visibility manager using bounding boxes
  • Optimize entity draw call generation
  • Implement sky object visibility manager
  • Optimize sky object draw call generation
  • Change triangle clipping from world space to clip space
  • Implement lighting using clip space -> world space transform in rasterizer
  • Render sky and weather near the camera and without depth testing so far plane can be closer
  • Sort entities by distance (fixes ghost rendering)
  • Prioritize lights by distance (fixes shading with tightly-grouped lights)
  • Implement puddle shader again
  • Optimize rasterizer and pixel shading for higher pixels per second
  • Add multi-threaded pixel shading

from opentesarena.

afritz1 avatar afritz1 commented on June 8, 2024

#252 is a big enough issue with rain/snow that it should be considered a blocker for finishing part 3.

from opentesarena.

afritz1 avatar afritz1 commented on June 8, 2024

Done with #252.

from opentesarena.

afritz1 avatar afritz1 commented on June 8, 2024

Going to skip harder optimizations like occlusion culling and just optimize the rasterizer and shaders a more conventional way with fewer special cases/algorithms/etc..

Ideally opaque meshes would draw front to back without depth reads and then sky would draw after it with a depth < INFINITY check, but that's too hard to implement, so instead going to draw sky first and then everything else after it.

from opentesarena.

afritz1 avatar afritz1 commented on June 8, 2024

Deciding how to handle tiled rendering with puddles and ghosts, because these two shaders have to read from the frame buffer. I think trying to do multi-pass shading is a good idea instead of coming up with a complex tile scheduler to keep threads from blocking on unfinished tiles.

from opentesarena.

Related Issues (20)

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.