Skip to content

VRC Light Volumes v.3.0.0-dev.5

Pre-release
Pre-release

Choose a tag to compare

@REDSIM REDSIM released this 05 Jul 02:13

Finally, in a year after Light Volumes v.2.0.0 release, a next major Light Volumes update!

It's a dev beta version, so a lot of stuff might be changed before the final release!

New LV v.3.0.0 Documentation Is Here (Work In Progress)

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)

Important for shader people:
Now you should pass your World Normal into the LightVolumeSH() function. It will still work even if you'll not do that, but will not mask the lights and shadows properly based on the normals, so it's highly recommended unless you shade something transparent like fog or foliage.

Full usage:
void LightVolumeSH(float3 worldPos, out float3 L0, out float3 L1r, out float3 L1g, out float3 L1b, float3 worldPosOffset = 0, float3 worldNormal = 0)
LightVolumeAdditiveSH(float3 worldPos, out float3 L0, out float3 L1r, out float3 L1g, out float3 L1b, float3 worldPosOffset = 0, float3 worldNormal = 0)
float3 LightVolumeSH_L0(float3 worldPos, float3 worldPosOffset = 0, float3 worldNormal = 0)
loat3 LightVolumeAdditiveSH_L0(float3 worldPos, float3 worldPosOffset = 0, float3 worldNormal = 0)