Karim Abdel Hamid
banner
khamid.bsky.social
Karim Abdel Hamid
@khamid.bsky.social
I'm a software engineer at @irongalaxystudios.com‬, and an open source developer on the Grindstone game engine independently. If you would like to volunteer or make games with Grindstone, feel free to reach out!
https://karimio.github.io/grindstone/
I haven't been able to shut up about it for 2 years and it's impossible to get people to play it. I got one of my friend to and they loved it as well. It's some of the best storytelling and presentation in all of gaming imo
September 29, 2025 at 6:48 AM
...which the editor can show within the material inspector, can be saved, and modified across materials. The new system is much more robust and easy to use. It took a while but I'm sure I'll be glad I have it in the long run! I hope to extract this system into its own open source library later on.
June 27, 2025 at 12:19 AM
...rather than just shader code. Blending state, depth handling, culling, etc. These are defined in the same file as the rest of the shader so a technical artist can easily see all related aspects of a shader program at once. Finally, a shader provides several material resources and parameters...
June 27, 2025 at 12:19 AM
In addition, shader composition is hard. Include files are useful but can be complex. That's why I introduced a shaderblock system where you can include specific snippets that will not be duplicated, but can be used across many different shaders. Next, a shader program requires additional info
June 27, 2025 at 12:19 AM
Although initially it seems most of these shaders can be defined as a single common shader, that ignores cutoff/alpha tested shaders like leaves or fence wires, and ignores vertex displacement on shrubs that move in the wind. This is what the new system supports in the form of passes.
June 27, 2025 at 12:19 AM
So I'm super excited it'll be done soon. I'll be able to build post-processing shaders much easier, and support custom effects per shader for things I couldn't before (shadows, outlines, mouse picking etc).

I'm hoping to merge this branch within a week or two!
June 4, 2025 at 10:17 PM
This lets me build a system that can support multiple shader pipelines for a single material (ie: outline, custom shadows, transparent pass, and more), with different configurations (ie for different gpu capabilities), and hot reload any PipelineSet (as I call these files) easily.
June 4, 2025 at 10:17 PM