Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Shaders:CustomUnitShadingFramework

From Fightorder
Revision as of 22:05, 23 February 2026 by Qrow (talk | contribs) (Created page with "The Custom Unit Shading Framework was developed by jK to facilitate the writing of custom unit & feature shaders in Lua for the SpringRTS engine.<br /> You can access its repository from here: https://github.com/jk3064/Custom-Unit-Shader-Framework <br /><br /> Writing new shaders requires the following two steps: * Creation of a new file in the ModelMaterials folder that defines the material. Here you should specify the following: ** material properties (camera usage, te...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The Custom Unit Shading Framework was developed by jK to facilitate the writing of custom unit & feature shaders in Lua for the SpringRTS engine.
You can access its repository from here: https://github.com/jk3064/Custom-Unit-Shader-Framework

Writing new shaders requires the following two steps:

  • Creation of a new file in the ModelMaterials folder that defines the material. Here you should specify the following:
    • material properties (camera usage, textures, culling, etc.)
    • whether it's a unit or feature shader (feature shaders have feature=true)
    • callins that can affect unit/feature rendering (such as UnitCreated, DrawUnit, as well as the feature equivalents)
    • the unit and feature defs which will be affected by the shader
  • Creation of a shader file in the ModelMaterials/Shaders. This file should contain the actual GLSL shader as well as the definition of the uniform values used within it.


For details refer to the existing unit & feature example shaders.

  • To test feature shaders do the following steps:
    • Open modinfo.lua and change modtype to 1 so it can be run directly
    • Start spring using Custom Unit Shaders as the game.
    • In the console, type /cheat and /give ad0_aleppo_X, where X is any number from 1 to 10, e.g. /give ad0_aleppo_5