Along with the development of Grease Pencil 3 and its new features, I have been focusing on creating several small Grease Pencil projects that cover a variety of styles, serving as potential test cases for Grease Pencil 3 to flourish. One of these styles I wanted to explore in Blender was Pixel Art. You can download the blendfile below to play with it. The effect only works in 'Eevee Rendered' mode in the viewport.
Pixel art is a digital art form where images are created and edited at the pixel level. This art style emerged from early video games and computer graphics, where limitations in computing power and display resolution necessitated the use of small, clearly defined squares of colored pixels to represent visuals. Pixel art is characterized by its blocky appearance and nostalgic charm, harking back to the aesthetics of the 8-bit and 16-bit eras.
Creating 3D Pixel art in Blender comes with its challenges and constraints. Pixel art relies on a fixed grid size, where each pixel must be carefully placed. Translating this to the 3D viewport can be tricky, especially when trying to maintain a consistent pixelated look across different dimensions and angles. I wanted to see the final pixels in the 3D viewport and not only when rendering. That way, I could easily control and adjust the pixels where needed. I’ve been using Eevee Next for the viewport rendering by setting its pixel size to 4x in the Performance settings. Then I disabled the anti-aliasing on the viewport in the preferences for visualizing raw pixels without filtering. This gave me the pixelated look I imagined. However, this did not influence the Grease Pencil strokes because they are not rendered by Eevee but by their own renderer. Luckily, Grease Pencil comes with its own 'effects' tab in the properties editor. This way, I could easily add the Pixelate effect to the Grease Pencil object and set the pixel size to 40 to match the viewport pixel size.
The result worked well with a fixed camera, but when panning or zooming with the camera, it was clear that the pixels of the viewport and the Grease Pencil pixelation did not align. As the pixels of the viewport were essentially acting like a filter that just interpolates a high-resolution viewport, the Grease Pencil effect generated static pixels that retained their size when zooming in. This caused odd discrepancies between the two render engines and constrained the camera to be static for a coherent pixelation effect.
I was mostly satisfied with the Grease Pencil Pixelation effect as its pixels remained consistent. By scaling the brush radius to 0.02, according to calculations, this would translate one unit in Blender into exactly one pixel. With that sorted out, it was convenient for drawing individual pixels that would stay consistent when moving the camera around, which is essential to meet the pixel art aesthetic. There were still some small interpolation glitches, where pixels were jumping around to match the grid when moving the camera, but that is to be expected in a 3D world.
Another method I explored was the new compositor in Blender 4.2. By using Eevee’s rendered view and the compositor set to ‘camera,’ I was able to create post effects in the 3D viewport in real-time. From the compositor, I could add the pixelate filter, but this also included anti-aliasing. This would soften the edges and interpolate pixels, which is not ideal for pixel art, where every pixel is carefully placed by the artist. As this has been discussed with developers, the Pixelate filter will get extra properties where anti-aliasing can be disabled.
For the 3D environment, I added additional Grease Pencil pixel strokes to create details and more definition where needed. On the ground and water, I used a modified shader based on the free Pixel Art shader addon by Lucas Roedel. The shader generates a screenspace texture from a Bayer filter combined with the RGB values from a Principled BSDF shader. To add static increments of value, a color ramp node has been added, with its interpolation set to constant.
For now, I had to make concessions and work with what is currently available in the 4.2 branch and keep the camera fixed for consistent pixel rendering. Hopefully, pixels will be easier to manage in the future to enhance the pixel art workflow in Blender. With the pixel size set in both Eevee and the Grease Pencil effect, I could begin to set up my scene. The question arose: what elements can I achieve with Grease Pencil, and which elements will be easier to create using 3D modeling? Here is a timelapse of the creation of the scene in Blender. I chose to have dynamic elements be animated Grease Pencil strokes and additionally added some detail on 3D objects with Grease Pencil to give them more definition and blend better into the pixel art aesthetic.
Download the Blendfile (Compatible with Blender 4.2 and up) here:
Thanks and a good inspiration for my next project.
Join to leave a comment.