Mods / Mirrors

Tags:
Decoration
Author:
Cheeki
Side:
Both
Created:
Jul 7th at 5:50 PM
Last modified:
Jul 7th at 6:17 PM
Downloads:
362
Latest release (for Vintage Story 1.22.0-pre.1 - 1.22.3, potentially outdated):
Mirrors.V1.0.0.zip  1-click install

Adds mirrors with planar reflections.

Mirrors are crafted in various ways, please refer to the in game handbook. The short version is:
Polished metal plates: metal plates + lime, gets you a mirror with a tinted reflection.
Glass panels + silver nitrate: gets you a transparent glass with reflections on both sides
Silvered glass mirror: silver dust + saltpeter gets you nitrate. Add nitrate to limewater to make silvering solution, put glass panels in, wait, you have a silvered mirror with a perfect reflection.

Can be configured with Config Lib or by editing mirrors.yaml in ModConfig

Keep all of these coplanar (on the same plane as each other) for less performance drain.

Recursive mirrors are very performance expensive and are turned off by default.

 

Limitations

Rifts will not be reflected.

Volumetric clouds will not be reflected.

Water viewed through the reflection will not have depth.

OIT is skipped in recursive bounces (glass or water or anything along those lines will not render)

When running this mod with Renderer Mangler, recursive mirrors are forcibly turned off.

Ko-fi Donate

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
1.0.0 mirrorz
1.22.0-pre.1 - 1.22.3
362 Jul 7th at 6:17 PM Empty Mirrors.V1.0.0.zip 1-click install

14 Comments (oldest first | newest first) (threaded | flat)

