Skip to content

VRC Light Volumes v.3.0.0

Choose a tag to compare

@REDSIM REDSIM released this 13 Oct 05:28
· 10 commits to main since this release

Finally, in a year after Light Volumes v.2.0.0 release, a next major Light Volumes update!
This update was the largest one and took me 4+ months of full-time work. So if you like it, you can help me with it's further development supporting me on Patreon or checking my other assets on Booth!

IMPORTANT!
Migration from previous versions to v.3.0.0, will remove editor helper components, leaving Udon components only, and it will not be possible to downgrade easily! I suggest you to backup your scene files (only scene files, not textures/materials, etc.) before doing that!

Main changes in version v.3.0.0:

  • EVSM Point Light Volumes shadows. Blurred penumbra, contact hardening
  • Shadows can be baked in Editor or in Game, or can be realtime
  • You can use Render Textures, Custom Render Textures and Materials for animated cookies
  • Old volumetric shadowmasks are no longer supported (both in editor and shader)
  • Dramatically optimized Area Lights
  • Area Lights can project cookies, just like TV screens (Almost like LTCGI does)
  • Separate specular highlights from point lights. Specular highlights now use point light size
  • Froxel-based Light Clustering. Optimizes performance in scenes with lots of Point Light Volumes
  • Shader stripping that strips unused VRCLV features in your world projects improving performance
  • Regular Light Volumes performance dramatically improved
  • New Editor UI, gizmos, debug features
  • Documentation updated
  • Much more

All changes in version v.3.0.0:

Show all the dev changelog

Changes in version v.3.0.0

  • Cookie aspect ratio limited
  • Editor multi-selection lags fixed
  • Clustering migration parameters fixed
  • Several bug-fixes

Changes in version v.3.0.0-dev.21

  • More features in Inspector UI: ability to easily resize lights, voxels preview size control
  • 360 degrees spotlight clustering bug fixed
  • Progressive baking bug fixed
  • Bakery compressed volumes auto-fixer
  • No shadows after upload bug fixed
  • SH Speculars custom BRDF support
  • Light Volume Debugger fix (@ColorlessColor)
  • Atlas deduplication flag for a light volume
  • Light Debugger shader fix
  • Extra features added to the avatar VRCLV debugger
  • LightVolumes.cginc update to respect @d4rkc0d3r d4rkAvatarOptimizer constraints
  • ASE LightVolumesPBR node and all the example ASE shaders fixed
  • A lot of editor UI tweaks

Changes in version v.3.0.0-dev.20

  • Less cbuffers to leave more space for the other shaders
  • Unit tests cleaned
  • Shadow baking error fixed

Changes in version v.3.0.0-dev.19

  • Documentation reworked
  • Tooltips simplified
  • Shader stripping feature now allows you to use LightVolumes.cginc even without VRC Light Volumes package in your project (no more compilation error)
  • Light Volumes Overdraw Debug
  • New optional minimum-lightness clamp feature for LightVolumeTVGI (Thanks to @Flare26)
  • Some small bug fixes

Changes in version v.3.0.0-dev.18

  • Automatic LightVolumes.cginc shader stripping feature
  • Shaders performance and compile time optimized
  • Udon scripts optimized

