Vixen
dd8b0a81
csharp
public enum MaterialMapTarget

One file a bake writes, which is not the same list as MaterialMapUsage.

Read the guide page for this →

Remarks

⚠ Two of these bind to no material feature, and saying so is the point of the type. Mask is not a material map at all: § 4.10's mask sources read it, and a material never does. Parameter returns null for both, and a bake writes them without inventing a feature to hang them on.

⚠ Height is the one worth a sentence, because the reason changed and the conclusion did not. #615 is closed, and it resolved to height-blended layering — so a textured runtime feature that reads a height map now exists, TexturedMaterialLayersFeature.HeightMap under its HeightBlended permutation. It is not this map. That one is a four-channel per-layer bundle whose channel i is layer i's height; a bake writes one material's single channel. Two different textures with one English name, which is exactly #615's finding one level along — and wiring a bake's output into that slot is the mistake this paragraph exists to prevent.

⚠ #1065 has since landed and Parameter still returns null here, which is a decision rather than an oversight. ParallaxOcclusionFeature reads exactly this map, but a name returned unconditionally means one of two wrong things: a texture entry no feature samples, or — if the bake composed the feature to go with it — a per-pixel march on every material any graph ever emitted a height output from. So the name is Material's to supply, and only for a material whose author put the feature there. See #1103. ⚠ #1067 is not a third reading still waiting for one: it was closed on 2026-09-08 by deciding it — true displacement moves vertices on a pre-subdivided mesh and is therefore not a material feature at all.

⚠ Splat is a file this vocabulary writes and not one any MaterialMapUsage feeds, which is #1118's answer kept rather than reversed. TexturedMaterialLayersFeature's splat map is a multi-channel weight map whose channel i is layer i — an index into one material's own layer list. Every other target is a measurement of a surface, which is why a graph can produce one: albedo, roughness and occlusion mean the same thing whatever material samples them. A layer index does not. A graph has no layer list, an Output node names a usage rather than an ordinal, and a texture set's channels are keyed by that usage — so "which layer is this the weight of" is a question the whole authoring vocabulary is shaped not to be able to ask.

So Packed returns nothing for it, which is that decision written as code rather than as a paragraph. Encode keeps a target only when one of the usages it packs was produced, so a graph bake can never write a splat map however many Output nodes it has — and adding a MaterialMapUsage that fed one would still have to name a layer ordinal, which is the thing the vocabulary cannot say.

⚠ What fills it is the layer stack, where the layer list actually exists — #1124's Bake Splat Map verb, which resolves each chosen layer's painted coverage and packs them in layer order. That is a second write path deliberately, and it is a member of this enum rather than a vocabulary of its own so that it inherits the file naming, the digest, the painted-over guard and the provenance block ProjectMaterialBaker already has — which is exactly what a second write path forgets.

Fields and properties (8)

  • BaseColor

    The albedo map.

  • Normal

    The tangent-space normal map.

  • Orm

    Occlusion, roughness and metalness in R, G and B.

  • Height

    The height map. Written always, and sampled only where the author asked.

  • Emissive

    The emissive map.

  • Opacity

    The opacity mask.

  • Mask

    A mask for another graph. Written, and bound to nothing.

  • Splat

    A layered material's per-layer weights, one layer per channel in layer order.

Used by (13)

  • BakedMaterialImageTestsVixen.Graphics.Golden.Tests
  • BakedMaterialFileTestsVixen.Editor.AssetEditors.Tests
  • MaterialBakeVixen.Editor.Assets
  • MaterialBakeAssetTestsVixen.Editor.Assets.Tests
  • MaterialBakeParallaxVixen.Editor.Assets
  • MaterialBakeSetVixen.Editor.Assets
  • MaterialBakeTestsVixen.Editor.Assets.Tests
  • MaterialMapImageVixen.Editor.Assets
  • MaterialMapNamingVixen.Editor.Assets
  • MaterialProvenanceVixen.Editor.Assets
  • MaterialSplatTestsVixen.Editor.Assets.Tests
  • ProjectMaterialBakerVixen.Editor.Assets
  • TextureCommandTestsVixen.Cli.Tests