Improved usability update 1

Improved usability update 1

This is the first update where I’m trying to improve the usability of the editor. In this update I’ve completely reworked effect and emitter properties and attributes. Before there were 2 separate lists with properties where you adjust things like the draw order, the emission type, spawn options etc. And attributes where you would change how the particles behave overtime. I’ve combined these all into the same tab and made them all searchable by keyword. I have also rearranged the attributes so that they’re grouped together more logically. As you can see in the screen shot, instead of all the Read more


Compute shader prerecorded particle playback

Bounding boxes, more stability and even compiling on Mac now.

Happy New Year! Alpha version 24 has now been released. It has been a very busy period for me over the holiday, and a real time of learning new things.   Bounding Boxes for Sprite Data Something I wanted to accomplish was calculating the bounding boxes for each frame of a sprite data animation. This is where you can pre-record your effects and simply use a compute shader to interpolate the compressed data to playback the effects. It is a very fast way to use effects, as almost everything happens on the GPU. All the CPU has to do is Read more


Some Bug Fixes and Library Refactor

I just completed a refactor of the TimelineFX library so it’s further along in terms of stability of code, ie., less chance of me making a lot of breaking changes. I mentioned in the last post what I’d be working on but here’s what I did: Implemented my memory allocator for much cleaner memory management. A large memory pool is now allocated on initialisation and then sub allocated from. If the pool runs out of space then a new pool is automatically added. This of course can be overridden if anyone wants to use their own allocator instead. I did Read more


Renderer Rewrite Done and Alpha 22 released!

New alpha version released powered by a new renderer! So last blog post I mentioned that I wanted to refactor the renderer I use and also write a memory allocator and both those things are now done! It was a lot of work the last 3 months but I’m really pleased with the way things are going.   Zest Pocket Render So I did a complete rewrite of the renderer (based on the previous one) and also re-wrote it in c which I really enjoy using. Zest is a very minimal but flexible renderer which currently focuses on rendering sprites Read more


New Sprite Data export and more optimisations

Wow, 2 months went by already! Loads of work has been since then though, as mentioned in the last update I wanted to add sprite data exporting so that you could playback effects buy just uploading the sprite data to the GPU and interpolating between frames for smooth playback. And this is exactly what I’ve managed to do and it works extremely well! This is just an initial proof of concept but now the basics are done and now I know it will work well I can continue to improve and add features to it. Here’s how it works: Sprite Read more


More Optimising – SIMD Particle Updates. Alpha 20

Just uploaded a new Alpha version of the editor, which doesn’t have too many new features but does have a huge amount of new stuff going on under the hood. Fully implemented SIMD for updating particles I’ve spent a long time thinking about how I would go about doing this ever since taking on the rewrite of TimelineFX from the beginning. Being relatively new to C/C++ and SIMD in general, it has been a step-by-step process to get to this point. In the last blog post I made, I talked about how I made things multithreaded, and now I’ve added Read more


Optimisations and stability

A long overdue post, but rest assured, lots of work has been done over the last couple of months! Optimizations of the TimelineFX Library Firstly, for most of December, I did a big refactor of the TimelineFX Library, not just to optimize it but also to open the door for a lot more optimizations in the future. This had two main steps: I transitioned all the data for updating effects, emitters, and particles to “structs of arrays”. Without going into too much technical detail, this makes it a lot easier to parallelize updating the particles. The problem with storing all Read more


Translation graphs

So the last month and a half has been mainly just trying to figure some things out. Lines You’d think that lines would be quite easy to draw but they’re actually a lot more complicated to do properly then you might think. I wanted to update the line rendering in my renderer so that they were more efficient then they current were. They were just using gl lines basically where it’s a lot harder to manage the thickness of the line. The other reason that I wanted to spend some time on it is because I also want to implement Read more


Cylinders, icospheres and eff file converter for old files.

I just uploaded a new version of the TimelineFX Alpha with a few new features and more bug fixes. Here’s the main highlights: Cylinders I added 2 new emission types for 3d effects. The first is cylinder, which is exactly as you’d expects – allows you to spawn particles in a cylinder shape. Also worth pointing out that making the cylinder have 0 height you also have a ring emission type. Icospheres Icosphere is similar to an ellipse but with the icosphere you can spawn in a grid with up to 5 subdivisions to give a unique effect. An icosphere Read more


More stability and a refactor

I have uploaded a new alpha version which I hope brings a lot more stability. After the new 3d version I wanted to refactor a lot of the underlying library to try and optimise it more. I’ve spent a long time thinking about the best way to update particles and in the end I think I’ve come up with a reasonably decent way of doing it by having a 3 separate methods depending on the nature of the particle effects being updated. These 3 different scenarios are: Unordered particles For a lot of particle effects you’re not worried about the Read more