I recently posted a new video of AteBitVJ up onto Vimeo. It’s an interesting one because it shows how a single, pretty basic effect can be made into something much more by applying a few layers of effects. I’m a big believer that you can really easily improve your real-time visual effects by applying some simple post-processing, and I thought it might be nice to delve behind the scenes into how I go about doing that.
So, first off, here’s the video:
It’s recorded live from AteBitVJ with FRAPS in a single take – no external post-processing or editing involved. Unfortunately the video compression hasn’t been particularly kind here and you can see some ugly compression artifacts. Luckily, the screen shots in this post will be lossless! The audio is provided by 4mat and is called “Spun Gold”. It’s one of my favourite tracks from his 2012 album, Origins.
The base layer for this video is a pretty simple effect – audio FFT data from the track represented as an infinitely scrolling 3D landscape. By itself this effect can look quite nice, but I wanted to get some more out of it. I started out by zooming in and cropping so that it fills most of the frame:
One of the reasons I wanted to use a canvas (rather than tables of characters) for my textmode library is that is allows you to easily mix in normal 2D graphics and use effects like transparency. This post is a quick example to show how this sort of thing can work. Click on the image below to see what it looks like and then I’ll delve into the method behind it:
Recently I’ve been thinking about making a textmode demo. If I’m honest this happens about once a year, usually when the results of the annual Text Mode Demo Contest come out. I love that TMDC is helping to keep textmode alive, but I always feel that the demos they attract are, often, just standard 2D or 3D renderers passed through an image to ASCII filter like the impressive TextFX. Now, don’t get me wrong, I love the look of some of these demos. But I do feel like they are missing the point somewhat and I’d love to see some hand painted ASCII art in amongst the filtered stuff. Hopefully I’ll actually be doing something about it this time, but you’ll have to wait and see..
So, I like textmode art. A lot. I also like realtime. A lot. Realtime textmode demos that end up rendered out to a video and shared around as a YouTube linke? Not so much. It’s 2013. We should be able to watch textmode demos in their crisp, “full high-res” glory. And that’s where this article comes in. I’ve been taking a look at getting textmode effects running in a browser. Turns out it’s surprisingly easy even if, like me, you haven’t ever done any serious browser coding. Here.. I’ll show you..
Time for another update on AteBitVJ. The latest addition to it’s arsenal is the ability to create your own effect modules from scratch. Anyone who knows me or has read this blog will know that I am a big fan of Processing. I love it’s immediacy – that I can very quickly prototype and test out ideas. Several of the effects modules in AteBitVJ started out as Processing sketches before being re-written in C++ and HLSL. In fact, it was partly due to me wanting to take my audio visual Processing experiments further that led to me creating AteBitVJ in the first place. So it’s fitting that I’ve added a Processing-like scripting library to the app. The cool thing is that these scripted modules are immediately fully integrated into AteBitVJ, giving you access to a wide range of filters, modules and synchronisation options.
The scripting language I chose to use is Python, but it was a close call between Python and Lua. I’ve embedded Lua a lot in the past, mostly in various commercial games like Crackdown, and have always liked it. I find that it’s very easy to embed and is pretty safe and simple for non-technical people (like game artists and designers) to pick up. Python is a newer discovery for me and I’ve only been using it in anger for a few months. I’ve been using it a lot in my day job, so it’s advantageous for me to take a more in-depth interest in it, but I’m also aware that a lot of artists are getting into it through scripting in packages like Maya, Max and C4D.
So here’s a quick video of the latest version of AteBitVJ. It not only shows off the immediacy of the UI (the whole video is shot in one take) but also the Python scripting – the main visual effect you see is Python scripted.
And here’s the script itself:
Did some cleaning in the garage this weekend in preperation for a house move. Here are some of the random things that I found.
First off, a Dreamcast dev kit. This one doesn’t work – I think the graphics cards is fried. Still a lovely looking unit though.
A large, red Gravis Ultrasound. This was a mighty soundcard back in the 90s. It had on-board sampe RAM and got a lot of love from the demoscene as a result.
Three different types of storage: a 3.5″ disc, a 5.25″ inch disc and a monster 15.1″ disc cartridge. The RL01K-DC holds a whopping 5.2MB and was used in the venerable PDP-11.
Way back in December of last year I was honoured to be asked by Abyss, one of the main organisers behind the massive Assembly demoparty, if I would be interested in creating an invitation demo for them this year. Of course I jumped at the chance. It’s taken a while (curse you real life and your endless demands!) but here’s the result:
The demo is written in C++ and GLSL using OpenFrameworks 007 as a base. That’s a bit of a departure from my usual DirectX + custom engine approach, but I needed to familiarise myself with OF for my job and this seemed like a good way to go about doing that. So this is actually my first ever (and possibly only ever) OF release.
The wonderful soundtrack for this demo was created by Brendan Ratliff, aka Syphus, aka Echolevel. This isn’t the first time we’ve worked together – back in 2008 we made the matter-of-factly named Ribbons, Tunnels & Techno, a demo that I’ve always had a bit of a soft spot for.
Shortly I’ll be packaging up the code for a full source release and I’ll blog a bit more about the creation of the demo at the same time. Until then you can download the windows executable from the Ate Bit site and, if you’re feeling generous, you could always leave a nice comment on Pouet.
It’s still fairly secretive and hasn’t been seen in public yet but my latest project, AteBitVJ, is coming along nicely. The aim of AteBitVJ is to take the best bits of some of my previous works (my demoscene output, my Processing experiments and music visualistations and a bunch of my other, non-public, experiments) and wrap them up into a real-time VJ app. The unofficial tag line for the project is “no loops allowed”, meaning that it’s not a VJ program for playing video loops – pretty much everything is generated (and tweakable) in realtime.
I’ve taken a little break from Flash and gone off to play with ray marching – an optimised form of ray tracing. I started off using the GPU, then ended up with a nice little Processing sketch that I’ve uploaded to OpenProcessing.org. Open Processing allows you to share sketches with others and is a great place to pick up inspiration and learn – every sketch uploaded includes full source code, easily browsable on the site.
(click on the picture to run the sketch)
Be sure to play around with the F and M keys to get a look at what the sketch has to offer.
Work continue apace on my Flash game, Bullet Hell Surive. Actually, no it doesn’t. What’s the opposite of apace? Slowly? That will do.
With most of my time now taken up by housedad duties, I’m finding it hard to get enough time to get things done on the project. Occasionally I get an uninterrupted hour or two and get lots done, but usually it’s half an hour here or there and once I’ve got settled in the time is half gone. I get the distinct impression that, were I working on this fulltime, I could have got to this stage in the project in a single week.
(click on the picture to run the demo)
So what’s new in this version? First up is the level editor. You can use this to create your own levels, which you can then play. Continue reading
Yup.. I’ve finally joined Twitter. Drop by and follow me, I’ll be talking about BHS development (and other things) as they happen.
Twitter username: evilpaul_atebit