Bullet Physics added.

A new wonderful feature that has been added is bullet 3D physics. I have used the CAPI to achieve this and added many missing calls (velocity, speed, etc). Working on more complete integration with bullet - so far I would recommend bullet to anyone looking for a good physics library, its extremely impressive.

Features... Features...

Some fun with crazy shaders:

Can now add meshes and svgs to a scene - currently in default positions. This is just an initial implementation, the scenegraph needs to be changed in the future.

The sample above shows a mesh and a svg loaded into the scene with the asset view open. 

Working on a release build and more features. Terrain, scene viewer, attach system, texture and shader attach system. The user will be able to assign shaders and textures to a mesh then saved as a composite object. The main reason for this is to provide a simple way to handle asset assignment.

LEAP Motion coming..

More interesting developments recently as I will be integrating the LEAP motion system into byt3d as well. This is going to provide some powerful interactive capabilities between the LEAP and the oculus Rift VR. Project development with byt3d is also starting up as well (which will help add features to byt3d). Many new features should be coming soon.. 


The above image shows the asset browser starting to take shape. This should be complete very soon and scene management and editing will be the next major features. 

Oculus Support 

The development of byt3d has really progressed greatly in the last month. I haven't had much time to update this page although the source is regularly being updated. The big news is that within the next day or so I will have rendering support for the Oculus Rift in OpenGLES. This has taken a little bit of massaging their distortion shaders and adding some render passes to the byt3d system but its nearly there (eye separation and focal distance is all that is left).

oculus + asset panel

Here's one teaser with the new asset panel on the right of screen. All the distortion and oculus adjustments for the display are available and will be checked in soon - once some testing is completed. Another big addition to the system is the new in-app debugger panel. This is still new and very simple and allows stepping, stepping out of function scopes, examining locals and trace stack. The debugger is already in the source and usable now. 

oculus + debugger

A new release will be built soon and the oculus tracking is the next main component to be added (I want it ready for when the SDK hardware arrives!). After that there is still a great deal of editor type features to be included (ray tracing, object selection/addition, property setting and so on). Also I intend to update the documents over the new few weeks to match how the design has moved.

Setup Guide

byt3d Development Setup Guide

Im sure there are a number of people out there who have looked at byt3d and not been able to make much sense of it, or get it working. Hopefully this is the first setup in getting the Development side up and running. In the future there will be a simple installer package, and there wont be much need for this.

More Updates

Byt3d now has a 'front end'. It is currently extremely basic, and does nothing important yet, but it is well under way. There are three new areas:

1. The Configuration Panel - eventually this is where you will configure a project. Ie target platforms, names, asset folder paths, and so on.

2. The Startup Panel - once configured you will go to a panel for starting the editor. In this panel it will allow to choose between playing back the current project, or entering modification mode/editor. 

3. The Asset Manager - essentially the same, but is about to change quite a bit. The aim is to remove all the directory listings and make it more thumbnail / library based. Easier to navigate and use.

In the Editor there are a number of new things:

- the tilde '~' key now opens/closes a console. This is a normal lua execution console. It is in its early stages so beware it may not do everything you need :)

- The LookAt function for cameras now works using a Heading and Pitch method. I saw no point in implementing a roll (flat camera movement for the time being). Once I have Quaternions in I will change this to something a little more dynamic.

- A grid has been added. This will also change, I generally dont like the texture use so it will become internally generated lines. Also the red / green / blue arrows will be added to indicate traditional X,Y,Z axis. The aim is to use X with +ve to the right. Y +ve up, and Z +ve into the screen - this is not how it currently is, but it will change.

Many more things coming.. some very very exciting things to be shown soon. In the next two week, there will be a great new way to design game code / script. Along with a little tetris test. A first project will be nearing implementation and the asset manager will be stabilising and being finalised.

So enjoy the couple of screenshots.

This is the new grid in the editor.

Some notes about byt3d:

1. Very early prototyping stages. Dont expect any miracles from this system yet :)

