Protostar
Wire up a node graph, watch it render live in a small voxel world, and export the shaders and material JSON your mod needs.

Wire a graph
Start from a preset or blank. Right-click to add nodes; drop a wire on empty space to add one already connected.
Watch it live
Compiled by a real OpenGL driver and drawn with the game's uniform blocks, blend and depth — in a Studio or a voxel world with a day and night cycle.
Export
One click writes the .vsh, .fsh, material JSON and textures straight into your mod's resources.
Built in Protostar, rendered in the preview.






Hand-write code where a graph gets awkward.
The Custom GLSL node opens a coloured editor with the compiler’s errors beside your code. Engine names like iTime and ScreenSize are set up as soon as you use them.

See what every node costs.
View → Performance shows the effect’s GPU time live. Measure nodes puts a cost badge on each one and a sorted list beside them.

And the rest of the toolkit.
Layered outputs
Fragment, Sky and Post outputs — one project holds every layer of an effect.
Vertex Offset
Wire into the pin and it runs in the vertex shader, moving the mesh.
Meshes
Quad, box, sphere, cube sphere, cylinder, cone, torus, disc, or your own OBJ.
Planets
Terrain, atmosphere and sun light on mesh-space position. No seams at the poles.
Animation
12 easing curves and keyframe tracks, baked in so the game plays what you previewed.
Parameters
One std140 uniform block with a matching Java record for your mod.
Viewport handles
Move, rotate, scale and place the effect; drag the sun to set the time of day.
Tidy graphs
Groups, reroutes, Arrange Nodes and three wire styles.
Nodes of your own.
Every .glsl file in the custom nodes folder becomes a node. Comments at the top describe its pins.
Projects store the graph, never the GLSL — when the engine changes, open the project and export again.
// @node Stripes // @category Pattern // @doc Diagonal stripes, 1 on a stripe and 0 between them. // @input vec2 uv = uv // @input float count = 8.0 // @output float mask float stripes(vec2 uv, float count) { return step(0.5, fract((uv.x + uv.y) * count)); }
Get Protostar
Beta 0.2.1 for Windows, macOS and Linux. It's a beta, so expect bugs. Requires the Nebulon rendering mod.