Skip to content

NeoPoculus

Oculus fork with new features, mod compatibilities, optimization, dedicated LOD renderer (Client/Server), Little tiles compatibility, general Sodium mod compatibility

NeoForge
Loaders
NeoForge
Downloads on Modrinth
1.2K
Followers on Modrinth
5
version
1
Updated
August 7, 2026Aug 7
Published
in 2026
Little Tiles rendering · swipe

At a glance

Runs on NeoForge
For Minecraft 1.21.1
Needed in the game; optional on the server
Latest version — 2.2.8 from August 7, 2026
License LGPL-3.0-only — free
Where it's needed
In gamerequiredOn serveroptional

Needed in the game; optional on the server

Game versions1.21.1

LOD and LittleTiles rendering

NeOPoculus

Shaders for NeoForge, with a world that keeps going past your render distance.

NeOPoculus is a fork of NeOculus, which forks Oculus, which ports Iris to Forge-family loaders. Everything those projects do — loading OptiFine/ShadersMod shader packs, the in-game shader options screen, Embeddium integration — is theirs, and it all still works here.

What this fork adds is Horizon: a built-in extended-distance terrain system, plus a set of compatibility fixes for mods and platforms that previously crashed or rendered nothing.

Discord · Source · Report a bug


Horizon — terrain beyond the view distance

Horizon records the terrain you explore, saves it per world and dimension, and draws it far past the server's view distance. It needs no server mod and no extra downloads: everything is captured from chunks your own client already receives, so it works on vanilla servers, realms and singleplayer alike. Explored terrain is written to disk, so a world keeps its panorama between sessions.

Detail falls away with distance in five steps, so distant ground stays cheap. The ring closest to you is drawn at full block resolution and deliberately overlaps your loaded chunks, which is what makes the join invisible — and it backfills chunks that are still loading, so the world stops popping in at the edge of your render distance.

On by default, and turned off with a single tick box.

Two engines

Classic (default)Voxel (experimental)
Storessurface height, water height, one colour per columnreal blocks, biome and light per cell
Caves, overhangs, interiorsnot representedrepresented
Texturesflat colour per columnreal block textures
Block shapesfull cubesslabs, snow, carpets, fences, plants keep their shape
Wateropaque surfacegenuinely translucent

The Classic engine is a heightmap and is what you get out of the box: lighter, older, and proven. The Voxel engine is the newer one and is where the work has gone — switch it on under Voxel Engine (Experimental) if you want caves, textures and real block shapes at distance. It is marked experimental honestly: it is the newer of the two and has had less time in the wild.


Shader pack support

Distant terrain is drawn through your shader pack, so it gets the pack's own lighting, fog and shadows instead of looking like a flat cut-out pasted onto the horizon.

There are two ways this happens. A pack that supports Distant Horizons has a dh_terrain program, and Horizon feeds its terrain through it. A pack with no such program is drawn through its ordinary gbuffers_terrain instead — which every pack has, and which is also the only path that shows real block textures.

Of 16 packs tested, 11 render shaded distant terrain:

  • Through dh_terrain — Bliss, BSL, Complementary Reimagined, Complementary Unbound, Sildur's Vibrant Shaders, Solas
  • Through gbuffers_terrain — ARTShade, Aurora's Shaders, Kappa, Lux, The Better Default

Five packs do not currently load at all in this mod: iterationT, Noble, PaintBound, photon and Reverie. These fail during shader compilation in the Embeddium/Iris layer, with errors like undefined variable "iris_FogColor". That is a defect in the shader stack and has nothing to do with Horizon — those packs do not work here whether distant terrain is on or off. It is a known issue, not a supported configuration.

Packs not on this list are untested rather than unsupported.


Multiplayer and pre-generated terrain

A server operator can generate distant terrain ahead of time instead of waiting for players to walk it, and stream it to players as they join — so a new player sees the whole landscape immediately rather than a wall of fog that slowly retreats.

