Wednesday, August 28, 2013

2-D Tiles Renderer - Introduction

I got caught up in the Starbound hype, so I've decided to make a series on creating a 2-D tile-based renderer with procedural textures, normal mapping, pre-multiplied alpha, dynamic light and occlusion.  I guess you could think of it as a fan project.


Being a project of at least moderate size, it's a good idea to plan ahead, and to divide it into a set of smaller projects.  After some deliberation, I came up with the following parts, for a start:

  • Render to multiple layers, combine them, and post-process for gamma-correction and dithering.
  • Texture loader that can call generation procedures when a texture does not exist yet. (Maybe)
  • Texture generation procedures.  They output all seam types and orientations with multiple variants.
  • Tile renderer that uses instancing and hardware buffers.  It probably divides the map into patches.
  • Fast/parallel occlusion checking function.  Output format must match input format, for recursion.  Final output needs to be filterable. (e.g. feathering)
  • Background diorama renderer with parallax and altitude effects.
  • Planetary parameters object that can output the necessary rendering parameters; e.g. lighting and atmospherics.
  • Many more pieces that I'll think of later.
I probably won't finish the whole thing, but, if I end up with something useful, I'll release the source code.

I also intend to make this series of posts informative, but I have failed at that in the past.  I'll try harder this time.

No comments:

Post a Comment