metaforce/hecl
Jack Andersen 40a26ae19d Add missing string.h and algorithm includes 2017-06-10 19:01:17 -10:00
..
bintoc addon distribution changes 2015-09-01 16:31:33 -10:00
blender Add visibility mode field for mappable objects 2017-04-22 11:44:18 -10:00
driver Add hecl::PathRelative() 2017-02-24 21:58:36 -10:00
extern Update athena 2017-05-22 03:40:55 -07:00
extra added extract tool 2015-06-11 23:08:49 -10:00
include/hecl Add missing string.h and algorithm includes 2017-06-10 19:01:17 -10:00
lib Isolate hecl::SystemChar in single header 2017-06-10 08:22:40 -10:00
test Reflection shader support 2017-03-25 19:51:58 -10:00
.gitignore Update boo 2016-01-15 13:35:06 -10:00
.gitmodules Add libjpeg-turbo submodule 2016-03-05 15:19:32 -10:00
CMakeLists.txt Use HECL_MULTIPROCESSOR macro for enabling multithreaded work 2017-03-10 07:58:43 -10:00
DataSpecRegistry.hpp.in Humungous refactor 2016-03-04 13:02:44 -10:00
Doxyfile implemented lba VFS 2015-05-21 22:21:44 -10:00
LICENSE Update LICENSE date 2017-01-07 14:14:20 -10:00
README.md Update README.md 2016-01-25 10:22:04 -10:00
bootstrap.sh bootstrap tweak 2015-06-25 09:56:15 -10:00

README.md

HECL (high-level, extensible combiner language)

HECL is a toolkit for building custom asset pipelines, assisting the development of conversion tools and runtime loaders.

The most significant feature is the intermediate HECL language, using an expressive command syntax to represent cross-platform shaders. This includes a common source representation and intermediate binary representation. Complete vertex and fragment shader programs are generated for supported platforms and may be built on-demand as part of a 3D application runtime.

# Combiner 1: Opaque *Diffuse* and *Emissive*
HECLOpaque(Texture(0, UV(0)) * Lighting() + Texture(1, UV(0)))

# Combiner 2: Alpha-blended single-texture
# (both texture-accesses folded to a single sample operation)
HECLAlpha(Texture(0, UV(0)), Texture(0, UV(0)).a)

# Combiner 3: Additive-blended single-texture
# (modern graphics APIs require blending configuration along with all shader configs)
HECLAdditive(Texture(0, UV(0)), Texture(0, UV(0)).a)

Beyond shaders, HECL also defines a rigged mesh format called HMDL. Meshes using this encoding interact with HECL, with pose transforms applied via the vertex shader.

For asset pipelines, HECL provides a project system with dependency-resolution much like an IDE or make. Assets in their editable representation are cooked in-bulk and whenever the source file is updated. Currently, blender is the only-supported input format for rigged meshes with node-materials.

Supported Backends

  • GLSL 330 (with optional SPIR-V conversion)
  • HLSL (Shader Model 4)
  • Metal 1.1
  • GX (complete TexCoordGen and TEV configs in intermediate structures)