Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

These look great and they had just the right style for my game!

Unfortunately, I found the shader to be very unoptimized. If you have ~100 cliffs in your level it will probably start to lag. After doing some testing, I found that the fragment shader was the source of the lag. It wasn't due to the positioning of my cliffs causing a ton of overdraw or not having occlusion culling or something like that.

The shader has ~26 (I counted. It's around there.) conditional operations per pixel and is simply very big. I understand that the conditionals are for certain settings but I recommend hard-coding them for optimization. I am also on a very good PC so I can only imagine how this would affect more mid-range target hardware. This is fine if you are trying to make a very detailed scene but I ended up having to make an optimized / modified version that only has one texture since that was all I needed. I was lucky I only needed one texture and not the secondary top texture because if not my game's performance would have suffered a lot. 

Overall I think this is a very good asset as it worked really well in my game once I got everything figured out and it looks fantastic. Basically, I think it's worth it since they look great but you'll probably need to optimize the shader for your use case if you plan to use them at scale. Great job! I can tell a lot of work went into this.

(1 edit)

Hi, Thanks so much for the kind words. Sorry if you were seeing performance issues. I had heard similar feedback from a developer trying to use them on Android devices.

I'll see if I can spend some time doing some performance improvements and do an update, maybe simply use the shader preprocessor for some of the options instead.


Edit: as far as I know, any conditionals that are based on a consistent setting such a bool uniform, should not cause any issues as the condition will always be the same, so it won't generate branching as all threads will follow the same execution path.