Changes in version v.3.0.0-dev.17

  • Hierarchical Z-Buffer shadow culling feature (Increases performance in scenes with lots of LV point lights with shadows)
  • You can now toggle textures auto-animating again: SetCustomMaterial(material, autoUpdate), SetCustomTexture(texture, isCubemap, autoUpdate) (It's back after I removed it in dev.16)
  • Few UI improvements

Changes in version v.3.0.0-dev.16

  • Light Volumes GLES3 fix in LightVolumes.cginc
  • Animated textures processing simpified: RTs, CRTs and materials are now always "animated".
  • Shadow blinking bug while atlas rebuild fixed.
  • Bug related to Manager being Editor Only (Issue #98) fixed
  • Wrong UDONSHARP define. (Issue #99) Fixed
  • HDR textures override on Android (issue #102) fixed
  • AudioLink dependency fix
  • Default Bakery baking mode fixed
  • Shadows Far Clip plane shows "0 (Auto)" when it's 0
  • Example shaders are back to surface shaders and ASE graph simplified
  • ModularAvatar support for Light Volume Debugger by @ColorlessColor
  • Fix missing shadow bake directory by @advanced4

Changes in version v.3.0.0-dev.15

  • New VRCLV Editor API - using VRCLightVolumes.Editor
  • Bake into light probes feature fixed
  • Bakery support improved and fixed
  • Point lights can now only bake all 6 shadow cubemap sides in the same frame
  • Point lights didn't work with prefabs correctly - fixed
  • In-game shadow seams fixed
  • Bake in game works in queue now
  • Now you can override shadow resolution and quality per each light
  • New debug clip planes gizmos
  • Shadowmap naming collision fixed
  • New gizmos features by @owlboy (PR #97)
  • Surface shaders support fixed
  • New Manager UI features
  • Potential memory leaks fixed
  • Lots of editor bugs fixed
  • Lots of bugs fixed overall

Changes in version v.3.0.0-dev.14

  • Light Volumes shaders compilation time significantly improved
  • Standalone scripts compilation fixed
  • Editor-playmode properties changing bug fixed
  • Animated cookies animate in editor now too
  • "Custom Lightmapper" value in Manager (Does nothing under the hood, just hides Bakery and Progressive properties)
  • Bakery Volumes components are hidden now in hierarchy
  • Point Light Volumes shadows far clip plane bake issue fixed
  • Light Volumes and Point Light Volumes now always create their Manager script when added as components manually
  • Light Volumes and Point Light Volumes now always get initialized in Manager, even when added manually or dragged into the scene as a part of a prefab
  • Editor scripts restructured

Changes in version v.3.0.0-dev.13

  • Atlas post-processors fixed (LTCGI integration still doesn't work, waiting for the update!)
  • Surface shaders support fixed
  • Lights migration from old to newer components fixed (cookies, shadows, projection mode should migrate correctly now)
  • Bakery wasn't baking volumes in previous version - fixed now!

Changes in version v.3.0.0-dev.12

  • Point Lights Froxel Clustering feature (Increases FPS a lot on low-end devices when there are too many lights in the scene), requires shaders to use current LightVolumes.cginc
  • No separate Editor and Udon components! Only one component for Manager, Light and Volume
  • Better Inspector UI
  • Debug properties on each component
  • Light Volumes sorting in Manager's context menu
  • Some other fixes

Changes in version v.3.0.0-dev.11

  • Huge LightVolumes.cginc rework - should be more optimized and compile faster
  • API for custom lightmappers support
  • Custom specular BRDF override feature (PR #88 by @orels1)
  • Force scene lighting manually by triggering LightVolumeManager.SetForceSceneLighting(bool enabled)
  • Docs updated

Changes in version v.3.0.0-dev.10

  • Post-processors fix. LTCGI adapter should work again!
  • Some LightVolumes.cginc optimizations

Changes in version v.3.0.0-dev.9

  • Sanitizer critical bug that caused permanent stalls fixed.
  • Bad performance in editor fixed.

Changes in version v.3.0.0-dev.8

  • Area light broken color fallback fixed
  • Some other small fixes and improvements

Changes in version v.3.0.0-dev.7

  • Issue #87 fixed. It was a LUT texture sampling method divergence from v.2.x.x (I realized it wasn't correct in v.2.x.x as well, but now fixed) - Requires to update LightVolumes.cginc in all the shaders. Thanks to @JLChnToZ for the time and assistance!
  • Another area light fallback color fix

Changes in version v.3.0.0-dev.6

  • Toggling light volumes in editor in playmode was breaking shadows - fixed
  • Default Point Light Size decreased, Intensity increased (To have smaller speculars by default)
  • Area light cookie fallback color fix (At least partially)

Changes in version v.3.0.0-dev.5

  • Multithreaded atlas packing. Atlas packing time is almost instant now even for huge scenes.
  • Fixed the bug when making Undo after deleting a Light Volume was breaking it's behaviour
  • Runtime shadow baker is now integrated into PointLightVolumeInstance.
  • Bake In Game toggle that automatically bakes shadows on start, and you can save memory by not including the initial shadow map in your bundle. (Even if you have a baked shadow map in editor, it will not be included into bundle when Bake In Game is enabled)
  • Escaping incorrect symbols in file names
  • Negative lights now work again
  • Point light shading is set to 3 by default (sharper shading by default)
  • Shading is now not affected by point light size (fixes some light bleeding potentially)
  • Docs updated

Changes in version v.3.0.0-dev.4:

  • Far Clip Plane for shadows added.
  • Debug Clip Planes toggle added.
  • Always dirty scene bug fix.
  • Material cookie replaced _MainTex with an empty texture - fixed.
  • Lots of LightVolumes.cginc improvements including faster compilation times.
  • Shadow min variance fixed. Separate shadow min variance for Quest and PC builds.
  • Wrong volume sorting bug fixed.
  • Lots of different bugs fixed.
  • SetWeight() method added.
  • Docs updated.

Changes in version v.3.0.0-dev.3:

  • Individual size-aware physically-correct speculars (Old cheaper speculars are also supported)
  • All the example shaders updated (they use new speculars by default)
  • Additive volumes initialization fix
  • Cookies dedupe bug fixed (probably, need more tests)
  • Undo console errors fix
  • Docs updated (still not final, will be much better after full release)
  • Shader code restructured and should be more optimized now
  • Example scenes updated

NOTE: Use new LightVolumeSHSpecular() function to get both SH and Speculars when sampling Light Volumes. Especially recommended for PBR shaders! Note that it's heavier and might not be the best solution for Quest/Mobile shaders.

Changes in version v.3.0.0-dev.2:

  • LightVolumes.cginc restructured for easier custom workflow. You can now use LV_LightVolumeRegularSH(), LV_LightVolumeAdditiveSH(), LV_LightVolumePointSH() as separate features.
  • Normal magnitude in LightVolumesSH() now controls shading hardness for point lights.
  • LightVolumeDebugger now supports LightVolumes v.1.x.x
  • Cookie textures assign correctly supports Undo now
  • Packing strategy fix - Requested by @PiMaker
  • Editor performance improved
  • Baking multiselected lights is now possible
  • Documentation updated

Changes in version v.3.0.0-dev.1:

  • "Baked-realtime" EVSM shadows. Blurred penumbra, contact hardening and low performance cost.
  • Fully realtime EVSM shadows support. Not that performant, but you can rebake shadows in runtime, even every frame if you need.
  • Old volumetric shadowmasks are no longer supported (both in editor and shader)
  • Dramatically optimized Area Light Volumes. Full back compatibility, but slightly different look.
  • Dynamic custom textures array - bakes in runtime when needed
  • Animated RenderTextures, CustomRenderTextures and Materials support for realtime cookie projections and more!
  • Area lights can now emit light based on texture cookies, almost like LTCGI or AreaLit does. Also very fast and performant.
  • Area lights automatically fallback average color for Light Volumes v.2.x.x shaders
  • Point Light Volumes normal masking and shading control
  • Bakery bitmasks support
  • Baking Point Light Volumes into Light Probes support
  • New optimized voxels preview in editor, you can now preview millions of voxels with no lag!
  • New Light Volume Debugger shader that can be integrated in your avatar, currently set up with VRCFury
  • More optimized and advanced Udon scripts
  • Light Volumes v.1.x.x are no more supported
  • LightVolumes.cginc refactored
  • All Udon scripts refactored
  • Example scenes updated
  • Added Force Scene Lighting Toggle by @vard88508 - Overrides brightness limits for shaders like @lilxyzw and @poiyomi for overall bertter avatar look in properly configured scenes
  • Volume post-processors update by @PiMaker (I hope I didn't break any of your work while working on v.3.0.0. Promise to fix it soon if I really did)