Rune Skovbo Johansen

@runevision@mastodon.gamedev.place
2K Followers
112 Following
2.9K Posts
Indie game developer, procedural generation enthusiast, Dane in Finland. I made Eye of the Temple, now working on The Big Forest.
Website & bloghttps://runevision.com
YouTubehttps://www.youtube.com/c/runevision
Blueskyhttps://bsky.app/profile/runevision.bsky.social
I might be wrong. Anyway, turns out the color dilation Unity applies does not go all the way, leaving some transparent pixels still black, which is absolutely terrible for the smallest mip levels. I could swear the dilation used to cover all pixels, but might misremember that one too.
Didn't Unity use to let you inspect what color is stored in transparent pixels? Not in the RGB view, but in the individual R, G and B channel views? Now there's NO way to tell, short of slapping the texture on a material with a non-transparent shader and look at that. And no, I can't disable "alpha is transparency" because the color dilation that this feature enables is exactly what I want to inspect.
I got things working by storing the extra info in the specular color map, since I don't plan on having colored specular highlights anyway.

So I have to determine per pixel whether it's leaves or bark. I don't think I can use a hardcoded placeholder albedo color to mean "use per-instance color here" because it would produce halos/fringes due to texel interpolation.

So I have to store this info in a separate channel that's not albedo, plus make the leaves in the albedo black rather than white, I think.

I've had great success over the past 10 days implementing the tree improvements I knew for years I'd have to do eventually, but found near-insurmountable for me to tackle.

Still not quite done - the tree instance colors affect the whole impostor, while it should only affect the leaves. Which means the bark is way too dark (and green) on the impostors. (My tree models have white leaves so I can give them any color. Which means the instance color is the full leaves color, not just a slight tint.)

I found this postcard perfect view while exploring.

Also, the trees are now a bit more scruffy and not so smooth and rounded, which particularly changes how the tree coverage looks in the distance.
#ProcGen #GameDev

The tree leaves are now swaying in the wind. The "Grasslands - Stylized Nature" pack the trees are from actually already included a wind effect, but I implemented some simple tweaks to make it more to my liking. What do you think?
#GameDev #IndieGameDev

Here's a fly-by with the new trees. The fact that they cast/receive shadows even in the distance makes a huge difference compared to the old Unity billboard ones, which destroyed the sense of depth in the distance.
#ProcGen #GameDev

(Video of old trees here: https://mastodon.gamedev.place/@runevision/112186261304893345)

Added a *bonk* sound effect to the NPC impacts to entertain myself while debugging some tedious pathfinding issues. Sound on 🔊🔊🔊

#gamedev #indiegame

I got translucency working on the trees ☀️🌳

Hell yeah, let's stroll!

#GameDev #ProcGen

×
When I first used the new tree models, nothing felt satisfying to me anymore. It took me long to tweak misc aspects of the trees to isolate what it was I liked better about the old trees, to be able to replicate the same feeling with the new models. Here's how they first looked vs how they look now.
The most notable changes were:
- Remove the blue sheen Unity insists on adding even when smoothness is set to zero.
- Increase the alpha cutoff value > made models and shadows more fluffy and made impostors less like undefined blobs.
- Custom lighting function that's brighter in shadow.
@runevision How did you go about removing the blue tint? I recall it having something to do with sky lighting or something, but I've since long forgotten.
@HugoCortell With Unity's Standard shaders you can switch to the Standard (Specular) shader and set the specular color to black. For custom shaders there's a variety of ways to do it which depends on the details of the shader. I don't have experience with URP or HDRP.