Comments (10)
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.
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.
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.
from gfx.
The drawlist concept is mostly defined in #209.
from gfx.
Nominating gfx_scene for this role.
from gfx.
I've looked over the gfx_scene source and it looks promising.
from gfx.
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.
gfx_scene has been transferred
from gfx.
Closing because of the following great libraries:
from gfx.
Related Issues (20)
- Hitting `unreachable!` branch in `gfx-backend-vulkan` during swapchain creation, Void Linux, AMD ATI
- ```supports_family``` only available on iOS 13 HOT 4
- gfx_backend_gl and metal: can't find create HOT 3
- Link error: missing symbol _kCAGravityTopLeft on macOS HOT 3
- New Metal pipeline cache doesn't work properly on Dota2 + portability HOT 2
- Support dynamic array sizes on Metal HOT 1
- Black screen when --features=gl
- Use hasUnifiedMemory instead of isLowPower on Metal
- Entered unreachable code on vulkan create fence
- Errors from VVL on Nvidia HOT 10
- Screen doesn't get updated if gfx_device_gl::CommandBuffer::clear_color gets called HOT 1
- 3 build errors on Windows HOT 3
- LICENSE files in package subdirs
- create_surface failed with 'AndroidSurface failed: ERROR_NATIVE_WINDOW_IN_USE_KHR'
- pre-ll: Vertex & constant structs fields are re-ordered in rust 1.67 so don't work HOT 1
- Missing MESH_SHADER feature in mesh-shading example
- misaligned pointer in `queue::Queue::get` HOT 3
- pubg
- MTLGPUFamilyMac1 is deprecated HOT 1
- Tivel
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gfx.