Giter Site home page Giter Site logo

Comments (10)

photex avatar photex commented on September 13, 2024

Dropping some items here free association style:

  • skeletal animation (supporting shaders, higher level types for the required vertex format?)
  • tools to bake data (geometry, materials, textures, animation?)
  • settle on an engine format for common data (and provide apis to easily load. and save?)
  • primitives builders (geo-sphere, icosahedrons, cubes, grids/planes)?
  • Scene graphs... scene managers, oct-tree, quad-tree? etc.
  • visibility determination (start with simple frustum intersection tests perhaps set the stage for other methods)
  • A spine runtime would be compelling.

These are clearly parts of multiple projects and some are pretty wishy-washy. I'm a fan of the scope of gfx right now. I don't think it should get much higher level than a graphics device abstraction. The next step is to build on top of gfx.

from gfx.

 avatar commented on September 13, 2024

visibility determination (start with simple frustum intersection tests perhaps set the stage for other methods)
Define a concept of DrawList
Automatically re-order calls inside each draw list

These get my +1. They could be inter-related, creating a drawlist and culling it could be done as part of gfx-rs.

from gfx.

kvark avatar kvark commented on September 13, 2024

Found a couple of interesting links:

  • SceneJS explains how the scene graph is constructed. I can see the great potential in this if different node types are abstracted away.
  • Panda3D explains how split rendering into App/Cull/Draw phases that are done on separate threads.

So my basic understanding of the high layer is the following. It defines the scene graph, where materials and spatial nodes are just possible node types, there should also be means of serializing/deserializing it.
The user builds this graph on his side and passes it to the layer over the task boundary. The layer does visibility culling, skeletal animations, and sorting. Maybe something else too.
The final draw list is provided to our Renderer (either one by one or in some kind of groups, we'll see later), which (again) sends commands to the device over the task boundary.

Primitive buiders are a separate thing, and I think @photex and @bjz already thought about making a library about procedural generation that would cover that.

from gfx.

kvark avatar kvark commented on September 13, 2024

Another example pipeline

from gfx.

kvark avatar kvark commented on September 13, 2024

The drawlist concept is mostly defined in #209.

from gfx.

kvark avatar kvark commented on September 13, 2024

Nominating gfx_scene for this role.

from gfx.

bvssvni avatar bvssvni commented on September 13, 2024

I've looked over the gfx_scene source and it looks promising.

from gfx.

kvark avatar kvark commented on September 13, 2024

The ecosystem has been expanded to include gfx_pipeline, claymore_scene, and claymore_load (sub-crates of claymore). It is now as high as we could ever be:

let pipeline = gfx_pipeline::forward::Pipeline::new(...);
let scene = claymore_load::scene(...);
...
pipeline.render(&scene, ...);

Please evaluate these libraries at some time to see if they can fit the role. I'm pretty much done with the general architecture, so I'll be focusing more on the game itself, hopefully.

from gfx.

kvark avatar kvark commented on September 13, 2024

gfx_scene has been transferred

from gfx.

kvark avatar kvark commented on September 13, 2024

Closing because of the following great libraries:

from gfx.

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.