v0.8.0-beta (Neo/Fabric)
Curse Maven Snippet
What's new
Added
An FSR Render Scale slider under Video Settings, on the mod's page beside Max Shadow Distance. The world renders at the chosen fraction of the window, 25 to 100 percent, and the finished image is brought back to full size with AMD FidelityFX Super Resolution 1.0 before the interface is drawn, so menus, chat and the F3 screen stay sharp whatever the scale. Moving the slider takes effect immediately, the setting outlives whichever pack is chosen, and at 100 percent, or with shaders off, nothing changes at all.
A pack's coloured lighting runs. The storage images, storage buffers and shadow compute pass behind it are served, and
IRIS_FEATURE_CUSTOM_IMAGESis announced, so the voxel lighting of Complementary's top profiles, Euphoria Patches' Colored Lighting among them, draws instead of switching itself off behind a red overlay: lamps and torches colour the world around them. A pack that requires custom images loads instead of being refused. And that light holds still as you move: the glow of ores and lava used to flicker at every block crossed, worst going up, a ring of dark on each jump and a shimmer in upward flight against nothing at all on the way down, with a placed torch never showing it only because the ordinary block light covers it over.A crash during startup no longer takes the graphics backend with it. The game resets the preferred graphics API and the fullscreen mode after any startup that did not finish, whatever crashed, and nothing of this mod draws off Vulkan, so one crash used to cost a restart to set it back by hand. A selector under Video Settings picks what to come back to, Vulkan unless told otherwise.
A switch that puts the game's own wait back after every render pass. A pack's passes end on a wait naming what the next one reads and writes, rather than on the game's wait for the whole of memory. That is what makes the frame cheaper, and it is also the kind of thing a driver can honour by accident: a wrong image on one machine and a right one on another is exactly what a missing wait looks like. An empty file
vitrail/full-pass-barrierin the instance, or-Dvitrail.fullPassBarrier=true, puts the wide wait back on both roads where one was traded away, the close of a pack's pass and the filling of a mip chain. Slower, and it cannot be the cause of anything, so an image that comes right with it has named the problem.The log names the first full frame's GPU stops. One line per pack load, always on: how many render passes opened, how many textures were cleared and copied, then the labels, most frequent first. That is the number a Mac trace of queue submits is counting.
The F3 screen says what the shadow map cost. Two lines beside the version and the pack: how many world sections were drawn into the map out of how many are loaded, at what render distance, and what the walk for the light measured against. They are Iris's lines for the same thing, in the same shape, so a screenshot under one reads against a screenshot under the other, and nothing has to be switched on for them to appear.
Changed
Chloride is no longer required, on either loader. One thing was behind that requirement: NeoForge opens a loading window before the game exists, that window carries an OpenGL context, and the game takes it over instead of making one, so the Vulkan surface was asked for on a window built for OpenGL. Vitrail now refuses that window itself when the backend is Vulkan, takes it off FML's hands at the end of mod loading, and closes it once the game has drawn its first frame. Fabric opens no such window and never needed the help. Chloride remains worth installing, its settings are still read and reported, and running it alongside changes nothing.
The odd corners of a pack's properties read the way Iris reads them. An
alphaTest., atexture.noiseor adimension.propertiesline written under a setting's#ifnow comes and goes with the setting, a world declared twice keeps the last declaration instead of the first, a page laid out twice keeps its last line instead of both, and a pack writingshadow.enabled=falsegets what it asked for: nothing is ever drawn from the light. No known pack is changed by any of this today.The settings screen reads a pack's layout the way Iris does. The
*token now pours out every setting no other page names, where the pack put it; a pack without ascreen=line gets one page holding everything instead of an empty one; and a name Iris refuses to configure, a constant off its closed list, a toggle nothing tests or a value without a list of choices, shows the same blank it shows there instead of becoming a slider or a toggle Iris never had.Opening a pack's settings no longer applies it. Looking at another pack's pages used to load it first, on its own default profile, so opening a heavy pack to turn it down paid the heavy profile in full. The pages now open on the pack that was picked while the loaded one goes on drawing; Apply is the only thing that costs, and a profile chosen before applying is the one that lands.
The shadow walk no longer rotates Sodium's command ring a second time in the same frame. The lists still reset so the light does not append onto the camera's; the ring waits for the next camera walk. Same shadows.
A pack's frame opens fewer GPU stops. Clears ride as the first pass's load, leftover sampled-before-write clears share one empty pass per size, mip chains blit instead of drawing each level, consecutive geometry that writes the same images stays in one pass, ping-pong targets swap names instead of copying texels back, and our own passes end on a wait naming what the next one samples and what it writes, rather than on the game's wait for the whole of memory. Same picture. Written for the extra submits a Mac report was counting; whether the frame rate moves is still that machine's to measure.
The frame that rebuilds the pack's programs pays far fewer clears. A dimension change, a world join or a pack switch re-prepares every geometry program the scene draws, and each one rebuilt its own copy of the same one-texel constants, one standalone clear per texture: about ninety full GPU stops on that single frame, felt as the hitch at a portal. The constants are now built once and shared, and the same frame measures nine.
Pass uniforms reuse scratch matrices instead of allocating a model-view-projection and a normal matrix on every fill, Sodium region draws skip leftover sampled clears once nothing is still owed one, and the shadow sweep reuses its plane scratch. Same picture, same numbers.
Improved transparency is turned off while a pack draws, the same refusal Iris makes. That option opens a second colour target for translucent items, and every leftover feature that writes it is an Immediate draw this engine would otherwise keep as its own GPU stop.
Leftover Immediate draws and Distant Horizons' GenericObjectRenderer stay in the geometry pass already open, the way Iris leaves the default framebuffer bound. A leftover pass is never adopted: its viewport and scissor would be whoever opened it.
Geometry programs compile during the same warm-up as the chain, before the pack is drawn: families translate on a worker while composites compile, and the world waits until the composites and the terrain are in the device cache. From there the leftover families compile in the background, described under Fixed, and the pulsing mark in the corner carries the state from the held world to the last word of the closing show.
The wait for a pack skips the world, not the HUD. Several programs compile a frame instead of one, so the wait is not a two-frame-per-second vanilla picture of the same work.
Fixed
The freezes on first encounters are gone. A pack's programs for the entities, the sky, the clouds, the weather, the particles and the far terrain used to compile on the frame that first drew each of them: around half a second frozen per program on a cold driver cache, over a hundred programs on a big pack, spread across the first minutes of play and paid again behind every portal. They are now compiled in the background while you play, several families at once, and a frame only waits for a program it reached before the background did. While that work runs, the Vitrail mark pulses in the top-left corner of the screen with "Compiling shaders..." and the running count beside it, the way the autosave floppy used to blink; when the work ends, "Shaders compiled!" stands beside the mark for a moment and the corner fades back to the game. An empty file
vitrail/keep-first-draw-compilesin the instance puts the old path back for a comparison.A pack's shadow compute is no longer built when the pack switched it off. A pack turns whole programs on and off from its own settings, and the compute pass behind coloured lighting was read and handed to the compiler whichever way that setting stood. Switched off, the pack also takes away the colour tables and the image formats that pass reads, so what reached the compiler was not a shader at all and it was refused. The refusal came out as a warning, and there was nothing on screen to say a pass had been meant to run. BSL with its multicoloured blocklight off, Bliss, and both Complementary outside their coloured lighting profiles were all in that state.
A pack's storage images keep the words it wrote around them. Translation rebuilt those declarations from the type onwards and dropped
writeonly,readonly,restrictandcoherenton the way, whichever side ofuniformthe pack put them. On Vulkan the first of those is what makes an image with no declared format legal at all, and it is the one the packs that ship a voxel volume write.Distant Horizons' far water no longer paints over you. In third person, with far water behind, the character came out washed out or gone entirely, and the part of him it covered followed the part of the far water behind him. Everything drawn between the two halves of the far terrain was covered the same way: mobs on the ground, particles, and the hand. The far water is drawn after them and had no idea they were there. It now stands behind whatever the game drew before it. What a pack reads under
dhDepthTex0anddhDepthTex1is still the far terrain and nothing else, with one thing given up: where the near world hides far water outright, those names answer with the far terrain behind the water rather than with the water, on a texel where neither is visible.Entering a world with Distant Horizons no longer washes the distance out to the sky colour. Until that mod has drawn its first frame, which on a world it has no cache for takes a moment, a pack was told how far the far terrain reached in the wrong unit, and the number it got was sixteen times too small: a dozen blocks or so, rather than the thousands that mod actually draws. A pack that fogs by that number then fogged out everything past the end of its own nose, so the whole distance came back as flat sky until the far terrain appeared. Bliss shows it plainly. The number no longer waits on that first frame.
Two smaller things move with it. Turning that mod's rendering off now gives a pack back the game's own distance, which is what Iris gives it. And a pack that leaves its shadow planes for the engine to resolve gets a shadow box sized for whichever terrain is really being drawn. No pack shipped today asks for that on its default settings.
Opening a world no longer crashes while leftover families are still being translated. The frame used to walk those program maps as soon as the composites and the terrain were ready, which is the same moment the worker is still filling them.
Keeping consecutive geometry in one pass no longer leaves Sodium's last region scissor on the next family. The scissor is cleared each time the hold is reused, which is the band that copied the top of the screen onto the bottom as chunks streamed.
This mod has no additional files