The /horizon lod commands generate terrain for a zone, a radius or the whole world, and are restricted to permission level 4 (server owner). Terrain arriving from a server is treated as untrusted: block and biome ids are translated into the client's own numbering rather than adopted, lengths and ids are range-checked, and a disk budget caps how much a session will accept. The worst a misbehaving server achieves is odd-looking distant scenery.

Generating LOD from the command requires the Voxel engine on a singleplayer world.

Disk use

Distant terrain is cached on disk and the cache is capped. When the cap is reached you are told, rather than left wondering why the horizon stopped filling in. Optional auto-clean frees space by deleting the regions farthest from you first — the ground you actually live on is kept, the far edge of an old expedition goes first. A purge button clears the cache entirely, behind a confirmation tick.


Settings

All settings live under Video Settings → Horizon LOD (Embeddium's screen, or the vanilla one) and are editable in game.

SettingDefaultWhat it does
Horizon LODonMaster switch.
Voxel EngineoffThe newer engine: caves, textures, real block shapes.
Render with shadersonDraw distant terrain through your shader pack.
LOD distance256 chunksHow far distant terrain reaches (16–4096).
Distant vegetation33%How much distant grass and flowers to draw. Usually the largest single performance gain.
Per-cell LOD texturesonBlock textures at true size under shaders; costs geometry.
Textured LOD under shadersoffForce the textured path even on packs that support Distant Horizons.
LOD memory budget256 MBMemory the Voxel engine may hold terrain in before writing it back to disk.
Auto-clean / purgeoffDisk cache management.

Plus detail-ring, upload-rate, worker-thread and save-interval controls for tuning.

Every option is also written to config/neoculus-horizon.properties.

If distant terrain costs you too much: lower Distant vegetation first — plants are many small see-through quads, which cost far more per pixel than solid ground. Then reduce LOD distance, then turn off Per-cell LOD textures.


Compatibility fixes

These are fixes to things that were broken before, not new features.

Mods built against Sodium's API

A great many rendering mods are written against Sodium's public API. On a NeoForge setup that runs Embeddium instead, those classes do not exist, and such a mod dies at load with NoClassDefFoundError before you ever reach the main menu.

This fork ships a stand-in for that API — colour and normal helpers, matrix and memory intrinsics, sprite utilities, and the common vertex formats and attributes — so those mods load and run. They render through the ordinary path rather than Sodium's fast one, which is the correct outcome on this stack: the fast path politely reports "not available" and a well-behaved mod falls back on its own.

Two honest caveats. A mod that demands the fast path instead of asking for it will still refuse to run — the API is designed with both a "try" and a "must have" entry point, and only the first can degrade gracefully. And only Flerovium has been verified end to end; other Sodium-API mods are likely to work but are untested. If one does not, a report on Discord or the issue tracker is genuinely useful.

LittleTiles

LittleTiles renders correctly under Embeddium, translucent tiles included — glass structures show properly instead of disappearing or rendering opaque — and faces are re-culled correctly when you edit a structure, so tiles do not leave holes or stale surfaces behind after a change.

Platforms and drivers

  • macOS — the bundled AcceleratedRendering used to crash the game natively while loading a world on hardware with no OpenGL compute support, which includes every Mac. It is now detected and switched off transparently, falling back to vanilla rendering.
  • Sinytra Connector — no longer crashes during Initializing game when Connector is installed.
  • Stricter OpenGL drivers — the game no longer refuses to launch on drivers reporting a GL 3.2 core context while exposing 4.x through extensions.
  • Entity flicker — entities, block entities, your held item and your arm no longer blink out while moving.

AcceleratedRendering is also updated from 1.0.0 to 1.0.8.


Requirements

  • Minecraft 1.21.1
  • NeoForge 21.1.0 or newer
  • Embeddium — required

Not compatible with OptiFine. Do not install alongside Oculus, Iris or NeOculus — this replaces them.


Known limitations

  • No performance numbers are claimed. Horizon draws more of the world, so it costs more than not drawing it. Whether that is worth it depends on your hardware, and the settings above exist to let you decide.
  • Five of the sixteen tested shader packs do not load, for a reason unrelated to distant terrain (see above).
  • Distant terrain is currently drawn two-sided; single-sided drawing is planned and will make it cheaper.
  • Underground terrain you cannot see is still drawn. Culling it is planned.
  • The Classic engine cannot show caves or overhangs — that is what the Voxel engine is for.

Support and bug reports

Reporting a rendering problem is far more useful with the shader pack name and version, your latest.log, and whether the problem still happens with Horizon LOD turned off — that last one alone separates a Horizon bug from a shader-stack bug.


Credits and licence

This mod stands on other people's work:

Horizon is inspired by Distant Horizons and Voxy, and shares no code with either.

Licensed under LGPL-3.0, as inherited from Iris.


  1. THE BADGES AT THE TOP CONTAIN PLACEHOLDERS. They render as broken until the projects exist, so fill these in first:

    neopoculus -> the real CurseForge slug, in both way2muchnoise URLs neopoculus -> the real Modrinth slug or project ID, in the shields.io URL 0000000000000000 -> the Discord SERVER ID, not the invite code (Discord > Server Settings > Widget > enable it, then copy Server ID; the badge cannot read member counts from an invite link) banner.png -> an actual banner, or delete the

    block

    Where each badge row belongs: GitHub README - all of them, this is what badges are for Modrinth - external images are restricted to approved hosts; shields.io generally works, way2muchnoise may not. Check the preview and drop whatever renders as a broken box. CurseForge - it already shows its own download count and game versions above the description, so the first two badges are redundant there. Keeping only Discord and licence reads better.

  2. THE SIDEBAR LINK BUTTONS DO NOT COME FROM THIS FILE. Both sites build those blocks from fields in the project settings, not from the description text. The links above are for people reading the page; the buttons have to be entered separately, or they simply will not appear.

    Modrinth — Settings > Links: Source code https://github.com/Frenk012/NeOPoculus Issue tracker https://github.com/Frenk012/NeOPoculus/issues Discord https://discord.gg/6WADV66Frv (Settings > Links > Discord invite)

    CurseForge — Project > Settings > General, "Links" section: Source https://github.com/Frenk012/NeOPoculus Issues https://github.com/Frenk012/NeOPoculus/issues Discord https://discord.gg/6WADV66Frv CurseForge only shows the Issues button once the field is filled AND the repository has issues enabled, so check that on GitHub first.

  3. MAKE THE REPOSITORY PUBLIC AND ENABLE ISSUES. An issue-tracker link to a private or issues-disabled repository is worse than no link.

  4. SCREENSHOTS. The strongest pair is the same viewpoint with Horizon off and on. A close-up at ground level showing the join with loaded chunks is the second most convincing, because that seam is the thing people expect a distant-terrain mod to get wrong. Both platforms render Markdown images: caption Host them on the project's own gallery where possible — external image hosts are restricted on both sites and a blocked image leaves an empty box.

  5. CHECK THE FACTS AT RELEASE. Version, Minecraft and NeoForge ranges against gradle.properties; the shader pack lists against a fresh ./gradlew runShaderTest sweep. The pack lists are the part most likely to go stale, and the part readers will check.

  6. FORMAT. Modrinth takes this file as-is in the Description tab. CurseForge accepts Markdown but strips HTML comments like this one — paste everything above the horizontal rule, not this block. -->

FAQ

How to install NeoPoculus?

Install NeoForge for your Minecraft version, download NeoPoculus for the same version and loader, put the file into the mods folder and launch the game with the loader profile.

Which Minecraft versions does NeoPoculus support?

NeoPoculus has builds for Minecraft 1.21.1.

Is NeoPoculus needed on the server?

Needed in the game; optional on the server

License and source
GNU Lesser General Public License v3.0 onlyfree to use and share; changes to the mod itself must be published under the same license
Original — Modrinth↗Files unchanged, verified with SHA-512Is this your mod? For rights holders

The site uses cookies: the necessary ones for sign-in and the theme, plus the Yandex Metrica and LiveInternet visit counters — they show us how the site is used. We have no advertising cookies. More