• 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 Hexagonal texture filtering in Brahma engine
Post comment Comments
notaclevername
notaclevername - - 522 comments

Interesting.

Reply Good karma Bad karma+1 vote
Post a comment

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

Description

A quick test of my new version of the stylish hexagonal texture filter on a Duke3D level, with an animation that illustrates how square texels are turned into hexagons. This code is yet to be vectorized with SIMD intrinsics, thus the performance is not optimal, but the effect is enabled for all surfaces including the heightmaps. The artistic peculiarities of hexagon-shaped texels are that none of them are touching with corners, there are no straight lines, and no blurriness unlike bilinear/bicubic filters which are interpolation-based.

The texture filtering in Brahma comes in a variety of styles, normally picked by level designer's choice, which can be set up for every surface individually using engine's internal bytecode. The simplest form which is naturally produced by truncating the texture coordinates is the zero-order hold (which is basically nearest neighbor matching), some filters warp the texture coordinates, and the trickiest ones will mix several texels together.