Just a quick update on what’s been happening since the last post. I’m pretty much almost there for an initial Alpha release, I think I was calling it a beta before but Alpha probably makes more sense. Since the last post I have implemented the following:
- Particle drawing now utilises compute shaders. There’s still some things that I’d like to expand on but it’s a lot faster then it was. Now the particle positions/scale/rotation are udpated on the CPU into a staging buffer which is uploaded to the GPU. The GPU then uses that buffer to update a vertex buffer and does all the transformations there which is a huge burden off of the CPU and much less data to send to the GPU each frame. Would also like to experiment with instancing to see if there’s any difference in speed but my feeling is that there won’t be much. Ultimately it would be great if effects could be entirely updated on the GPU but will look at that further down the road.
- The TimelineFX library is separate to the editor and renderer agnostic, so hopefully it’s easily to implement in other engines.
- I’ve been recreating a lot of the example effects which as expected uncovered a bunch of bugs that I’ve been working through and fixing.
- Added a few new features already that aren’t available in the previous version, such as: New intensity attribute. This is a multiplier for colour that works for both Alpha and Additive blending so you can tweak how vibrant particles look. A much more user friendly shape importer so that you can see exactly the frame size of animated shapes you’re importing. You can see all the frames of animated shapes on the Shapes tab when you hover the mouse over them.
- DPI font and UI scaling is now easily selected from the settings menu.
- General tidying up of the UI (still loving imGUI!). I added little angle indicators into the angle drag boxes and changed the layout a little bit here and there.
So I will keep creating effects to catch as many bugs as possible and go for an alpha release on 1st March. Undo is still to do and will probably just do that after the Alpha is released. I’ll concerntrate on making things as stable as possible with the alpha release before adding new features.
I think things will go something like this:
- Bug fixes and stability up to Alpha release.
- Implement undo and keep bug fixing. This will no doubt include tweaking based on feedback.
- Implement some of the initial new features that I want.
- Upgrade Alpha to Beta and make a little bit more noise about it.
- Will work on the Library at this point to refactor, optimise and document so that it’s ready to go open source and get implemented into other engines. I’ll probably implement it myself in one or two so that I can iron out any difficulties that might arise. I’m thinking Unity or Godot (the 2d versions) would be a good start.
- Will probably look at the Mac version at this point. Not looking forward to this and I hope that coding on the Mac these days doesn’t suck too hard, (I don’t want to have to use xcode!). I’m also worried about how strict Apple are now on what’s allowed on their coding platform.
- More new bigger features before the final release, then I’ll hopefully release with some premium effects for purchase.
Some more images: