What Is BetaCell?
BetaCell is a toolkit designed to aid computer graphics programmers to achieve their objectives by embracing DRY (don't repeat yourself) code and offering an object oriented perspective with design patterns.

The toolkit encapsulates many common routines that are used throughout a computer graphics program and defines their access in a reusable fashion, this provides order to the application and allows the programmers to concentrate their effort in achieving more complex goals.

BetaCell is built for XNA 3.1.

What are the main features of BetaCell?

Runtime effect composition through the effect framework

If you are asking why you can't just add the lightning effect you already did to the texturing effect or why you have to do a different texturing effect for point, directional and spot lights (not to mention that there are two versions of each, vertex and pixel!) the answer is because you haven't been using BetaCell. With BetaCell you can:

  • Create effects through composition instead of repeating yourself or making a maintenance nightmare of conditional statements
  • Create effects on the fly, you just state which parts you want to join together
  • Create effect parts that you can use to build you own compositions  

Very flexible vertex definitions 

If you have worked with XNA, you may already have noticed that you have two options. The first one is to use the vertex with the most definitions and pass a lot of unnecessary information to the GPU (worst you can do!), the second is to create a vertex type for every single scenario that you have in your application, so if you have an object with lightning pre-calculated, you have to create a vertex with position and color, but if you want it animated you have to create another with position, color, vertex index and vertex weight, and then you have texture, normal, binormal, bitangent, etc.

The natural way to create a vertex element is to say something like createVertex(position, color, vertexIndex, vertexWeight) this is called composition in the object oriented world and can be done using BetaCell.

BetaCell favors composition instead of inheritance, conditional statements and repeated code.

Create content in Blender

Create animated objects in blender and load them in your XNA application. 

Read/Write access to all the properties in a mesh

With BetaCell you can dynamically change your mesh at runtime, redefine itīs vertex buffer to accommodate more data (texture, binormal, etc) and much more.

Create Height Maps importing them from HME

Create height maps using HME and load them in your application. BetaCell can divide the map into parts to do effective frustum culling and also sorts the parts in a front to back order before drawing to save fill rate. 

Create meshes procedurally

You can create spheres, cylinders, cubes, height maps and terrains by specifying level of detail like # of slices in the sphere and properties like radius. 

Compose particle systems through the particle framework

Compose particle systems through the particle framework. Use particle effect parts like acceleration, oscillation, fading, resizing, amongst others, or create new particle effect parts and define a particle system as the sum of these parts. Also you can define how your particles are emitted in many different ways.

Built in Ray picking

Pick objects in the scene with the mouse or shot some objects with your favorite gun, BetaCell has a simple interface by which you can intersect objects very easily. 

Advanced texturing techniques

Advanced texturing techniques built in like:
  • Normal mapping
  • Environmental mapping
  • Displacement mapping
  • Shadow Maps