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:
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.
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 also intend to make this series of posts informative, but I have failed at that in the past. I'll try harder this time.