updateFromMetadata method
Re-reads the render state and parameters from a regenerated fragmentShader
and sidecar metadata (a hot-reloaded .fmat), in place.
Updates culling, blending, shading model, and the parameter layout without replacing the material instance, so every primitive already using it picks up the change. Explicitly-set parameter values are preserved; see MaterialParameters.updateFromMetadata.
Implementation
@override
void updateFromMetadata(
gpu.Shader fragmentShader,
Map<String, Object?> metadata,
) {
_shadingModel = _parseShadingModel(metadata['shading_model']);
_blending = _parseBlending(metadata['blending']);
_culling = _parseCulling(metadata['culling']);
setFragmentShader(fragmentShader);
parameters.updateFromMetadata(fragmentShader, metadata);
}