init.luau
Versions
Every version of this package its world published, newest first by when it first appeared. A version published again later keeps its place.
heal: constant-named shaders, stored meshes and the scene's own refs record
01KYTR62EBREG9BNXYQ2APKWMXb4c852d509Browse filesCompare with previousCompare from herefreshcut: ground-truth occlusion, an antialiased image, and two defects the lit frame never showed GTAO joins the shared stack, and with it screen-space GI, edge antialiasing and sharpening. All four sit in base(), so any part opting into the stack gets them rather than each part deciding again. The mansion additionally takes screen-space reflections for the polished chequer floor and the mirror; roughnessCutoff keeps the trace to surfaces smooth enough to show anything, so plaster and fabric never pay for it. Screen-space GI is the term image-based lighting could not supply indoors. It is derived from what the frame actually drew, so a wall occludes it, where the IBL diffuse landed sky irradiance on every interior surface at full strength. Antialiasing comes before sharpening in the raise order: sharpening an aliased edge sharpens the staircase. Twelve systems now, and the frame cost did not move. Two defects found by asking the engine rather than by looking at a picture, both invisible in every lit capture taken of this hall: The stair carpet z-fought on every step. A tread top face sits at y + dy*0.5, and the red runner was laid at +0.02 with a half-thickness of 0.02, putting its underside on exactly that plane; the gold band a further 0.01 up overlapped the red almost entirely. Two coplanar pairs per step, sixteen steps. The red now clears the tread by ten millimetres and the gold is embedded in the red rather than stacked on it, so no two faces share a plane. The volume composite rebound a dead effect every frame. ensure() was guarded by a module-level flag, spawn() called it and frame() never did — but the module outlives a part and the effect does not, so after a mode flip the flag still claimed a registration that had gone and every later bind failed with an invalid effect. ensure() now verifies against the live post chain instead of trusting the flag, and frame() re-establishes before binding. The texture and shader creates are guarded so a re-ensure cannot abort on one already being present; the effect re-add is the part that has to land. Known and not addressed: the balustrade rails and a sideboard still z-fight. The balusters top out clear of the rail underside, so it is not the coplanar cause the treads had.
01KYN6CK507BTWJDBSVGE8ANNB1a8f0d784dBrowse filesCompare with previousCompare from herefreshcut: a shared render stack, and the rules for using it render.module is the seam: a part hands over a table naming which of the builtin rendering systems it wants, and everything raised is temporary and tracked on the part own context, so one part can be a lit interior and the next an ocean without either inheriting the other air. Adding a system is one row in a lookup table. freshcut takes exposure, aerial perspective, volumetric light, cascade placement, contact shadows, debanding and film grain. Three things this cost, all written down where the next part will read them, because each looked like a tuning number and was not: Auto exposure over its full range re-brightens an interior that is already lit to a photographic level and blows it out. The range here is narrow and sits below unity. It is not there to find the exposure, only to ride the walk from the hall into daylight. Past about -0.5 stops of compensation it takes the metals down with it, because a reflection has no light of its own to fall back on. Image-based lighting is NOT used in this part. Its specular term and environment.capture write the same environment and the last one wins, and what this hall reflects is the room and its own lamps, which a prefiltered sky cannot reproduce. Nor is specular = 0 a way to keep both: it does not hand the environment back to the capture, it removes the environment specular outright and the metals render black. Its diffuse term has no indoor occlusion and lands sky irradiance on every wall at full strength, which reads as a flat milky room whatever the sky is doing. Both of those read the scene ProceduralSky, which was sitting at midnight with a deep blue zenith because this part drives its look through a volumetric sky and nothing had ever updated the component. Any system asking the scene what the sky is was being told midnight. The part now sets it to the hour it is actually lit for. Known and not addressed: the hall metals still read darker than they did before the stack went in.
01KYMFGX1H5Y741AY1YFZSMF8P8a9492c17dBrowse filesCompare from here