8 Jan 2024 |
proconsule | I am looking at the projectm code, i want to add a deko3d graphics backend instead of the opengl one (i have to look how much effort is doing this) to speedup rendering. Opengl hits 60fps on almost all milk i tried, but deko3d is very very optimized for tegrax1. | 18:21:52 |
proconsule | Beside that i have to thank you a lot for projectm, i am 44 years old and i used winamp from the start, and having the old milkdrop running on my switch is terrific! | 18:24:12 |
codav | There's not so much going on 3D-graphics-wise. Mostly a few lines, and flat quads. Biggest performance eater here are the shaders (depend on the preset), the warp mesh if resolution is set very high (mostly adds CPU time though for the expressions) and if there are many custom shape instances, this will drastically increase the draw call count. Since there's basically nothing you can parallelize on the CPU side given how Milkdrop presets work, I'd guess there's not a lot of improvement you could get out of the rendering API itself. | 18:27:30 |
codav | If you only render the default waveform, no custom waves/shapes and a low-res warp mesh, the whole preset would only use around 10-15 draw calls overall. | 18:28:39 |
proconsule | Good | 18:28:57 |
proconsule | Thanks for the answer, is running very well with avcodec | 18:29:30 |
codav | But the custom shapes are really deadly if they use thick borders and textured polygons with lots of edges 😄 | 18:31:37 |
proconsule | Yes, i saw that | 18:31:42 |
codav | 5 draw calls per shape instance. And you can have up to 4000 of those 😄 | 18:31:44 |
codav | If it's only the shapes with no borders, easy. Just sort them back to front, hurl the geometry at the GPU and draw it in one go. | 18:32:38 |
proconsule | Wow, you spent lot of time optimize stuff | 18:33:04 |
codav | On modern GPU you could even use the geometry shader to generate the shapes themselves, just sending the center vertex and some parameters there, but that's not an option if we want to support embedded/low-end devices. | 18:37:04 |
proconsule | He made a mpv backend that uses deko to achive that fps, i than integrated all in NXMP | 18:44:44 |
proconsule | i am not happy of mpv for mp3 playback since i cannot access to the decoded samples in an easy way, to feed something like projectm | 18:45:56 |
proconsule | So since avcodec was already on my linker list why not using it? | 18:46:33 |
codav | I'm always in awe seeing what the homebrew communities on all the consoles etc. achieve. Then on the other hand the vendors trying to lock their hardware down as much as possible. | 18:46:52 |
proconsule | Yes, is a shame how much power is wasted | 18:47:17 |
proconsule | But you know, this lead to beeing smart | 18:48:14 |
proconsule | Thanks a lot for your time, i will post you a video of NXMilk running | 18:49:01 |
codav | Just to please the media industry so they can make billions with their IP. I mean, I can understand the issue to some degree, but it's just... that piracy was never really that much of an issue to kill off a whole industry. Not even on the Amiga, where it was thriving. | 18:49:20 |
proconsule | And the repo will be public this weekend i think | 18:49:22 |
proconsule | And it runs also on switch emulators | 18:50:19 |
proconsule | This is my first “big” project with NXMP | 18:51:31 |
proconsule | And since is the only video player of the scene i want to be te best i cann | 18:51:58 |
proconsule | But also i want to show the scene projectm | 18:52:19 |
proconsule | That i think is amazing | 18:52:25 |
codav | Yeah, Milkdrop, projectM, BeatDrop and Butterchurn are a great family! Music visualizers really need some kind of rebirth. | 18:52:59 |
proconsule | So i made a NXMilk to show how it can be | 18:53:00 |
proconsule | Thanks a lot. Here in italy is dinner time, have a nice day (depends on your GMT zone) | 18:54:25 |
Incubo_ | Yes, they are, but why not NestDrop? | 21:02:39 |