Tags
Creators
Details
All versions
v1.6.0
Release
VILC v1.6.0 - a lot of fixesyesterday 58
Compatibility
Minecraft: Java Edition
1.21.1
Platform
NeoForge
Supported environments
Client-side
Required content
Unavailable version
Unavailable version
Unavailable version
Changes
Version 1.6.0
Added
- Veil spot lights (SpotLightData) are now rendered with Iris shaderpacks and in the fallback pass, including voxel occlusion. They share the area-light budget
- Optional spot-light shaping for addons: AreaLightShapeRegistry.set(SpotLightData, focus, lensRadius) adds beam focus and a lens radius; the soft edge comes from Veil's own spot angle
- Light beams: Veil's in-scattering strength (point, area and spot lights) is now rendered as visible light in the air, with voxel shadows and dithered raymarching. New "Light beams" on/off toggle and "Light beam quality" option (Low/Medium/High = 8/16/32 steps, default on and Medium); costs nothing when no light has in-scattering
- Light extras API for addons: AreaLightShapeRegistry.setExtras(LightData, skipFirstPerson, chromaticFringe) lets a light skip the first-person hand/held item (e.g. flashlights) and adds a chromatic fringe at the cone edge
Changed
- The voxel shadow option is now a master switch: when enabled, every Veil light casts voxel shadows regardless of its own occlusion flag (light mods often leave it off, so the option appeared to do nothing)
- Spot-light lenses are round: the lens radius used to clamp to a square whose corners followed the light's roll, so beams looked square and rotated with the view direction
- Removed the "Detailed normals" option: since the depth-edge fixes it made no visible difference. Normals now always use the precise neighbour sampling within 64 blocks; its slot in the settings screen holds the new light beam toggle
- Light beams are raymarched in a separate half-resolution pass (same shader, beam output only) and upsampled bilinearly in the composite: about a quarter of the beam cost, which matters for wide, long-range lights (e.g. a 64 block hanging lamp). The full-resolution lighting pass no longer computes beams
- First-person hand detection now compares against Iris' pre-hand depth buffer (pixel exact) instead of a fixed screen region; lights other than skipFirstPerson lights now light the hand
Fixed
- Overlapping colored lights mix properly (red + blue = magenta etc.): each light is now compressed on its own before accumulation instead of compressing only the sum, which let the closer light dominate the hue completely and split overlaps along a hard edge. Single lights look unchanged
- Fixed black pixels around foliage, leaves and grass with shaderpacks: neighbouring sky pixels reconstructed to infinite positions and turned the surface normal into NaN
- Fixed dashed dark outlines along depth edges (grass blades, flowers, leaves in front of the ground): the screen-space derivatives paired edge pixels with a neighbour on another surface, tilting the normal away from the light. Depth edges are now detected relative to the pixel footprint and use the closer neighbour (or a camera-facing normal for one-pixel-wide blades)
- Large FPS drops with active Veil lights:
- Light beams only raymarch where the view ray passes through a light's range instead of along the whole ray for every light
- Voxel shadows inside light beams only run on "High" beam quality (they cost steps x lights x shadow ray per pixel)
- Surface lighting skips the shadow ray for light contributions below ~0.2 % (invisible fringes of a light's range)
- Remaining dark outlines around small depth steps (flower petals on grass, blade bottoms), which were too short for the edge threshold: within 64 blocks normals now always use the closer of both neighbours
- Light beams swimming around while walking, also for static spotlights: the beam rays started at the camera position without view bobbing, while the scene is rendered with it. Rays now start at the real eye position taken from the projection
- Crash (access violation in the graphics driver) when enabling voxel shadows while a shaderpack is active: Veil creates the voxel grid texture on first use with a client-memory upload and does not reset the pixel unpack state, which Iris' pipeline can leave with a bound unpack buffer or skip values. VILC now resets the unpack state around the voxel grid setup and restores it afterwards
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:MJEsr0LL:oZQZGBoR"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:MJEsr0LL:oZQZGBoR"
}![[YM!] Veil Iris Lights Compat (VILC)](https://cdn.modrinth.com/data/MJEsr0LL/3eb9b59ab6cdee0233e70f062cc9f3bc44b40d35_96.webp)

