I decided to make something simple for the first test of LightSky while also making a fast, stable desktop game framework that builds on OpenGL 3.3. DirectX and GLES are not really a big concern of mine because if I branched out too much then development would become extremely slow and whatever progress I've made on my portfolio would suffer as well. For now, LightSky is my test framework that I want to grow into something "official" that can be used for commercial development. Of course, any progress made towards being a reputable framework should have some sort of documenting along the way, just for fun.
So here's just a quick example of where the framework stands right now :)
Today's test makes use of a few awesome graphics features. Modern OpenGL allows for a technique called instancing which allows you to render thousands of copies of geometry at once, greatly increasing performance when you're drawing things such as crowds or particles. I wanted this to be in LightSky from the start in order to make it easier to handle such tasks in the future.
Another thing that's in the test is Perlin Noise. As you can see in the screenshot, there are thousands of tiny gray balls being rendered and each uses a texture that's been randomly generated using Perlin Noise. This type of technique can also be applied to terrain geometry/texturing, sky boxes, and water.
Finally, I wanted to be able to easily render to the screen, then apply what was rendered to a texture. OpenGL let me do this through framebuffers. If you've ever played Half-Life 2 or Portal, you can see framebuffers in action whenever watching a TV or looking through a portal. First, something is rendered to a texture through a framebuffer, then you attach the same texture to a portal. This gives you the illusion of looking at yourself through a mirror.
These are just a few things that I've been focusing on in the early stages of LightSky and there's A LOT more that needs to be added before it's ready to be used in production. For now though, here's a demo. You can make the test program fulllscreen by pressing the F11 key, right click on the window in order to use your mouse, or left click to put it back in the window. Press the escape key to quit. A new noise texture can be generated by pressing the space bar. You can also change the resolution dynamically by rolling your mouse wheel (this lets you see the framebuffer in action).
I'll keep posting updates as I add more to the framework. Thanks for reading!

No comments:
Post a Comment