Comments (12)
@DJMcNab Thank you for responding!
When you spread out the circles, yes, the problem goes away. GPU usage goes down and framerate goes back to normal!
I'm now going to test the with_winit
example to see if there's any issues.
And i'm glad that there are plans to make this better! :D
from vello.
We don't handle cases where there are large numbers of items in the same tile very gracefully. If the circles aren't all on top of each other, are the performance characteristics better?
Can you reproduce this same issue by zooming out significantly in our with_winit
example?
There are some plans to make this better, see e.g. #gpu > Sparse Strip Path Rendering
from vello.
I'm not sure whether this is a useful issue to keep open. My suggestion for you would be to just avoid creating such degenerate scenes - if you/your users control the content, that should be viable for now.
from vello.
@DJMcNab I personally think you should keep this issue opened, atleast until there's a solution about it. Because having this amount of objects/shapes overlapping eachother will happen if you have games that have a lot of shapes and detail.
So for example, if i want to make a bullet hell game that is fully vectorized, sadly i wouldn't be able to choose this renderer, because i could stumble upon this issue.
This is one of many examples, and this issue happening mid-game developement could've be kind of a bummer.
from vello.
I don't think this issue occurs when there are a handful (say ~200) items in the same tile - it only becomes significant with huge numbers of items.
I would be extremely surprised if a bullet hell game had a meaningful reason to run into this issue. This is absolutely something we are aware of, but it only manifests in unrealistic cases.
from vello.
This seems like a variant of #419 and #305 and #409.
from vello.
I don't think this issue occurs when there are a handful (say ~200) items in the same tile - it only becomes significant with huge numbers of items.
OP ran into this with 1001 items; is that so much bigger than 200?
from vello.
I don't have a good sense of what the problematic numbers are. I did misread the initial message as containing 10_000 items.
I have observed that I don't really run into this issue in our mmark example, and that does have some quite significant overlap.
Nevertheless, I think this issue has the same cause as those other issues, and so can be closed. Thanks for pointing that out. I'll leave closing this to the author to do so, if they're satisfied.
from vello.
@DJMcNab If you want to see an example of what people can do in a 2D engine, you can take a look at custom Geometry Dash levels.
There are some that are really object dense, and yet the game is so optimized that it can render them in a potato:
Sedulous by Samifying (205.156 objects)
Ultra Violence by Xender Game (172.482 objects)
Change of Scene by Bli (69.211 objects)
This game runs on textures and not on vectors, but still, its quite an achievement from the developer that you can run these.
Just a quick question before closing it, is the Sparse Strip Path Rendering one of the goals for Vello 0.3?
from vello.
Also @dominikh thank you for pointing out that i'm spawning an extra shape lmao, i'll fix that tomorrow!
from vello.
Just a quick question before closing it, is the Sparse Strip Path Rendering one of the goals for Vello 0.3?
I don't know. I suspect we might release a v0.3 before that work is complete.
And I think my point about having that many objects in the same location still stands. Those do have that many objects, but the total number on-screen and in one location is still relatively small.
from vello.
I don't know. I suspect we might release a v0.3 before that work is complete.
Nice! Can't wait to see that in action! I've seen the XulipChat about that, and y'all are implementing insane stuff! Good luck to y'all and i hope the rendering technique goes well :D
And I think my point about having that many objects in the same location still stands. Those do have that many objects, but the total number on-screen and in one location is still relatively small.
Y'know, you're probably right! I think one way to find out is to make a scene that dynamic. Still i'm very glad that despite all of it, y'all are implementing techniques that fix these issues anyways. That shows a lot of love and dedication to this project and i can't wait to see how Vello evolves.
I'll close this for now, and i'll wait to see how progress on this goes.
As always, thank you so much for responding, i appreciate it a lot!
Have a fantastic day/night :D
from vello.
Related Issues (20)
- Serde support for re-exported Peniko types HOT 1
- Rendering issue when clipping and stroking the same path HOT 5
- How: `scene.append_with_opacity(scene)` HOT 3
- IOS app crash 0.2.1 HOT 1
- Drop shadows HOT 2
- Corruption issue with clipping HOT 4
- Clips cause compute shaders to take 10 seconds and results in corruption
- Infinitesimal stroked bezier fills whole tile HOT 4
- Examples don't run on Raspberry Pi 4 HOT 12
- Vello image rendering artifacts? HOT 3
- Ability to directly use a wgpu::Texture instead of a peniko::Image. HOT 2
- Zero-width stroke acts as fill HOT 4
- Better API for already GPU-resident images HOT 2
- Add an API to reserve a scene HOT 2
- Stack of scaled layers breaks at certain window size HOT 3
- Incorrect COLR Emoji Rendering
- Sparse strip path rendering HOT 1
- Add the linebender lint set
- Layers that modify transforms
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 vello.