Class MaterialData

java.lang.Object
dev.engine.core.material.MaterialData
All Implemented Interfaces:
Component

public final class MaterialData extends Object implements Component
Immutable material data — a typed property map that is a component.

The shader always accesses material data through a generated Slang interface. The engine generates the appropriate implementation (UBO, SSBO, bindless) based on the upload strategy. Shader code never changes.

Render state overrides are stored in a nested PropertyMap<RenderState> under the RENDER_STATE key, keeping material and render state concerns separated.

var mat = MaterialData.create()
    .set(MaterialData.ALBEDO_COLOR, new Vec3(1, 0, 0))
    .set(MaterialData.ROUGHNESS, 0.5f)
    .withRenderState(RenderState.CULL_MODE, CullMode.FRONT);
entity.add(mat);