Skip to content

v0.8.0-beta

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Aug 09:46
· 62 commits to main since this release

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_IMAGES is 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-barrier in 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., a
    texture.noise or a dimension.properties line written under a setting's #if now 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 writing
    shadow.enabled=false gets 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 a screen= 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-compiles in 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, restrict and
    coherent on the way, whichever side of uniform the 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 dhDepthTex0 and dhDepthTex1 is 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.