MaterialParameters.withLayout constructor

  1. @visibleForTesting
MaterialParameters.withLayout({
  1. required String blockName,
  2. required int blockSizeBytes,
  3. required Map<String, ({int offset, bool sourceColor, FmatType type})> parameters,
  4. Map<String, FmatHintKind?> samplers = const {},
})

Builds parameters from an explicit layout, without shader reflection. Primarily for tests and advanced callers.

Implementation

@visibleForTesting
factory MaterialParameters.withLayout({
  required String blockName,
  required int blockSizeBytes,
  required Map<String, ({FmatType type, int offset, bool sourceColor})>
  parameters,
  Map<String, FmatHintKind?> samplers = const {},
}) {
  final layout = {
    for (final e in parameters.entries)
      e.key: _ParamSlot(
        e.value.type,
        e.value.offset,
        sourceColor: e.value.sourceColor,
      ),
  };
  final samplerSlots = {
    for (final e in samplers.entries) e.key: _SamplerSlot(e.value),
  };
  return MaterialParameters._(
    blockName,
    ByteData(blockSizeBytes),
    layout,
    samplerSlots,
  );
}