-
Notifications
You must be signed in to change notification settings - Fork 0
Rendering Mods and Libraries
The Fabric tool chain is host to rapidly-advancing rendering capabilities. However, the modular and community-driven nature of Fabric means there are many components! Here is a handy list. More information about each is below.
-
Fabric Rendering API: Defines standard rendering features available to Fabric mods.
-
Indigo: Default implementation of the Fabric Rendering API, ships with overall Fabric API.
-
FREX: Unofficial extensions to the Fabric Rendering API, including shaders.
-
Canvas: Shader-based alternative to Indigo - currently the only renderer that implements FREX.
-
JMX: Extensions to Minecraft JSON Model Loader enabling features of the Rendering API and FREX.
-
FOML: OBJ Model Loader
-
Satin: Full-frame, post-render shader loader.
-
Exotic Matter: Advanced library for dynamic models with extensive features.
Most of the capabilities documented on this site are part of or enabled by the Fabric API. If you don't know what Fabric is yet, you should learn about it before you continue.
Render-related APIs in Fabric are split into separate modules:
- fabric-models-v0: Hooks for loading custom models and model-related resources.
- fabric-renderer-api-v1: Interfaces for fancy/dynamic terrain and item rendering.
- fabric-rendering-data-attachment-v1: Thread-safe access to BlockEntity data during terrain rendering.
- fabric-rendering-fluids-v1: Hooks for custom fluid textures.
- fabric-rendering-v0: General hooks (entity renderers, block colors, reload event)
- fabric-textures-v0: Hooks for loading custom textures
Links
FREX defines extensions to the Fabric API for shaders, conditional materials, multi-layer materials, and other features in active development. It also includes a shaded copy of the JOML math library which offers specialized support for common rendering use cases in vector and matrix math.
Most FREX features only become available when a FREX-compliant renderer (i.e. Canvas) is also loaded. However, it will operate with Indigo (with most new features disabled) so that mods can depend on it reliably. Mods will however need to check if those features are active before using them unless the mod also depends on Canvas.
Some FREX features do not require Canvas. Material loading, for example, can be used with Indigo but the resulting materials will not have unsupported features like shaders or multiple sprite depth.
FREX interfaces extend the Fabric Renderer API interfaces where applicable, so that any renderer that implements FREX will be fully backwards compatible with the Fabric Renderer API and any mods that depend on it. If your mod does not require FREX features (or JOML) then you should reference the Fabric API instead of FREX. Your mod will still benefit from performance and visual improvements offered by FREX-compliant renderers.
FREX is not a Fabric project, but FREX features that become popular may be proposed for inclusion in the Fabric API.
Random Fact: The "F" in FREX does not stand for Fabric. What it does stand for varies based on how well the code is behaving.
Links
Indigo is the default implementation of the Fabric Renderer API and is included in the standard Fabric API distribution. It supports all features defined by the API, including:
- Per-quad control of emissive lighting and diffuse plus ambient occlusion shading.
- Per-quad control of render layer.
- Per-quad integer tag values for dynamic transformation and analysis.
- Fully dynamic block and item model output.
- Improved lighting for angled and irregular shapes
Indigo was designed for high fidelity to Vanilla Minecraft rendering and maximum compatibility in heavily modded environments, but may offer some minor performance improvements for chunk-loading.
Indigo will be automatically disabled when another renderer is loaded that implements the Fabric Renderer API.
Links
Canvas is a shader-based implementation of FREX, which means it also fully supports the Fabric Renderer API. It is currently the only FREX-compliant renderer.
Current Features
- All Fabric Renderer API features (same features as Indigo)
- Faster chunk loading
- Smooth lighting
- Hardcore darkness (terrain only)
- Less foggy fog
- Multi-sprite materials for borders and blended/composite texturing effects
- Material Shaders - mod authors can define custom shaders for model materials
- Conditional Materials - materials that are only rendered when a global condition is true
- Apply shaders and emissive effects during item rendering
- JSON file material definition (via FREX)
Links
JSON Model Extensions adds support for Fabric Rendering API and FREX features to Minecraft JSON model loading. It can also be configured to load all JSON models as Fabric/FREX meshes, which may offer a modest reduction in memory usage due to more efficient data structures.
Current Features
- Backwards compatibility with Vanilla model JSONs
- Alternate texture definitions for each face
- Up to two sprite layers per face
- Material specification to control lighting, render layer
- Material inheritance, similar to other JSON model inheritance
- Support for separate definition for FREX renderers (useful for shaders)
- FREX definitions can reference shaders loaded via FREX JSON material loader
Links
OBJ Model Loader for Fabric
Links
Satin makes it easier to create and manage data-driven full-frame effect shaders and provides various utilities and events for working with those shaders.
Links
Exotic Matter (XM) is modeling library for Minecraft modding with powerful features. Current capabilities include:
- Dynamic mesh specification, generation and baking
- Low-allocation design with high-performance caching, suitable for run-time operation
- Texture library and registry
- Automatic mesh painting based on texture and surface metadata
- Connected textures and shapes
- Multi-layer texture effects (currently up to three textures per surface)
- Multi-block textures
- Built-in mesh primitives
- Constructive Solid Geometry operarations on meshes
- Support for custom textures, primitives