Spellcaster Studios

Make it happen…

Tag Archives: optimization

This was complicated…

What seemed like a simple issue to solve (lack of performance on low-end card because of ambient occlusion) ended up being much more complicated than expected! So, yesterday I decided to add a new system to be able to customize the level of ambient occlusion (in terms of resolution)… I added the system, but while […]

Issues with performance

Today I was trying to test the game in fullscreen under Linux and I found a weird performance issue… In the initial cutscene, the game was running very slow (about 30 FPS), but when I moved the player to the left a bit (so more geometry on screen), the game jumped to the normal 60 […]

Frustrating optimizations

Today I added one optimization that was on the list for ages now: camera culling… Before you start shouting at me, there was already some camera culling being performed, mainly on the voxels (which is the biggest hit on the rendering), and I don’t believe in premature optimization… Anyway, since this was on the list, […]

Raycasting optimization

Yesterday, while playing around with the beam cannon, I found some bugs on the collision detection, so today I dived right into that… The current method for raycasting on the voxel map is to do sampling: start at the beginning of the ray and walk through it, checking if it is a solid cell. Of […]

60 FPS!

Tadam! Found the issue with the frame rate… The game is running at a good framerate, but due to some old code, the frame rate got locked to 50 FPS, which in a normal monitor that refreshes at 60 Hz causes some jumps in the image… “So, Covenant, you just had to change a variable […]


I wasn’t happy with the performance of the game in certain points, with drops to 30 or 40 FPS, as measured by Fraps… So, I decided to dust off my profiling tools and try to figure out where were the bottlenecks, but when I was running the initial benchmarks I got a very strange issue: […]

Optimization: Shader Cache

The shader system on “Cantrip” has some sophistication to it, and part of it is the fact that it generates the specific necessary shaders from a uber-shader (a big shader full of conditions) and a render environment that trims that uber-shader to smaller ones, depending on need… The problem with this approach is that everytime […]

More multithreading

And another day without a screenshot… Mostly work behind the scenes, but it’s going along nicely… Already can generate areas in the background and they work fine… It’s a lot of work, but most of it has been smooth sailing (which is a bit unexpected)… Need to deal with some crashes (to be expected) and […]


Today I started tackling one of the big optimizations: multithreaded area generation and management… Multithreaded code is always hard, since it demands a lot of care on how to build stuff, and since graphic APIs don’t like working multithreaded (at least D3D9 doesn’t), I need to work around that limitation as well… So started with […]