public record class TerrainNodeAssetThe terrain node a frame document names: the ground and its vegetation, as one pass.
Remarks
One node for the whole stack, deliberately. The surface, the grass scatter and the grass draw are one decision about where in the frame the ground goes — after the opaque pass, sharing its depth — and a document that could place the scatter without the draw would be offering an order nothing can want. What it draws is the world's TerrainComponent entities, not a terrain named here: which ground exists is the scene's, and the document only says where in the frame it lands.
The defaults are !StandardFrame's names, so the whole installation in a standard frame is three lines of extensions: — afterOpaque: [!Terrain {}] — and a hand-authored document names its own targets instead.
⚠ The nullable scalars are the quality waterfall's seam. Null means "whatever the factory was configured with", which is where a host folds its resolved quality tier; a written value is this document deciding, which out-votes the tier the way a !StandardFrame's own knobs do. See Vegetation.
Fields and properties (19)
public string NameThe node's name, for debug groups and for a human reading the file.
public bool EnabledWhether the node runs.
public string OutputThe colour target the ground draws into — an existing one, loaded rather than cleared.
public string DepthThe depth target it tests and writes — the scene's own, so occlusion works both ways.
public string ViewThe view whose camera places, culls and streams the ground.
public string AlbedoThe frame's split albedo plane. Its presence is what turns the split path on.
public string NormalsAnd its normal plane, on the same terms.
public string ShadowAtlasThe cascade atlas the frame renders, which the lit ground samples.
public string ScenePassWhich pass's names the frame's lighting is published under.
public bool GrassWhether grass fields scatter and draw at all.
public float? GrassDensityScaleWhat fraction of each grass field to keep, 0…1, or null for the factory's tier.
public float? GrassCullDistanceScaleA multiplier over every grass type's authored cull distances, or null for the tier.
public int? GrassResidentCellsHow many grass cells stay resident per field, or null for the tier.
public int? GrassBladesPerCellHow many blades one cell's run holds, or null for the tier.
public float? TerrainNearRangeHow far level 0 reaches for a terrain whose component left it at zero, or null for the tier.
public float? FoliageDensityScaleWhat fraction of each foliage volume to draw, 0…1, or null for the factory's tier.
public float? FoliageCullDistanceScaleA multiplier over every foliage type's authored cull distances, or null for the tier.
public int? FoliageCellBudgetHow many foliage cells one volume's streamer keeps uploaded, or null for the tier.
public int? TerrainStreamingMegabytesMegabytes of staged tile chains a terrain's streamer may hold, or null for the tier.
Used by (6)
- TerrainCasterTestsVixen.Rendering.Terrain.Tests
- TerrainFactoryVixen.Rendering.Terrain
- TerrainNodeTestsVixen.Rendering.Terrain.Tests
- TerrainVelocityTestsVixen.Rendering.Terrain.Tests
- TypeRegistrationVixen.Rendering.Terrain
- Vixen_Rendering_Terrain_TerrainNodeAssetSerializerVixen.Rendering.Terrain