• Register

Brahma is a 3D game engine with a rather retrofuturistic design, intended for small studios and solo developers. It's being written from scratch in C++ using standard Windows API and no third-party libraries. This technology introduces an entirely new class of low-latency real-time engines that make special timing requirements, treating frames as video fields with a target time budget of 2-4 ms each, down from 16-33 ms frame budgets normally seen in game engines. It evolves in a different way than other modern engines, rejecting conventional BSP, Z-buffer, floating-point coordinates, and most of the lame screen-space effects in favor of innovative and efficient techniques. The engine is non-Euclidean capable to some degree; also it supports true displacement mapping for sectors as a means to virtualize geometry that affects collisions. The engine is also carefully designed to be easy and convenient to develop for, yet versatile and adaptive to any needs.

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Add media Report RSS Baked normal mapping test (view original)
Baked normal mapping test
embed
share
view previous next
Share Image
Share on Facebook Post Email a friend
Embed Image
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account:

Description

Despite multitexturing capabilities in Brahma, some lighting can be "baked" into temporary textures that are runtime-generated. Here, a texture is composed of a diffuse color map with a normal map applied using a specific direction of light.

As these normal maps also use a special 8-bit palette, the entire material with a diffuse, normal and a specular/glow/height map can fit into the same amount of memory as a 24-bit RGB texture alone.

Baking is extensively utilized in older games like Quake and Half-Life, where it was used to handle the lightmaps. It can be identified by the lighting having the same level of detail as the texture pixels. As shading doesn't need to be recalculated for every frame pixel, it can work very fast even for software rendering. However, it's not that good for dynamic lighting and speculars, and can be troublesome to couple with high dynamic range rendering.