Wednesday, June 27, 2012

Beerengine has been ported successfully to raspberry pi! This is the fifth fully supported platform: Mac, Windows, Linux, iOS and RPi. Main problems with RPi were
  • beerengine needs at least an operating system that supports the ARM hardfloat ABI (armhf), ie raspbian. Without armhf,  ARMv6+VFP are not used at full speed and the performance drops beyond 1 fps... :-) profiling with gprof showed that 99% of the time were spent in software FPU functions
  • gpu.c wraps now OpenGL and OpenGL ES2 with a light debug wrapper. That allows me to track GPU resources, validate all GL calls and handle some GL/ES differences. It also does the capabilities check etc
  • Window system interfaces are available for EGL, EAGL, GLUT and WGL
  • Compressed textures are very different on each platform, so the beerengine supports ETC, PVRTC and DXT through proprietary encoders. 
  • Bluetooth support on linux sucks, again. Currently (June 2012) it's not possible to pair keyboards/game controllers since some idiots destroyed the support in bluez 4.x - 

Thursday, May 17, 2012

Beerengine status updates!

improved navigation mesh handling: faster welding, more compact, binary cache, agents and entities.

complex scenes with up to 1000 models work flawlessly (on iPad2)

skinning, shading, ...

animated plants

bounding hierarchies

Tuesday, April 6, 2010

ein prosit der gem├╝tlichkeit

After doing a lot of horizontal development in the past months, the beer engine is getting closer to an early beta. The goals of it haven't changed:
  • not too dependent on a platform. currently the only dependencies are OpenGL, OpenAL, zlib, a C99 compatible compiler and very little of POSIX (which is covered/emulated on win32/etc).
  • use open standard formats like PNG, SVG, COLLADA, XML, ... and so on. Since I don't want any dependencies on middlewares like libpng, all formats are supported with custom code, streamlined for efficiency. The beer engine comes with its own PNG, XML, SVG, ... handlers - there are no linked libraries; Even zlib will be replaced later with a custom deflate function and OpenGL will be wrapped to allow the exchange with DirectX or plain hardware access. Using the engine from C++ and attaching middlewares is of course possible, but the beer engine won't put these dependencies on your project.
  • data preprocessing should not be needed. The engine transforms original artist data in well-known formats directly into its internal cache formats. There's no need to use an external converter tool - so artists can just save and start the engine.
  • the code should be straight-forward, no bloat, no fuzz, kept as simple as possible. Allocations and file I/O is reduced to a minimum
3D-scenes in COLLADA format (.dae) can be produced/saved with a lot of available applications. I'm currently using the latest (svn) beta of Blender with some custom fixes in its DAE exporter. I'm going to contribute my patches soon, most of them are in the field of curve/path exporting and texture attributes. It's already possible to define stuff like normal mapping inside of Blender and directly use the exported .dae-scenes with the beer engine...

producing and testing of an object-space normal map in blender

The beer engine has support for shaders, but I'm still busy with the fucking fixed-function pipeline, since some low-end platforms rely on it (like iphone). So I spent my precious time in writing some tools to assist in playing with these settings. That's so Y2k, man...

a silly tool to play and test the fixed-function pipeline of pre-3G iPod/iPhones

Since the beer engine uses open formats, at least on OSX you have a lot of previewers, even for the 3D scenes... Project files are currently available for Xcode, Eclipse, Visual Studio and plain Makefiles. It's even possible to produce Windows binaries with Xcode on Mac since I added cross-compiler support to the project. So far it compiles with gcc, msvc and llvm.

sneak peak

I'm using Inkscape (SVG) for all kinds of layered 2D user-interfaces. You can directly use image,rect,text,... with all supported transformations. As long as an artist does not use advanced clipping or compositing features of SVG, you get a 1:1 result in high-speed with the beer engine! Any element or group of elements can host any number of custom animation effects like blending, moving, rotating, scaling, etc. Basic user-interface elements like buttons, sliders, scrolled views, flick-panes and composites are available and it's easy to extend this library with new and more specific controls.

Inkscape is also freely available and powerful enough for advanced user-interfaces.

putting everything together: 3D and 2D scenes are always rendered into textures and composed afterwards, adding special compositing tricks like bloom, fov, shadowcasting, mirrors etc. is just a few lines of code.

I'm aware of ~200 issues that I'm going to fix in the next months - and then I'm going for a real showcase demo :-)

I'm not an artist :-)

stay tuned.