2. OpenGLES ONLY.  byt3d will be developed for this target graphics set only. Yes, it is able to be changed to work with OpenGL and even DirectX (by changing over the interface files). However this system was to trial the idea of a high level OpenGLES system that could work across many platforms (including desktop).

3. Not just 3D. With Cairo integration there is a powerful 2D vector rendering system sitting at your fingertips. Additionally the cairo gui widgets I have developed (Exploders, Sliders, etc) allow very quick and good looking interfaces to be made without huge amounts of effort.

4. This is mainly for fun. In 12 months time, it will likely be getting more serious. :)

If you have any questions / problems please dont hesitate to contact me.

byt3d Main Startup

The above screenshot is the new startup screen for byt3d. The aim of this is to organise the production flow of the development of an application. A user will be able to test, modify, get help and configure (and eventually build) from a single formal 'front end'. 

Once an application is complete the user will have the option of having some "startup" interface (either their own or a template, or none) and then using the build tools deploy the entire application as a package for the appropriate platform (Android and PC). The goal is to make development and production of an application a fairly high level task, and keep much of the mundane repetitive work hidden from development.

At the moment the asset manager and scene system are detached from execution. But this will be fixed / updated / completed in the next two weeks. See the status page for more information for what is coming and when.

byt3d AssetManager

The AssetManager is the base system that is used to designated assets associated to a project. The initial framework for the assetmanager is mainly complete, and now a number of file type associations and preview methods are being added. 

Once complete a project can automatically add assets (by data filters etc) or manually control what is included in the project build. This way a developer can have multiple sets of assets for different deployment platforms all within the same project file structure (if needed).

byt3d LuaJIT

New Additions

Default Sky can be added - still under construction, will be checked in tomorrow.

Major rework of HUD elements, Render object and added priority rendering system. More testing needed.

Assimp lib to be added back in next. See status update for more information.

Recent Additions

Scroll icons added to the listbox.

Listbox now clips and scrolls. Left mouse grab an empty space and move. This is mainly aimed at tablets and phone devices. The scrolling also works with a mouse.

Current State

After about a month of trying to track down some painful and annoying little bugs byt3d has made its metamorphosis to being LuaJIT based entirely. 

Overall the changeover is generally neat, but there are some large portions that will need complete reorganization as I move the rendering system to use a number of new features:

  • VBO's and FBO's
  • Shader Pools (added render performance - there is a basic one working, but its limited)
  • Texture Pools
  • Other resource pools. 

Additionally Materials are still in flux and may or may not return.

Assimp Library

Sadly this has been neglected in the change over, and so much of the dynamic loading of meshes and textures is done differently now (this is actually for the better, reduced memory foot print greatly). However this great library will be restored when I have some spare time. 

Source Code

The source code has been updated and a the old source code added as a downloadable archive. So if you are looking where the C# version went have a look in downloads.

Finally.. the necessary screenshot. This is just a sample of the Cairo GUI running happily with a 3D scene of alpha cubes. 



byt3d Project Description

A lightweight modern OpenGLES 3D rendering and game system for the development of game and sim related applications - byt3d because its Small and Simple.

Note: All art work is copyright by Brendan McKeown. Use of his artwork is not allowed outside of this project without the author's consent.


Build a complete 3D engine that contains the following modules:
- Reasonably modern deferred renderer (based on OpenGLES V2)
- OpenSteer AI
- Physics system (simple)
- Entity / GameObject Framework (similar concept/implementation to Unity3D).
- OpenAL audio system (integrated with 3D Entity system)
- Input System (DirectX Input based system)
- Extendable interface (to add effects, and more feature modules)
- Multiple mesh and anim format support (via Asset Import Lib)
- Generic Material system - supporting GLSL (primarily) for shader support.
The aim is keeping the framework and ease of use simple. Like it used to be.


MS C# Visual Studio Express 2010 / Mono Develop
OpenAL install
GLSL Shaders
AssImp Library (mesh loading and scene structure)


Initial planning and design.

The development of an interface for a previously built deferred renderer for OpenGLES. Included will be a simplistic physics system and an entity / gameobject framework.

Last edited Apr 26, 2013 at 7:00 AM by dlannan, version 66