Skip to content

Material Editor

The Material Editor lets you tweak PBR material properties on any MeshNode or ModelNode sub-mesh and see a live preview without leaving the editor.


  1. Select a MeshNode or ModelNode in the Hierarchy.
  2. Go to Window → Material Editor (or the Material Editor tab in the main dock).
  3. The editor automatically tracks the selected node.

The editor is split into two panels:

Sub-mesh picker (top bar) — for ModelNode with multiple sub-meshes, select which material to edit.

PropertyDescription
Base ColorRGBA albedo. Alpha drives transparency in Blend/Mask mode.
Metallic0 = dielectric, 1 = metal.
Roughness0 = mirror-smooth, 1 = fully diffuse.
PropertyDescription
Emissive ColorRGB glow colour. Multiplied with emissive texture if present.
Emissive StrengthScalar multiplier (0–20).
PropertyDescription
Alpha ModeOpaque, Mask (alpha cut-out), or Blend (alpha blending).
Alpha CutoffThreshold for Mask mode (0–1).
PropertyDescription
LitToggle PBR lighting on/off for this material.
Double SidedDisables back-face culling.

Texture paths are relative to the project root. Click the button to open a file browser.

SlotDescription
AlbedosRGB base colour texture. Alpha channel used for transparency.
NormalTangent-space normal map (OpenGL convention, Y-up).
Metallic / RoughnessR = metallic, G = roughness (glTF packed format).
EmissivesRGB emissive colour texture.

After setting paths, click Reload Textures to apply them immediately.

A 48 × 48 CPU-rasterised sphere with:

  • GGX specular + Lambert diffuse (Cook-Torrance BRDF)
  • Fixed directional light from upper-left
  • ACES tone-mapping

The preview refreshes automatically whenever you change a material property. It does not require a running game session.


Material changes on MeshNode are stored directly in the .solscene file when you hit File → Save Scene (or Ctrl+S). No separate material file format is used.


You can also read and modify material properties from Lua:

local mesh = Scene.get_node("MyBox")
-- Read
local color = mesh:get_material_base_color() -- Vec4
-- Write
mesh:set_material_base_color(Vec4(1, 0, 0, 1)) -- red
mesh:set_material_metallic(0.8)
mesh:set_material_roughness(0.2)
mesh:set_material_emissive(Vec3(1, 0.5, 0))