metaforce/hecl
Phillip Stephens d9b7229e79
Add input visualization, protect first 7 object slots from deletion
The first 7 slots in the game are related to the player, we don't want to allow anyone to delete them because the game *will* crash
2021-05-30 00:52:20 -07:00
..
bintoc bintoc: Use ZLIB_INLCUDE_DIR 2020-03-04 02:41:03 -05:00
blender Search for Python instead of assuming it exists 2021-04-02 20:04:59 +03:00
driver Start renaming project to Metaforce 2021-04-06 18:58:11 -04:00
extra
include/hecl Add input visualization, protect first 7 object slots from deletion 2021-05-30 00:52:20 -07:00
lib Add input visualization, protect first 7 object slots from deletion 2021-05-30 00:52:20 -07:00
shaderc Add initial imgui implementation 2021-05-29 18:45:07 -04:00
.gitignore Generate ApplicationReps.hpp in binary directory 2018-10-16 15:01:33 -10:00
ApplicationTools.cmake Fix shader generation 2019-10-12 07:12:50 -07:00
CMakeLists.txt ImGui cursors, clipboard, TTF font & fixes 2021-05-29 18:45:07 -04:00
DataSpecRegistry.hpp.in Minor fixes 2019-01-26 15:21:30 -08:00
Doxyfile
LICENSE Update copyright date 2018-01-02 14:23:18 -10:00
README.md Update README.md 2016-01-25 10:22:04 -10:00
bootstrap.sh

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)