Project Zomboid

Project Zomboid

101 ratings
TreeZ ViZibility
2
2
   
Award
Favorite
Favorited
Unfavorite
File Size
Posted
Updated
758.830 KB
30 Mar @ 8:18am
20 Jul @ 6:15am
5 Change Notes ( view )

Subscribe to download
TreeZ ViZibility

Description
ClearView - Dynamic Tree Transparency Shader
Supports both B41 and B42
(client-side only – fully compatible with B41-MP)

In Project Zomboid, tree cover often hides the player entirely, especially when moving behind dense foliage. The base game uses hardcoded cutaways or full transparency toggles, which can feel abrupt or insufficient.

This mod provides a smooth, shader-based visibility boost when the player is behind trees, using a dynamic stencil mask and a custom fragment shader. The result: natural, progressive fading of foliage around the player—without breaking immersion or affecting game mechanics.

Key Features:

Enhanced visibility: Improves player awareness behind trees without removing them entirely.

Shader-driven: Uses an upgraded version of the base stencil shader with an expanded resolution mask.

Seamless integration: No changes to base Java classes—fully piggybacks on the game’s rendering logic.

Minimal impact: Lightweight and optimized for real-time performance.

Perfect for players who love visual immersion but want fewer “where-the-hell-am-I” moments when sneaking through the woods.

Pairs perfectly with TreeZ:
https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=3433232937

Heads up
This mod replaces two base files (mask texture + shader). It’s safe but may conflict with mods that also override tree.frag.

Questions or feedback?
Find me on the Project Zomboid Official Discord
https://discord.gg/theindiestone

Workshop ID: 3455053839
Mod ID: treez_vizibility
8 Comments
Phil 28 Jul @ 2:16am 
@Alree

It's still a bit impossible to see the character using both mods (TreeZ and VIsibility) as you can see here:

https://imgur.com/a/XSXA9mr

Also road view is difficult:
https://imgur.com/8jubly1

I'm not sure how this works to give you a suggestion :(
Rex87 20 Jul @ 12:21pm 
would be much easier to walk through trees if the tree base would be marked somehow, kinda like while using cut tree option with axe, green marker appears at the base of the tree when you hover at it while the tree still becomes transparent like normal, personally I use this trick to not get slowed or accidentally scratched by the tree but I would like if there was something similar without using cut tree option to know on which tile the tree is actually located while walking through dense forest.

idk it's just my idea to improve this mod or for completely separate mod from this, I personally like to be in the wilderness very often but I can't see where I can go without walk to option.
TonyStonk 20 Jul @ 6:23am 
Alright thanks
Alree  [author] 20 Jul @ 6:15am 
@TonyStonk
Ok thanks it's maybe a B41 things
I'll comment this out for B41 until I found a solution
TonyStonk 20 Jul @ 6:08am 
Here is the rest:

at zombie.Lua.Event.trigger(Event.java:64)
at zombie.Lua.LuaEventManager.triggerEvent(LuaEventManager.java:92)
at zombie.iso.IsoChunk.doLoadGridsquare(IsoChunk.java:3333)
at zombie.iso.IsoChunkMap.processAllLoadGridSquare(IsoChunkMap.java:143)
at zombie.gameStates.IngameState.enter(IngameState.java:715)
at zombie.gameStates.GameStateMachine.update(GameStateMachine.java:145)
at zombie.GameWindow.logic(GameWindow.java:298)
at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
at zombie.GameWindow.frameStep(GameWindow.java:765)
at zombie.GameWindow.run_ez(GameWindow.java:681)
at zombie.GameWindow.mainThread(GameWindow.java:495)
at java.base/java.lang.Thread.run(Unknown Source)
TonyStonk 20 Jul @ 6:07am 
B41
Alree  [author] 20 Jul @ 6:04am 
@TonyStonk
Let me check I didn't have this error
B41 or B42 ?
TonyStonk 20 Jul @ 5:57am 
this addon cause error a lots

`attempted index: find of non-table: null
function: fadeBigTrees -- file: fadeBigTrees.lua line # 6 | MOD: TreeZ ViZibility
java.lang.RuntimeException: attempted index: find of non-table: null
at se.krka.kahlua.vm.KahluaThread.tableget(KahluaThread.java:1689)
at se.krka.kahlua.vm.KahluaThread.luaMainloop(KahluaThread.java:641)
at se.krka.kahlua.vm.KahluaThread.call(KahluaThread.java:163)
at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1980)
at se.krka.kahlua.vm.KahluaThread.pcallvoid(KahluaThread.java:1812)
at se.krka.kahlua.integration.LuaCaller.pcallvoid(LuaCaller.java:66)
at se.krka.kahlua.integration.LuaCaller.protectedCallVoid(LuaCaller.java:139)
at zombie.Lua.Event.trigger(Event.java:64)