I’m really not a “pixel art” type of guy. I wish I was, but unfortunately I’m just not as great with it. Now making it more interesting, what about textures? Those are more accessible honestly, and to me they’re a step down from drawings and stuff. So I began investing a bit of time trying to figure out how I can make it happen. After a couple rounds of doing manual pixel art, I realized I can potentially make procedural textures out of it. Of course, it won’t have the same feeling as manually created pixel art textures, but this project was all about how close I can get it. First of all some past things I’ve tried.
This was for my thesis film: The Door to Tomorrow
In these two cases above I’m basing the original texture off of procedural means. I had to do this partly because I had little time to generate nice looking backgrounds for the “game scenes” in the animated film. The textures were first generated in FilterForge, then processed again in FilterForge using a filter called: I Dream in EGA by Mike Blackney. The filter has custom color input, so I can choose a couple colors matching the scheme of the texture provided. This way we don’t just end up with the default 16 colors.
I can then pick and choose what parts of the texture I want to use and also erase bits and pieces of pixels accordingly to have “stuff sticking out.” The method is simple, rapid, and quite good looking as long as you don’t change pixel scales.
But I kinda wanted a bit more. So I began investing some time doing more manual pixel art to learn the little things considered. There are tons obviously, and after studying more pixel-art based textures, I came up with a small method allowing for the style to be achieved while providing the ease in deployment. Of course, this is FAR from being a complete solution to achieving that specific clarity in style, but it’s decent small step forward.
I have a copy of FilterForge 4 beta 1, and they featured groups. I’m using that. Meet the Pixel Shader, the grouped component that takes a color map and height map and spits out pixely textures with shading.
The method employed here is actauly relatively simple. The output look is what’s difficult to achieve. In creating the little shader there, I basically had to modify the entire texture to suit a nice looking image. So it’s a bit more work than just “plug and play” unfortunately. But the deployment is fairly easy and the adjustments you have to make to the filter are pretty basic.
The internals of this component isn’t impressive at all. It’s in fact stupid simple.
The package contains two derivatives so you can have two directional lights with controllable colors. There’s an ambient lighting, shading bias, and several more options to fill in the goodness. The final stage is the pixelation, which happens via a checker node. I use this because it has two color inputs, so if you input another image into that checker, you get a “checkered” result between two images. This can be useful for a “dithered” look. In this case the filter isn’t needing that effect so the output comes straight out.
But in the end, what you ULTIMATELY need to do is design a good texture to begin with. In this case, I designed the filter and had to modify it so it would work with the system I implemented. The idea here is that the little component isn’t doing the entire job, it’s the whole filter that’s giving it the good look and effect of it.
I went around modifying other filters too so to achieve the same effect. A couple months ago I produced a filter that created SciFi Tech walls. It’s a pretty detailed filter and I thought… it can use a bit of pixelation. Here’s a screen cap of the presets after adding the Pixel Shader group component to the filter.
Of course, it’s flawed in that it’s not the true goodness of hand crafted pixel art. I’m not going to state here I’ve made the pixel art machine, but it kinda gets part of the job done. In my mind, the next step after producing the texture is to actually go in and give more context by hand. I made this to help myself a bit along the way and not necessary to finalize a product.
While I don’t want to be too restrictive, I’ll need to keep the filter to myself for now. There’s still a lot of things being developed for it and I’m using it personally in my job as well. This post does expose some of its secrets but doesn’t explain it all.
In part two of this discussion, I’ll talk a bit more about designing the filter so it works around the Pixel Shader.