Focalis is an open-source rendering and optimization project for Minecraft Forge 1.12.2. I originally started working on it while playing Divine Journey 2, mostly because I wanted shader support without having to rely on OptiFine. It's grown into a larger project since then.
The first goal is to get shaderpacks working reliably, particularly in larger modpacks where rendering compatibility can be a problem. Beyond that, I want Focalis to be a foundation for other graphics and rendering improvements, rather than just another way to load shaders.
Focalis is still experimental. It isn't a drop-in OptiFine or Iris replacement, and full shaderpack rendering isn't ready yet.
Focalis is being built as its own rendering platform, not a recreation of an existing shader mod. I study other projects and public shader-format documentation to understand what needs to work, but the actual implementation is designed around Focalis and its own requirements.
Legacy shaderpacks are important because they're what people already use on 1.12.2. I want to support those packs without making their old formats and limitations dictate how the rest of Focalis has to work.
That means keeping the different systems modular, being careful about resource ownership and compatibility, and measuring performance changes instead of assuming they'll help. There's room to explore more advanced rendering features later, but getting the current shader pipeline working properly comes first.
A fair amount of the groundwork is already in place. Focalis currently has experimental support for:
- Finding shaderpacks, reading supported settings, and compiling shader programs.
- Routing terrain, entities, block entities, and certain special draws to shader programs.
- Supplying terrain attributes such as normals, material IDs, texture midpoints, and tangents.
- Shader uniforms, textures, lightmaps, and dimension-specific program handling.
- Focalis-owned render targets and a basic experimental post-processing path.
- Restoring shader-related state after vanilla and modded rendering, including selected alpha and blend directives.
These parts have been tested in development and in modded Minecraft, including DJ2. That doesn't mean full shaderpack support is working yet. Multiple render targets, depth handling, the full pass sequence, and several other effects still need to be integrated.
Right now I'm working on the integrated shader session, bringing the existing systems together so configuration, programs, inputs, render targets, and their lifecycles are managed more consistently.
I'm developing Focalis in phases, with testing and review between major changes. There isn't a fixed release date yet.
| Milestone | Status | What it covers |
|---|---|---|
| Shader foundations | Complete | Shaderpack loading, compilation, program routing, and initial shader inputs. |
| Terrain and object integration | Complete | Terrain attributes, material IDs, entity and block-entity contexts, and special draws. |
| Render-state handling | Complete | Restoring relevant rendering state and handling selected draw-time directives. |
| Integrated shader session | In progress | Bringing program caches, configuration, inputs, targets, and resource lifecycles together. |
| Full rendering pipeline | Planned | Multiple render targets, depth, composite/final passes, hand rendering, water, and transparency. |
| First external shaderpack milestone | Planned | Getting a supported external shaderpack working through the integrated pipeline. |
| First usable shader release | Planned | Wider compatibility testing, user-facing controls, installation guidance, and a build people can actually use. |
| Other graphics and optimization work | Longer term | Renderer improvements, lighting, visual features, and broader mod and hardware compatibility. |
"Complete" here means the planned work for that milestone has passed its checks. It doesn't mean every shaderpack or mod is supported. The first successful external pack also won't automatically mean Focalis is ready for a public beta.
| Component | Requirement |
|---|---|
| Minecraft | 1.12.2 |
| Forge | 14.23.5.2847 or newer |
| Recommended Forge | 14.23.5.2860 |
| Java runtime | Java 8 |
| MixinBooter | 10.7, installed separately |
| Installation | Client-side only |
Keep MixinBooter's original release filename unchanged so it loads before Focalis. Some experimental features also have additional OpenGL requirements.
Focalis doesn't need to be installed on the server. These are the requirements for the project and its experimental builds, not a claim that a general shader release is ready.
Focalis uses Gradle and RetroFuturaGradle. You'll need a modern JDK for the build tools, although Focalis itself targets Java 8.
Build the mod:
./gradlew buildThe JAR will be in build/libs.
To start the development client:
./gradlew runClientDevelopment builds can contain unfinished rendering features. I wouldn't recommend treating them as stable shader releases or dropping them into a random modpack expecting everything to work.
I'm developing and maintaining Focalis independently. I'm not recruiting an official development team or running a public testing program right now, but technical feedback, bug reports, and pull requests are welcome.
I've been testing it in development clients and real modpacks, with DJ2 as the main compatibility environment. Those results only cover the setups actually tested, not every GPU, driver, or collection of mods.
If you run into a reproducible issue, you can report it through GitHub Issues or the Discord server. It helps to include:
- Your Minecraft, Forge, and Java versions.
- The modpack, relevant mods, shaderpack, and GPU.
- What happened and how to reproduce it.
- Logs, crash reports, or screenshots if you have them.
Pull requests are welcome too. I review contributions with compatibility, correctness, performance, and maintainability in mind.
If you're interested in following the project or talking about its development, there's a Focalis Discord. I'll also use it for updates and future testing opportunities when the project is ready for them.
Focalis is licensed under LGPL-3.0-only (GNU Lesser General Public License, version 3 only).