Liliet, Jul 8th at 6:11 AM
Crash Report
Game Version: v1.22.3 (Stable)
08.07.2026 9:09:36: Critical error occurred in the following mod: mirrorz@1.0.0
Loaded Mods: abundantstonepaths@1.0.3, alatyrstorcholders@1.2.0, hardcorewaterforked@1.4.6, astronomersdelight@1.0.2, axintexturesconquest@0.5.102, usebambooforcharcoal@0.1.1, betterarrows@1.0.1, betterbreadsatiety@1.0.1, bettercrates@1.10.0, betterforest@0.1.2, betternutrition@1.3.0, bettseraph@0.0.2, biggerpockets@1.0.6, blackraspberry@1.2.5, bonebroth@1.2.2, brittlenests@1.0.0, bronzemeteoricmining@1.3.1, bulkmolds@1.1.7, butcheringmatcompat@0.0.2, chargedjump@1.2.3, cbr@2.0.1, chonkyvessels@1.5.7, clearview@0.1.1, clickuptorches@1.1.1, combatrebalance@1.5.0, craftfirepit@1.0.0, crazyskincustomization@1.1.0, curefirewood@1.0.1, cutthefat@2.0.0, deciduoustrees@1.6.0, hqzlights@1.1.3, moonshinejug@1.0.2, eternalstew@1.4.2, extraruins@1.0.4, extremeweather@1.2.2, farmlandnutrientmanagement@1.5.2, fastmushroomharvesting@0.2.1, firestarters@1.4.6, firewoodtoparchment@0.0.1, flintsaw@1.0.1, floralzonescaperegion@1.0.28, floralzonescaribbeanregion@1.0.23, floralzonescentralaustralianregion@1.0.20, floralzonescosmopolitanregion@1.0.11, floralzoneseastasiaticregion@1.0.19, floralzonesmediterraneanregion@1.0.19, floralzonesneozeylandicregion@1.0.19, foodcrate@2.2.1, foreverempty@0.1.1, caninae@1.1.6, capreolinae@2.0.14, felinae@0.2.13, machairodontinae@1.1.10, pantherinae@1.2.15, sirenia@1.0.29, fruitrefreshed@1.1.0, geoaddons@1.4.8, handsomedrifterscontinued@1.2.0, hangingvessels@1.1.1, hydrateordiedrate@2.4.14, immersivelight@0.1.0, immersivefoliage@0.1.1, immersivemining@0.3.0, indappledgroves@3.0.1-rc.5, instantpickup@1.1.4, interestingoregen@2.3.8, ironbloomsfromscrap@1.0.0, jackslogtweak@1.2.0, jonasworkshop@1.2.1, jsonpatcheslib@1.5.3, logicalclothingwarmth@1.5.0, longtermfood@0.7.1, m00ngrass@1.0.7, madfoundation@1.2.0, manualdishes@0.1.2, manualdough@1.1.8, meteoriccompat@1.0.0, millwright@1.3.3, mirrorz@1.0.0, moldsexpanded@1.2.0, monsterdrops@1.0.1, moreundergarmentsupdated@0.0.10, morecheez@1.1.0, moredrygrassfix@1.1.0, moredrygrass@0.2.0, morefuel@1.2.1, mycodiversity@1.0.7, nightwatcher@2.3.0, nofatrot@1.0.0, nowastebloomery@1.0.4, overhaulliblegacycompat@1.2.2, overhaullib@2.0.10, p1nksshelvingtweaks@1.0.8, primitivesurvival@5.0.6, psbetterstairs@1.0.0, p3bagtweaks@1.0.0, purrssimplefasterbreeding@1.0.0, qualityores@1.0.0, rands@1.2.1, realisticpanningloot@1.1.1, RelightTorches@1.0.0, renderfat@1.2.0, ripenedwildcrops@1.0.0, saddleblanketbeds@0.0.6, satup@1.22.3, savetheelks@1.0.0, fixscythe@0.2.1, shelfobsessed@2.1.5, shelvabletools@1.1.1, soapandlyecontinued@2.1.2, spinningwheel@1.2.12, purrshidesize@1.1.1, stickisolation@1.0.0, stoneharvesting@1.2.2, stonemallet@1.0.4, stonequarryrepckfipil@3.6.3, subtleparticlesplus@1.2.0, meapineapplefatcandle@1.0.1, tearitapart@2.3.1, temporalsymphonyfork@0.0.1, thetruearchimedesscrew@0.2.0, toneddownpredatorsfork@1.2.0, trashbinned@0.4.2, valkyrjahair@3.0.0, visibleoresandminerals@1.4.1, game@1.22.3, vsimgui@1.2.7, antiqueharmony@1.17.1, achievements@1.1.1, aculinaryartillery@2.0.0-dev.21, aged@2.0.5, algernonsterrainsampler@1.3.0, altmapiconrenderercontinued@1.6.0, animalhitch@1.3.0, animaltrader@1.2.1, animationslib@0.0.2, anvilperformanceoptimization@1.0.0, apewindows@1.5.0, fishbreeding@1.0.5, attributerenderinglibrary@3.1.5, egocaribautomapmarkers@5.0.3, autopanning@2.0.0, bathtime@1.4.1, bearsshiftyearth@1.2.0, bellowsfix@1.0.3, bellowsinfo@1.0.0, bettercoaltooltips@1.0.0, betterdeathmessages@1.0.3, betterentitytooltip@1.1.0, bettererprospecting@3.4.3, betterhandbook@1.0.8, bettericeoverlay@1.0.1, betterjonasdevicesfixedagain@2.1.6, betternails@2.0.3, betterruins@0.6.3, bleedingindepth@0.4.1, blocksoverlay@4.11.5, bloodtrail@1.2.4, blushlibrary@1.1.2, boiledbamboo@1.0.1, bowsbykanahaku@1.0.0, bradycrudebuilding@1.5.4, bradyladder@1.2.2, butchering@1.13.5, carryonlib@1.0.0-pre.7, cheaperlanternlining@1.1.0, chiselwiz@5.0.0-pre.2, climbabletreestrunks@1.0.4, closedcaptions@1.0.7, clothierheirloomsmod@1.1.0, cmicebox@2.0.1, coldvessel@0.1.19, colortooltipfornutrientlevel@2.0.0, configlib@1.12.0, conicalhotgear@1.0.1, cozypierzynas@1.2.0, craftablesticksmodern@1.0.0, crafteverything@1.3.4, thecritterpackcontinued@1.4.2, crlib@1.0.0, cropforecaster@2.1.0, cruciblefurnace@1.0.0, crucibleunlock@1.0.0, deathcorpses@2.8.1, doorvariants@1.1.4, drifteraimnerf@1.1.0, dryingspeedoverhaul@1.1.4, drythunderstorms@1.0.0, easybuilding@1.2.2, ecosystemfauna@1.2.3, ecosystemflora@4.6.2, elkhitch@2.1.5, elkphysics@3.0.3, elkvariants@3.6.2, enhancedhandbook@1.8.1, equipstats@1.0.5, extrafurniture@1.1.2, extrainfo@2.2.1, extraoverlaysm4@1.8.0, fairfish@2.0.0, farseer@1.4.0, fastpouring@1.0.1, feedfromseed@1.1.2, fendragonbcs@0.2.3, feverstonewilds@2.1.2, fillmybloomery@1.0.3, fishingplus@1.2.0, flameagainstrust@1.22.3-dev.0, floatingcombattext@2.0.0, foodshelves@3.0.4, footprints@1.2.4, geologymap@1.1.0, gimap@1.7.0, gourmand@1.8.12, handbookdeclutterer@2.0.1, handbookdecluttererfix@2.0.0, hardtackbread@1.0.0, herbarium@1.4.3, hudshelf@0.3.2, icecycle@1.0.2, immersiveimprovedsounds@1.0.1, immersiveminingandahalf@1.0.0, insanitylib@2.0.3, ithaniacannedgoods@2.0.7, jaunt@3.0.0-rc.3, kevinsfurniture@1.9.0, killstreak@0.1.6, knitting@2.0.3, krazykatzusemporium@0.0.4, lanternsathome@0.1.2, largervanillabags@1.0.5, locusthavest@1.0.5, manureecology@1.2.1, mapteleporter@1.2.0, mngeology@2.0.10, materialneeds@1.1.16, mealrevariation@3.1.6, sailboathotkeys@1.1.0, metalpots@1.8.0, meteoricsteel@1.0.15, mwi@1.9.0, morefluxes@0.4.0, morehudbars@1.2.0, mutations@0.4.4, naturalfoliage@0.0.4, bitzartnickelback@1.2.0, novelty@1.2.4, nzpatch@1.2.0, opineuponpine@1.0.10, optitime@1.5.14, orekiwoofsbeehives@2.0.0, pandahearth@0.1.0, panningbutbetter@1.0.1, particlesplus@2.5.8, performancecraftinggrid@0.1.1, petai@5.1.1, placeitanywhere@0.5.5, placeonslabs@1.1.3, playermodellib@1.23.2, playerstatusstrip@1.0.1, claywheel@2.0.1, progressionframework@1.1.0, projectiletracker@1.0.7, purposefulstorage@2.0.1, qualitygears@1.1.17, rackableplates@1.0.0, rarertraders@1.0.2, realistictemperatures@0.1.6, realisticwater@0.3.0, realsmoke@1.3.1, resinfarmremake@1.1.4, restfulsit@1.2.0, ricepaddies@1.0.3, roamingbees@2.0.0, ropeandspear@1.1.5, safefluidcooking@1.0.0, scarecrow@1.8.2, shearsrebalanced@1.0.0, sheydermod@1.0.3, shipwright@1.4.1, simpletea@1.2.0, sleepneed@3.1.4, slowtox@5.0.0, smithingplus@1.9.0-rc.1, smokescent@2.1.0, snowcaps@0.0.1, sonitodynamictraitsrebirth@1.0.3, stackedtemporalgear@1.0.0, statushudcont@4.3.2, steadygreenhouses@1.1.2, stringsense@2.4.0, struggletosleep@1.0.6, substrate@2.0.0, tableexpansion@1.0.3, treasurechest@0.5.3, temperatureheighttweakpatch@0.3.1, toolsmith@1.2.17, traitacquirermoddedclasses@0.9.16, treeshaker@1.1.1, truethirdperson@1.0.0-dev.1, universalhusbandry@1.2.1, usefuloils@1.0.0, valrossensmapfilters@1.2.0, vanity@2.5.1-rc.1, visiblebags@1.0.2, creative@1.22.3, vsecomachina@0.6.1, vsmodfarlands@0.2.0, vsroofing@1.6.3, survival@1.22.3, warmweathereffects@1.2.1, waterfall@1.2.4, watersheds@6.4.3, mapwaypointcolors@1.1.3, weaponout@1.0.2, webstotwine@1.20.1, wholtpo@1.0.3, wildbeerangeextender@1.0.1, wildgrasscontinued@1.3.11, xlibfork@1.0.21, 118hair@0.1.4, panserbjornrebjorn@1.0.0, antlershorns@1.5.1, autoconfiglib@2.0.10, bigcatstaming@0.10.0-pre.1, bloomeryquicklime@1.1.0, bluemorphoglider@1.0.1, blushandbins@1.3.3, butcheringpoultry@1.2.1, carryon@2.0.0-pre.7, chunklod@1.2.0-dev.2, combatoverhaulfork@0.18.1, comfybeds@0.4.2, crbutterfly@2.0.0, expandedfoods@2.0.0-dev.12, em@3.7.0, extremefirestartersreforged@1.1.3, floptaming@0.0.1, feverstonewildsbutcheringcompatfork@2.8.0, fzvanillacompat@1.0.2, foxtaming@1.7.6, functionalminerbeltandlantern@1.0.5, goblinears@2.3.4, handwarming@1.0.2, hodvisualizer@1.0.0, immersivemachina@0.1.0, indappledgrovesfirewoodbuffcontinued@1.0.0, madhoarding@1.0.1, mechanicalwoodsplitter@1.2.3, notenoughsand@4.1.0, pandahearthrealsmokecompat@1.0.0, prospectorsdispatch@1.2.1, quarterlogboost@1.0.0, quiversfork@0.9.29, seraphleveling@1.17.2, shearlib@1.3.0, slowtoxvisualized@1.1.10, smarahdovenebo@1.1.2, soilamendments@1.0.0, storagetweaks@1.3.3-rc.3, tailorsdelight@2.2.2, terrainslabs@1.0.16, toolsmithgeologypatch@1.2.0, weatherstory@0.8.1, wildcraftgrain@1.1.0, wildcrafttree@1.3.4, windowstoragelib@1.2.7, hookmolds@1.0.6, wolftaming@5.0.1, xskillsfork@1.0.72, yacb@1.0.2, zrustdrops@2.1.0, aldiclasses@2.2.2, bonearrowtweak@0.0.2, butcheringseraphlevelingcompatibility@1.1.1, combatreanimatedfork@1.0.1, ecomachinawildcraftnormaltreescompat@0.2.1, efchefstricks@1.0.0-dev.3, efmealsmodule@1.0.0-dev.5, idgwildcraftcompat@1.0.0, idgxskillscompat@1.1.0, noexclusiveskillspatch@1.0.0, optimizedcrbutterfly@1.1.0, upholstery@1.2.0, windowstorage@1.8.5, wool@1.9.3, xskillsgilded@1.3.37, zzcoarmorpenaltypatch@1.0.11, aldiclassesnonegatives@2.1.0, shearregret@1.0.1, traitacquirermoddedaldibooks@1.1.1
Involved Harmony IDs: immersivefoliage.shaderuniforms, mirrors, com.zaldaryon.optitime
System.Collections.Generic.KeyNotFoundException: The given key 'rmMirrorClipEnable' was not present in the dictionary.
at Vintagestory.Client.NoObf.ShaderProgramBase.Uniform(String uniformName, Single value) in VintagestoryLib\Client\ClientPlatform\ShaderProgramBase.cs:line 145
at Mirrors.MirrorShaderUniformPatch.Postfix(Object __instance)
at Vintagestory.Client.NoObf.ShaderProgramBase.Use_Patch2(ShaderProgramBase this)
at Vintagestory.Client.NoObf.ChunkRenderer.RenderOpaque(Single dt) in VintagestoryLib\Client\Render\ChunkRenderer.cs:line 299
at Vintagestory.Client.NoObf.SystemRenderTerrain.OnRenderOpaque(Single deltaTime) in VintagestoryLib\Client\Systems\Render\RenderTerrain.cs:line 118
at Vintagestory.API.Client.DummyRenderer.OnRenderFrame(Single deltaTime, EnumRenderStage stage) in VintagestoryApi\Client\API\IClientEventAPI.cs:line 88
at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 257
at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage_Patch1(ClientMain this, EnumRenderStage stage, Single dt)
at Vintagestory.Client.NoObf.ClientMain.MainRenderLoop(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 953
at Vintagestory.Client.NoObf.ClientMain.MainGameLoop(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 782
at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 173
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 742
at Vintagestory.Client.ScreenManager.OnNewFrame_Patch1(ScreenManager this, Single dt)
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame_Patch1(ClientPlatformWindows this, FrameEventArgs e)
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 354
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 131
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95
Crash Report
Game Version: v1.22.3 (Stable)
08.07.2026 9:09:36: Critical error occurred in the following mod: mirrorz@1.0.0
Loaded Mods: abundantstonepaths@1.0.3, alatyrstorcholders@1.2.0, hardcorewaterforked@1.4.6, astronomersdelight@1.0.2, axintexturesconquest@0.5.102, usebambooforcharcoal@0.1.1, betterarrows@1.0.1, betterbreadsatiety@1.0.1, bettercrates@1.10.0, betterforest@0.1.2, betternutrition@1.3.0, bettseraph@0.0.2, biggerpockets@1.0.6, blackraspberry@1.2.5, bonebroth@1.2.2, brittlenests@1.0.0, bronzemeteoricmining@1.3.1, bulkmolds@1.1.7, butcheringmatcompat@0.0.2, chargedjump@1.2.3, cbr@2.0.1, chonkyvessels@1.5.7, clearview@0.1.1, clickuptorches@1.1.1, combatrebalance@1.5.0, craftfirepit@1.0.0, crazyskincustomization@1.1.0, curefirewood@1.0.1, cutthefat@2.0.0, deciduoustrees@1.6.0, hqzlights@1.1.3, moonshinejug@1.0.2, eternalstew@1.4.2, extraruins@1.0.4, extremeweather@1.2.2, farmlandnutrientmanagement@1.5.2, fastmushroomharvesting@0.2.1, firestarters@1.4.6, firewoodtoparchment@0.0.1, flintsaw@1.0.1, floralzonescaperegion@1.0.28, floralzonescaribbeanregion@1.0.23, floralzonescentralaustralianregion@1.0.20, floralzonescosmopolitanregion@1.0.11, floralzoneseastasiaticregion@1.0.19, floralzonesmediterraneanregion@1.0.19, floralzonesneozeylandicregion@1.0.19, foodcrate@2.2.1, foreverempty@0.1.1, caninae@1.1.6, capreolinae@2.0.14, felinae@0.2.13, machairodontinae@1.1.10, pantherinae@1.2.15, sirenia@1.0.29, fruitrefreshed@1.1.0, geoaddons@1.4.8, handsomedrifterscontinued@1.2.0, hangingvessels@1.1.1, hydrateordiedrate@2.4.14, immersivelight@0.1.0, immersivefoliage@0.1.1, immersivemining@0.3.0, indappledgroves@3.0.1-rc.5, instantpickup@1.1.4, interestingoregen@2.3.8, ironbloomsfromscrap@1.0.0, jackslogtweak@1.2.0, jonasworkshop@1.2.1, jsonpatcheslib@1.5.3, logicalclothingwarmth@1.5.0, longtermfood@0.7.1, m00ngrass@1.0.7, madfoundation@1.2.0, manualdishes@0.1.2, manualdough@1.1.8, meteoriccompat@1.0.0, millwright@1.3.3, mirrorz@1.0.0, moldsexpanded@1.2.0, monsterdrops@1.0.1, moreundergarmentsupdated@0.0.10, morecheez@1.1.0, moredrygrassfix@1.1.0, moredrygrass@0.2.0, morefuel@1.2.1, mycodiversity@1.0.7, nightwatcher@2.3.0, nofatrot@1.0.0, nowastebloomery@1.0.4, overhaulliblegacycompat@1.2.2, overhaullib@2.0.10, p1nksshelvingtweaks@1.0.8, primitivesurvival@5.0.6, psbetterstairs@1.0.0, p3bagtweaks@1.0.0, purrssimplefasterbreeding@1.0.0, qualityores@1.0.0, rands@1.2.1, realisticpanningloot@1.1.1, RelightTorches@1.0.0, renderfat@1.2.0, ripenedwildcrops@1.0.0, saddleblanketbeds@0.0.6, satup@1.22.3, savetheelks@1.0.0, fixscythe@0.2.1, shelfobsessed@2.1.5, shelvabletools@1.1.1, soapandlyecontinued@2.1.2, spinningwheel@1.2.12, purrshidesize@1.1.1, stickisolation@1.0.0, stoneharvesting@1.2.2, stonemallet@1.0.4, stonequarryrepckfipil@3.6.3, subtleparticlesplus@1.2.0, meapineapplefatcandle@1.0.1, tearitapart@2.3.1, temporalsymphonyfork@0.0.1, thetruearchimedesscrew@0.2.0, toneddownpredatorsfork@1.2.0, trashbinned@0.4.2, valkyrjahair@3.0.0, visibleoresandminerals@1.4.1, game@1.22.3, vsimgui@1.2.7, antiqueharmony@1.17.1, achievements@1.1.1, aculinaryartillery@2.0.0-dev.21, aged@2.0.5, algernonsterrainsampler@1.3.0, altmapiconrenderercontinued@1.6.0, animalhitch@1.3.0, animaltrader@1.2.1, animationslib@0.0.2, anvilperformanceoptimization@1.0.0, apewindows@1.5.0, fishbreeding@1.0.5, attributerenderinglibrary@3.1.5, egocaribautomapmarkers@5.0.3, autopanning@2.0.0, bathtime@1.4.1, bearsshiftyearth@1.2.0, bellowsfix@1.0.3, bellowsinfo@1.0.0, bettercoaltooltips@1.0.0, betterdeathmessages@1.0.3, betterentitytooltip@1.1.0, bettererprospecting@3.4.3, betterhandbook@1.0.8, bettericeoverlay@1.0.1, betterjonasdevicesfixedagain@2.1.6, betternails@2.0.3, betterruins@0.6.3, bleedingindepth@0.4.1, blocksoverlay@4.11.5, bloodtrail@1.2.4, blushlibrary@1.1.2, boiledbamboo@1.0.1, bowsbykanahaku@1.0.0, bradycrudebuilding@1.5.4, bradyladder@1.2.2, butchering@1.13.5, carryonlib@1.0.0-pre.7, cheaperlanternlining@1.1.0, chiselwiz@5.0.0-pre.2, climbabletreestrunks@1.0.4, closedcaptions@1.0.7, clothierheirloomsmod@1.1.0, cmicebox@2.0.1, coldvessel@0.1.19, colortooltipfornutrientlevel@2.0.0, configlib@1.12.0, conicalhotgear@1.0.1, cozypierzynas@1.2.0, craftablesticksmodern@1.0.0, crafteverything@1.3.4, thecritterpackcontinued@1.4.2, crlib@1.0.0, cropforecaster@2.1.0, cruciblefurnace@1.0.0, crucibleunlock@1.0.0, deathcorpses@2.8.1, doorvariants@1.1.4, drifteraimnerf@1.1.0, dryingspeedoverhaul@1.1.4, drythunderstorms@1.0.0, easybuilding@1.2.2, ecosystemfauna@1.2.3, ecosystemflora@4.6.2, elkhitch@2.1.5, elkphysics@3.0.3, elkvariants@3.6.2, enhancedhandbook@1.8.1, equipstats@1.0.5, extrafurniture@1.1.2, extrainfo@2.2.1, extraoverlaysm4@1.8.0, fairfish@2.0.0, farseer@1.4.0, fastpouring@1.0.1, feedfromseed@1.1.2, fendragonbcs@0.2.3, feverstonewilds@2.1.2, fillmybloomery@1.0.3, fishingplus@1.2.0, flameagainstrust@1.22.3-dev.0, floatingcombattext@2.0.0, foodshelves@3.0.4, footprints@1.2.4, geologymap@1.1.0, gimap@1.7.0, gourmand@1.8.12, handbookdeclutterer@2.0.1, handbookdecluttererfix@2.0.0, hardtackbread@1.0.0, herbarium@1.4.3, hudshelf@0.3.2, icecycle@1.0.2, immersiveimprovedsounds@1.0.1, immersiveminingandahalf@1.0.0, insanitylib@2.0.3, ithaniacannedgoods@2.0.7, jaunt@3.0.0-rc.3, kevinsfurniture@1.9.0, killstreak@0.1.6, knitting@2.0.3, krazykatzusemporium@0.0.4, lanternsathome@0.1.2, largervanillabags@1.0.5, locusthavest@1.0.5, manureecology@1.2.1, mapteleporter@1.2.0, mngeology@2.0.10, materialneeds@1.1.16, mealrevariation@3.1.6, sailboathotkeys@1.1.0, metalpots@1.8.0, meteoricsteel@1.0.15, mwi@1.9.0, morefluxes@0.4.0, morehudbars@1.2.0, mutations@0.4.4, naturalfoliage@0.0.4, bitzartnickelback@1.2.0, novelty@1.2.4, nzpatch@1.2.0, opineuponpine@1.0.10, optitime@1.5.14, orekiwoofsbeehives@2.0.0, pandahearth@0.1.0, panningbutbetter@1.0.1, particlesplus@2.5.8, performancecraftinggrid@0.1.1, petai@5.1.1, placeitanywhere@0.5.5, placeonslabs@1.1.3, playermodellib@1.23.2, playerstatusstrip@1.0.1, claywheel@2.0.1, progressionframework@1.1.0, projectiletracker@1.0.7, purposefulstorage@2.0.1, qualitygears@1.1.17, rackableplates@1.0.0, rarertraders@1.0.2, realistictemperatures@0.1.6, realisticwater@0.3.0, realsmoke@1.3.1, resinfarmremake@1.1.4, restfulsit@1.2.0, ricepaddies@1.0.3, roamingbees@2.0.0, ropeandspear@1.1.5, safefluidcooking@1.0.0, scarecrow@1.8.2, shearsrebalanced@1.0.0, sheydermod@1.0.3, shipwright@1.4.1, simpletea@1.2.0, sleepneed@3.1.4, slowtox@5.0.0, smithingplus@1.9.0-rc.1, smokescent@2.1.0, snowcaps@0.0.1, sonitodynamictraitsrebirth@1.0.3, stackedtemporalgear@1.0.0, statushudcont@4.3.2, steadygreenhouses@1.1.2, stringsense@2.4.0, struggletosleep@1.0.6, substrate@2.0.0, tableexpansion@1.0.3, treasurechest@0.5.3, temperatureheighttweakpatch@0.3.1, toolsmith@1.2.17, traitacquirermoddedclasses@0.9.16, treeshaker@1.1.1, truethirdperson@1.0.0-dev.1, universalhusbandry@1.2.1, usefuloils@1.0.0, valrossensmapfilters@1.2.0, vanity@2.5.1-rc.1, visiblebags@1.0.2, creative@1.22.3, vsecomachina@0.6.1, vsmodfarlands@0.2.0, vsroofing@1.6.3, survival@1.22.3, warmweathereffects@1.2.1, waterfall@1.2.4, watersheds@6.4.3, mapwaypointcolors@1.1.3, weaponout@1.0.2, webstotwine@1.20.1, wholtpo@1.0.3, wildbeerangeextender@1.0.1, wildgrasscontinued@1.3.11, xlibfork@1.0.21, 118hair@0.1.4, panserbjornrebjorn@1.0.0, antlershorns@1.5.1, autoconfiglib@2.0.10, bigcatstaming@0.10.0-pre.1, bloomeryquicklime@1.1.0, bluemorphoglider@1.0.1, blushandbins@1.3.3, butcheringpoultry@1.2.1, carryon@2.0.0-pre.7, chunklod@1.2.0-dev.2, combatoverhaulfork@0.18.1, comfybeds@0.4.2, crbutterfly@2.0.0, expandedfoods@2.0.0-dev.12, em@3.7.0, extremefirestartersreforged@1.1.3, floptaming@0.0.1, feverstonewildsbutcheringcompatfork@2.8.0, fzvanillacompat@1.0.2, foxtaming@1.7.6, functionalminerbeltandlantern@1.0.5, goblinears@2.3.4, handwarming@1.0.2, hodvisualizer@1.0.0, immersivemachina@0.1.0, indappledgrovesfirewoodbuffcontinued@1.0.0, madhoarding@1.0.1, mechanicalwoodsplitter@1.2.3, notenoughsand@4.1.0, pandahearthrealsmokecompat@1.0.0, prospectorsdispatch@1.2.1, quarterlogboost@1.0.0, quiversfork@0.9.29, seraphleveling@1.17.2, shearlib@1.3.0, slowtoxvisualized@1.1.10, smarahdovenebo@1.1.2, soilamendments@1.0.0, storagetweaks@1.3.3-rc.3, tailorsdelight@2.2.2, terrainslabs@1.0.16, toolsmithgeologypatch@1.2.0, weatherstory@0.8.1, wildcraftgrain@1.1.0, wildcrafttree@1.3.4, windowstoragelib@1.2.7, hookmolds@1.0.6, wolftaming@5.0.1, xskillsfork@1.0.72, yacb@1.0.2, zrustdrops@2.1.0, aldiclasses@2.2.2, bonearrowtweak@0.0.2, butcheringseraphlevelingcompatibility@1.1.1, combatreanimatedfork@1.0.1, ecomachinawildcraftnormaltreescompat@0.2.1, efchefstricks@1.0.0-dev.3, efmealsmodule@1.0.0-dev.5, idgwildcraftcompat@1.0.0, idgxskillscompat@1.1.0, noexclusiveskillspatch@1.0.0, optimizedcrbutterfly@1.1.0, upholstery@1.2.0, windowstorage@1.8.5, wool@1.9.3, xskillsgilded@1.3.37, zzcoarmorpenaltypatch@1.0.11, aldiclassesnonegatives@2.1.0, shearregret@1.0.1, traitacquirermoddedaldibooks@1.1.1
Involved Harmony IDs: immersivefoliage.shaderuniforms, mirrors, com.zaldaryon.optitime
System.Collections.Generic.KeyNotFoundException: The given key 'rmMirrorClipEnable' was not present in the dictionary.
at Vintagestory.Client.NoObf.ShaderProgramBase.Uniform(String uniformName, Single value) in VintagestoryLib\Client\ClientPlatform\ShaderProgramBase.cs:line 145
at Mirrors.MirrorShaderUniformPatch.Postfix(Object __instance)
at Vintagestory.Client.NoObf.ShaderProgramBase.Use_Patch2(ShaderProgramBase this)
at Vintagestory.Client.NoObf.ChunkRenderer.RenderOpaque(Single dt) in VintagestoryLib\Client\Render\ChunkRenderer.cs:line 299
at Vintagestory.Client.NoObf.SystemRenderTerrain.OnRenderOpaque(Single deltaTime) in VintagestoryLib\Client\Systems\Render\RenderTerrain.cs:line 118
at Vintagestory.API.Client.DummyRenderer.OnRenderFrame(Single deltaTime, EnumRenderStage stage) in VintagestoryApi\Client\API\IClientEventAPI.cs:line 88
at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 257
at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage_Patch1(ClientMain this, EnumRenderStage stage, Single dt)
at Vintagestory.Client.NoObf.ClientMain.MainRenderLoop(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 953
at Vintagestory.Client.NoObf.ClientMain.MainGameLoop(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 782
at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 173
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 742
at Vintagestory.Client.ScreenManager.OnNewFrame_Patch1(ScreenManager this, Single dt)
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame_Patch1(ClientPlatformWindows this, FrameEventArgs e)
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 354
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 131
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95
Cheeki , Jul 8th at 7:33 AM (modified Jul 8th at 8:04 AM)
@Liliet: Crash Report Game Version: v1.22.3 (Stable)08.07.2026 9:09:36: Critical error occurred in the following mod: mirrorz@1.0.0Loaded Mods: abundantstonepaths@1.0.3, alatyrstorcholders@1.2.0, hardcorewaterforked@1.4.6, astronomersdelight@1.0.2, axintexturescon

Your modlist is gigantic and I am not going through it checking every mod.

Possibly it's optimum but I cannot confirm as that won't install on my computer.
Otherwise it's some mod that ships shader overrides. Not sure which of those does.
Edit: it's SheyderMod.

Cheeki , Jul 8th at 8:32 AM (modified Jul 8th at 8:59 AM)
@Liliet: I see, thank you. Welp, in this incompatibiltiy SheyderMod wins, sorry lol

I'll provide compat whenever I'll get around to it. Low priority.

Edit
Though thinking about it, it's a moving target. Updates fairly frequently, and whatever compat I provide might break at any time for changes on their side I cannot predict.
I'll provide compat, but only once. After that the onus is on them. My patching system allows for external compatibility patches for this reason.

Cheeki , Jul 8th at 5:00 PM (modified Jul 8th at 5:13 PM)
@Shey: That looks like a cool mod.What is the issue? Maybe we can work on a solution
stuff

@@target chunkopaque.fsh
@@priority 20
@@atomic

@@patch mirror_clip_uniforms_patch
op: insert_after
match: literal
@@pattern
uniform float horizonFog;
@@content
uniform vec3 rmMirrorClipN;
uniform vec3 rmMirrorClipP;
uniform float rmMirrorClipPull;
uniform float rmMirrorClipEnable;
@@end

@@patch mirror_clip_discard_patch
op: insert_before
match: regex
@@pattern
vec4 texColor\s*=\s*mappedTex\s*\*\s*rgba;
@@content
if (rmMirrorClipEnable > 0.5 && dot(rmMirrorClipN, worldPos.xyz - rmMirrorClipP) + rmMirrorClipPull < 0.0) discard;
@@end

add this under your mod /assets/mirrors/config/shaderpatches/sheyder_mirrorpatch.txt
my mod will pick it up automatically and not make the game crash due to missing uniforms

what you need to keep updated is the @@pattern if you make breaking changes to chunkopaque.fsh (or other patches present in this mod)
mediocre documentation is available below. darkvision, mirrors and renderermangler use the same shader patching system, present in the repo below.

basically compare what the mod patches are looking for in the vanilla shader code and what you do in your shader code. if you change what they are looking for they will fail and and you have to change it yourself accordingly in your mod. if your mod is present, it gets picked up and everything works fine.

https://codeberg.org/Luigi-delle-Bicocche/darkvision/src/branch/main/darkvision/assets/darkvision/config/shaderpatches/documentation

Shey, Jul 9th at 10:50 PM (modified Jul 9th at 10:53 PM)
@Cheeki: stuff @@target chunkopaque.fsh@@priority 20@@atomic @@patch mirror_clip_uniforms_patchop: insert_aftermatch: literal@@patternuniform float horizonFog;@@contentuniform vec3 rmMirrorClipN;uniform vec3 rmMirrorClipP;uniform float rmMirrorClipPull;uniform flo

I implemented it and it just works. This compatibility layer will be included in the next update.
I will also include this, if possible, for darkvision and renderermangler.

Actually i am not touching standard shaders that much. Most of the code is provided by an include and is designed to touch the standard code as little as possible but i keep it in mind when playing around. Though i don't think there will be any graphical effect, that makes sense, that changes chunkopaque.fsh in such a significant way. 

Cheeki , Jul 9th at 11:55 PM
@Shey: I implemented it and it just works. This compatibility layer will be included in the next update.I will also include this, if possible, for darkvision and renderermangler.Actually i am not touching standard shaders that much. Most of the code is provided

I do not think darkvision nor renderermangler need compat. DV seemed to work fine at a glance, renderermangler, most of your shader features do not work due to how renderermangler mangles the renderer (true to its name)
Not a shader issue that one.

Willcario, Jul 8th at 1:58 AM

How do these work on a technical level? Is it like a camera that records everything in front of it?

Cheeki , Jul 8th at 7:32 AM
@Willcario: How do these work on a technical level? Is it like a camera that records everything in front of it?

Very roughly, yes. It's a bit more involved than that.

Liliet, Jul 7th at 9:00 PM

AWESOME

DreamEater, Jul 7th at 7:59 PM

this is so cool yo.

Thranos, Jul 7th at 7:56 PM

10/10 thumbnail

DUCATISLO, Jul 7th at 6:46 PM

the lupine