Demo & Runtime Guide

Chain environment profiles to animate terrain, scatter and lighting, then connect surface information to your own gameplay.

On a small screen, scroll wide tables sideways to read every column.

The demo components let you inspect terrain, chain live environment transitions, control biome and scatter responses, and test which biome a physics raycast reports. They are examples you can learn from and adapt; they do not provide a complete character controller, physical weather simulation or footstep audio system.

You do not need to write code to try the demo. The integration example later in this page is for developers who want to use surface information in their own gameplay.

Try the demo and identify its parts

  1. Open Assets/DPTGames/Vertex_3D_Terrain/Vertex3DTerrain_Demo/VertexTerrain_DemoScene.unity.
  2. Inspect the terrain material and Ground Library. Assign that material to the Dynamic Biome Demo Controller and optionally assign a directional Sun light.
  3. Set up the first appearance in the terrain material Inspector. Click + Capture Current Settings as NEW Profile on the demo controller. Name the profile, for example Spring.
  4. Change the actual material settings to create the next appearance. Capture again and name the new profile Summer. Continue for Autumn, Winter or other appearances.
  5. To revisit a saved appearance, click Apply Profile To Material on its profile. This loads the stored settings into the actual shared material for further editing. If you want to keep the edits, click Capture Profile From Material afterward.
  6. Set Transition Seconds, Easing and Channels to Animate on each profile, including the first. Choose its biome slots, lighting and optional Wind. Click that profile’s Animate To Profile to reach it and stay there.
  7. To test an entire sequence, capture at least two profiles and click Run Sequence From Start. Both playback methods work in Edit Mode and Play mode. Use Pause, Resume and Stop & Restore. Edit Mode scrubbing applies to the full sequence.
  8. Optionally enable Play On Start to run the sequence automatically when entering Play mode. Use the demo camera to explore the results.
  9. Use Surface Raycast Tester to inspect the biome IDs returned for painted surfaces.
Component / assetIts jobNeeded for your own game?
Dynamic Biome Demo ControllerCaptures material and Sun snapshots, then blends dynamic biome, scatter and optional lighting settings between Environment Profiles.Optional. Use the example timeline or integrate your own gameplay logic.
Surface Raycast TesterDisplays a physics hit and the biome returned for it.Optional debugging tool. Your gameplay can call the same surface-query API directly.
Terrain Demo CameraProvides free camera movement for inspection.Optional. Replace it with your own player/camera system.
Terrain Surface DataBaked triangle-to-biome information.Required for the supplied triangle-based biome query.
Terrain Surface TargetLinks a renderer to baked data and evaluates surface queries.Use on terrain that should support the supplied surface query.

Dynamic Biome Demo Controller

Click Open Documentation at the top of the component Inspector, or the component header’s Help icon, to open this online guide: Demo & Runtime Guide.

Add DPT → Dynamic Biome Demo Controller to a GameObject. Assign Terrain Material or place the component on a GameObject with a Renderer so it can resolve that Renderer’s shared material. Assign Sun if you want to blend a directional light’s rotation, intensity and colour.

The material Inspector is the authoring interface. Set your dynamic biome slots, target IDs, dusting, scatter density and colour, surface overrides and flow settings there. The demo controller deliberately does not duplicate those controls. It reads and stores material values only when you click a capture button.

All terrain objects using the same material receive the same changes. This is useful when several neighbouring tiles need to change together. Use separate materials if you need independent behaviour.

Single-script component: The custom Inspector and its capture buttons are included in DPT_DynamicBiomeDemoController.cs inside an Editor-only conditional. No second Editor script is required. If you previously installed DPT_DynamicBiomeDemoControllerEditor.cs, remove that old file to avoid duplicate Inspector classes.

Inspector sections

SectionPurpose
Open DocumentationOpens this online guide. Unity’s component Help icon also links here.
Target SetupAssign Terrain Material and optional Sun.
Test Environment SequenceUse Run Sequence From Start, Pause, Resume and Stop & Restore to test changes without automatic playback.
Environment ProfilesCapture independent snapshots, choose their transition time, easing and affected channels, then use Animate To Profile to reach and hold one state. Apply Profile To Material remains available for an instant full-snapshot edit. Profiles can also be recaptured, reordered or removed.
PlaybackConfigure Play On Start, Loop, optional Loop Return Seconds and Playback Speed.
Edit Mode PreviewEnable Preview In Edit Mode and scrub with Preview Normalized. Use Stop Preview & Restore Material when finished.

What the profile stores

Each profile captures an independent copy of all four modifier slots, including active states, biome IDs, weight, smoothness, normals, parallax, emission, flow, dusting and scatter response. It also captures supported stylized lighting values, the assigned Sun’s rotation, intensity and colour, and the terrain material’s Wind enabled state, strength, direction and Height To Tip.

A profile does not keep a link to the material’s live values. Changing the material to create Winter does not change a previously captured Autumn snapshot. To change an existing snapshot, capture again using that profile’s own button.

Apply Profile To Material instantly loads the entire captured snapshot into the shared material and optional Sun, regardless of Channels to Animate. Use it in Edit Mode, with playback and preview stopped, to return quickly to a saved appearance and edit it. It supports Unity Undo and does not change the saved profile.

Animate To Profile instead blends from the current appearance, changes only the destination profile’s checked channels and holds the result. It works in Edit Mode, Play mode and while another profile transition is running.

See Terrain Material Settings for the shader settings themselves and 3D Scatter Guide for how a biome’s scatter-response settings affect instanced vegetation.

Environment Profiles & Timeline

Use Environment Profiles for seasons, droughts, flooding and temperature shifts. Run Sequence From Start uses the first profile’s checked channels as its starting appearance, then moves through the later profiles. Animate To Profile requests any captured profile directly, including the first.

Profile 1 has the same controls as every other profile: Transition Seconds, Easing, Slot 1–4, Stylized Lighting, Directional Light and Wind. Unchecked channels retain their current settings. A newly captured first profile selects all channels by default; later captures detect changes from the previous resolved state. Existing checkbox selections are preserved.

Capture a sequence

  1. Spring: configure the material and optional Sun, then click + Capture Current Settings as NEW Profile. Rename the new profile Spring. This defines the beginning of the timeline.
  2. Summer: edit the material and light to show summer, then click the same button again. Name this profile Summer and set Transition Seconds to the desired duration.
  3. Autumn: adjust dusting, scatter and lighting as required, then capture a third profile and name it Autumn.
  4. Winter: finish configuring snow dusting, reduced vegetation and colder lighting. Capture another profile and set its transition duration.
  5. After the first profile, captures automatically check the biome, lighting and wind channels that differ from the previous resolved state. Adjust Channels to Animate manually on any profile, including the first. Unchecked channels keep their current values.
  6. Preview the full sequence with Preview In Edit Mode and Preview Normalized, then use Stop Preview & Restore Material. With Loop enabled, the final state returns through the first profile’s checked channels. Unchecked channels remain unchanged.

Editing an existing profile: click Apply Profile To Material on the profile you want to edit, change the material or Sun, then click Capture Profile From Material and confirm. Only the selected snapshot is overwritten. Stop any preview or playback before applying or capturing.

Controls

Setting / buttonBehaviour
+ Capture Current Settings as NEW ProfileAppends a new, independent snapshot of the assigned material and Sun, without changing any earlier profiles.
Capture Profile From Material / Capture Current Settings into ProfileCopies the current material and Sun into the selected profile. Replacing an already captured profile asks for confirmation.
Apply Profile To MaterialImmediately loads all stored biome slots, the live-biome master setting, lighting values and any captured wind into the shared material and optional Sun. It ignores Channels to Animate and leaves the saved snapshot unchanged. Stylized lighting values are restored without changing that shader feature’s enabled state. Available in Edit Mode with playback, holding sessions and preview stopped.
Animate To ProfileBlends from the current appearance using this profile’s checked channels, duration and easing, then holds it until another request. Works with a single captured profile and on the first profile too. Can interrupt an existing transition.
NameDescriptive label such as Spring, Winter, Drought or Flooding.
Transition SecondsIncoming duration when this profile is requested, including profile 1. Zero applies immediately and holds. Run Sequence starts at profile 1 without an incoming transition; its closing transition uses Loop Return Seconds.
EasingAnimationCurve controlling the speed through a transition.
Channels to AnimateSelect Slot 1–4, Stylized Lighting, Directional Light and Wind independently on every profile, including the first. The selection applies to direct profile requests and sequence playback. Unchecked channels retain their current values. Apply Profile To Material loads the full snapshot instead.
Run Sequence From Start / Pause / ResumeRun Sequence tests the full sequence. Pause and Resume control either a sequence or an unfinished profile request. Resume does not restart a completed profile that is already holding.
Stop & RestoreStops playback, profile holding or scrubbing and restores the material, Sun and wind as they were when the session began. After several profile requests, restoration still returns to the original pre-session state. Disabling or removing the component also restores that state.
Play On StartOptional automatic playback on entering Play mode when two or more complete snapshots exist. Off by default for newly added controllers.
Loop / Loop Return SecondsControls the full sequence’s closing transition into the first profile’s checked channels. It does not affect Animate To Profile, which holds its destination and waits for another request.
Playback SpeedTime-progression multiplier for sequences and direct profile requests. 1 is normal speed; 0 stops time progression.
Preview In Edit Mode / Preview NormalizedScrubs the full sequence in Edit Mode, including its return transition when Loop is enabled. Disabled during a direct profile request or holding session; use Stop & Restore first.
Stop Preview & Restore MaterialRestores the material and light settings captured when the preview session began. Required before editing the source material or capturing another profile.

Animate to one profile and hold it

  1. Capture the appearance you want. One captured profile is enough for a direct request.
  2. Choose the destination profile’s Transition Seconds, Easing and checked channels. The first profile has these controls too.
  3. Click its Animate To Profile button. Completion shows Holding: profile name in the progress bar.
  4. When another state is needed, request that profile. If a transition is still running, the new request starts from the current blended appearance without jumping back to its original start.

The destination stays active until another request, Stop & Restore, a sequence restart or component cleanup. Loop never advances a direct request automatically. Pause holds an unfinished transition; Resume continues it. A completed holding state has nothing left to resume.

Instant swap or animated swap: use Apply Profile To Material in Edit Mode to load the complete snapshot immediately for editing. To switch selected channels immediately during gameplay, set the destination’s Transition Seconds to 0 and call Animate To Profile.

Edit Mode requests and holding sessions use temporary shared-material values. Stop and restore before editing, capturing or saving source material settings. Run Sequence From Start is still available to test the full sequence.

Wind in environment profiles

Author Enable Wind, Wind Strength, Wind Direction and Height To Tip in the terrain material Inspector, then capture the profile. Check its Wind channel to animate these settings. An unchecked Wind channel leaves the current wind unchanged.

Turning wind off fades strength toward zero before disabling its shader feature at the destination. Turning it on fades from zero toward the captured strength. Direction and Height To Tip also blend. Unlike stylized lighting, this selected channel can change wind’s enabled state.

Older profiles without captured wind data leave wind alone, even if their Wind checkbox is selected. To add wind settings, stop and restore, apply the old profile, configure wind on the material, then recapture it. Scatter groups also need their own Enable Wind selection and a compatible material; capturing global wind does not change per-group wind selections.

Request profiles from code or UnityEvents

Call AnimateToProfile(string profileName) by name or AnimateToProfile(int profileIndex) by list position. Indices start at 0, so controller.AnimateToProfile(0) requests the first profile. Names are case-insensitive; duplicate names select the first match, so use unique names. Invalid or uncaptured requests warn and leave the current transition unchanged.

Save this example as EnvironmentProfileRequests.cs, add it to a GameObject and assign the Demo Controller reference. Prepare captured profiles named Winter and Summer, then call the appropriate request from your game logic or UI.

using UnityEngine;
using DPT.Vertex3DTerrain.Demo;

public class EnvironmentProfileRequests : MonoBehaviour
{
    [SerializeField] private DPT_DynamicBiomeDemoController controller;

    public void RequestWinter()
    {
        if (controller != null)
            controller.AnimateToProfile("Winter");
    }

    public void RequestSummer()
    {
        if (controller != null)
            controller.AnimateToProfile("Summer");
    }
}

Connect a UnityEvent without a wrapper script

  1. Add an event entry, such as a UI Button’s On Click().
  2. Assign the GameObject containing the Dynamic Biome Demo Controller.
  3. Select its AnimateToProfile method accepting a string or integer.
  4. Enter the profile name, such as Winter, or its zero-based index. Invoking the event uses the same transition-and-hold behaviour as the Inspector button.

Read playback status

Public propertyMeaning
IsPlayingA sequence or requested transition is advancing.
IsProfileSessionA direct request session exists, including paused transitions and completed holding states.
HasPendingProfileTransitionThe requested transition has not finished. This can remain true while paused.
RequestedProfileIndexThe requested profile’s zero-based index.
ActiveProfileIndex-1 during a transition, then the held profile’s index after completion. Restoring clears it to -1.
CurrentTimeSeconds / CurrentPlaybackDurationElapsed timeline time and duration of the current request or sequence, in seconds. Playback Speed affects real elapsed time.

PlayFromStart() runs the full sequence. PauseTimeline(), ResumeTimeline() and StopAndRestore() control either playback method. SetTimelineNormalized(float) seeks a direct request from 0 to 1 while that session exists, or controls the sequence outside a direct session. ApplyProfileToMaterial(int) and CaptureCurrentMaterialIntoProfile(int) are Edit Mode authoring methods used with playback and preview stopped.

Lighting and transition limits

Profiles do not repaint terrain, change terrain geometry or seams, physically raise water or implement precipitation. Live weight changes act on existing painted biome contributions; snow dusting requires suitable biome IDs and existing painted dusting masks.

Stable scatter fades and editing visibility

Scatter placements are generated from painted biome coverage. Dynamic Weight Multiplier and Scatter Density thin a stable set of existing clumps at draw time. Reducing grass strength for mud, yellow grass or drought no longer rebuilds placement at every step. Returning to the original strength restores the same placements. Colour changes remain live too.

Strength is a fade control, capped at 1 for scatter. Strength 0 hides matching animated scatter; strength 0.5 retains roughly half; strength 1 or higher shows the configured painted amount. Values above 1 can still affect terrain shading, but do not increase scatter density. Increase the scatter group’s configured Density to author a denser maximum. Strength and Scatter Density Response multiply; overlapping slots combine their weight multipliers before the cap.

For crystals or other scatter that should ignore seasonal biome changes, enable that group’s Static Scatter beside Wind. Static groups ignore dynamic biome weight, scatter density and colour/surface overrides. Painting or sculpting still updates placement, and the shared instance limit still applies.

In Scatter Settings, Disable While Brushing hides scatter and pauses placement updates whenever any surface or geometry tool is selected, including between strokes. It returns when both selections are None or the terrain tool window closes. This option affects Edit Mode only. Update After Stroke separately keeps placement visible during a stroke and updates affected sources after release when hiding is off.

Surface Raycast Tester

A raycast asks Unity, “What collider is along this line?” The tester displays that hit and then asks the terrain’s surface target for a biome. These are separate steps: hitting a collider does not mean it has terrain surface data.

Set up a probe on your own terrain

  1. Finish a small painted test terrain and save its mesh.
  2. Give it a MeshCollider whose triangle layout matches the mesh you are baking.
  3. Use Bake Surface Data in the terrain tool.
  4. Check that DPT → Terrain Surface Target is on the appropriate terrain object, with the baked Surface Data asset assigned. It requires a Renderer.
  5. Create a separate empty object above the terrain and add DPT → Surface Raycast Tester.
  6. Choose Downward Probe, a sufficient Max Ray Distance and a layer mask that includes the terrain collider.
  7. Enable Scene Gizmos or Game HUD and check the hit object, triangle index, biome ID and name. Move the probe between two clearly different painted areas.
SettingMeaningCommon mistake
Downward ProbeCasts along world-down from the tester object.It does not automatically follow a planet’s gravity direction. Use a suitable forward/custom ray for that setup.
Transform ForwardCasts along the object’s local forward direction, +Z.The object may be pointing away from the terrain. Rotate it and inspect the gizmo line.
Mouse CursorCasts through the pointer using the main camera, with a Scene view camera fallback in the editor.Check that a suitable camera exists. If none is available, the tester falls back to a downward ray.
Max Ray Distance: 1–500The furthest distance the probe can hit.A short ray above a high terrain cannot reach it. Increasing distance will not fix an excluded layer.
Raycast LayersWhich collider layers can be hit.Another collider may intercept the ray. Use a terrain-only layer mask while debugging.
Override Surface DataReads a specific baked asset directly instead of resolving the hit object’s surface target.Leave empty for the normal target-based live query. An override uses static data and must match the hit mesh; assigning one asset for unrelated terrains gives misleading results.
Scene GizmosShows the probe and hit in Scene view.Also check Unity’s Scene view gizmo visibility.
Game HUDShows the hit result in Game view.It is a debug display, not a player interaction UI.
Log Clicks To ConsoleLogs the current hit when the left mouse button is pressed.A click reports the current probe result; it does not change a downward probe into a pointer ray.

Read the result

Hit Object is the collider that intercepted the ray. Triangle Index identifies the triangle used for the lookup. Biome ID and Name are the surface query result. Hit Point, Normal and Distance describe the physical intersection.

If a collider is hit but the biome is unknown, check for the surface target and its data. A box or sphere collider is not a replacement for a matching terrain MeshCollider in a triangle-based lookup. Do not treat a negative or otherwise invalid triangle index as a valid terrain query.

Terrain Demo Camera

Add DPT → Terrain Demo Camera to your inspection camera. It provides free movement and mouse look. It does not supply walking physics, collision avoidance, grounded movement or planet gravity.

InputAction
W / A / S / DMove forward, left, backward and right relative to the camera.
SpaceMove up in world space.
Ctrl or CMove down in world space.
Hold right mouse buttonLook around with the mouse.
Hold ShiftMultiply movement speed for faster travel.

Movement Speed sets the ordinary travel rate, Fast Multiplier sets the Shift boost, and Mouse Sensitivity changes the look response. The optional controls overlay is useful while learning. Use a slower speed when examining a small feature and a faster one when crossing a large terrain.

The camera can pass through the terrain because it is an inspection rig. Replace it with your own gameplay controller when testing whether a bridge, cave or staircase is traversable.

Use surface data in gameplay

The intended flow is: paint terrain → bake its surface data → link that data to the terrain → raycast the matching collider → read a biome ID → choose your gameplay response.

The baked asset records representative biome information per triangle, including candidate IDs and weights used for live reweighting. The surface target reads that information and the terrain material’s current modifiers. It returns one biome ID for a hit, rather than a full texture or a list of every visible surface.

A small integration example

Save the following as TerrainSurfaceProbe.cs and add it to an object above your test terrain. Set its terrain layer mask and distance. Use Read Surface from the component context menu to perform one query. The Console message is only an example; replace it with your own sound, particle or movement lookup when connecting gameplay.

using UnityEngine;
using DPT.Vertex3DTerrain;

public class TerrainSurfaceProbe : MonoBehaviour
{
    public LayerMask terrainLayers = ~0;
    public float distance = 2f;

    [ContextMenu("Read Surface")]
    public void ReadSurface()
    {
        if (!Physics.Raycast(transform.position, Vector3.down,
                out RaycastHit hit, distance, terrainLayers))
        {
            Debug.Log("No collider within the probe distance.");
            return;
        }

        if (hit.triangleIndex < 0)
        {
            Debug.Log("This collider has no usable terrain triangle index.");
            return;
        }

        if (DPT_TerrainSurfaceTarget.TryGetHitBiome(
                hit, out int biomeID, out string biomeName))
        {
            Debug.Log($"Surface: {biomeName} (ID {biomeID})");
            // Choose your project's response using biomeID.
        }
        else
        {
            Debug.Log("The hit has no linked terrain surface data.");
        }
    }
}

For footsteps, call your query at the time a footstep occurs, using the appropriate foot or character position. Map the returned ID to your own audio/effects table. Keep that table in step with library changes; biome names are helpful labels, but library IDs are the numeric values the query returns.

For a planet or custom gravity system, replace the example’s world-down direction with your game’s local gravity direction. The tool does not infer that direction for this script.

When to rebake

Ordinary supported live material multipliers can be evaluated without repainting or rebuilding the triangle data, because the target reads them at query time. They still operate on the baked candidates; they cannot recover newly painted information from a stale bake.

How closely does a query match the picture?

The supplied query is useful for choosing a representative terrain surface, but it is not a pixel-perfect sample of what the shader renders. Test it against your gameplay needs rather than promising that every edge or snow patch returns exactly what is visible beneath the cursor.

SituationWhat the query doesWhat this means for gameplay
Several biomes on one triangleReturns one representative ID. The static bake uses its coverage/priority rule; live reweighting chooses from stored candidate weights.A very small painted patch or a blend edge may not return a different ID at every point.
Height-blended shader detailDoes not reproduce every per-pixel height/detail blend.The visible mixture can differ locally from the triangle’s representative surface.
Live weight changesReweights baked candidate surfaces using material slot multipliers.It cannot choose a newly painted candidate absent from the bake.
DustingUses a simplified world-up slope/strength test. It does not include the shader’s painted dusting mask.It can report the overlay where the visible masked overlay is absent. Validate this before using it for snow-specific movement or footsteps.
Override Surface Data on the testerReads the baked asset directly.This bypasses the target’s live material evaluation. Clear the override to test the normal live path.
Different collider topologyThe hit triangle index refers to the collider, not necessarily the visible render mesh.The bake must match that collider’s triangle order. A simplified LOD2 collider cannot safely use an unrelated original-mesh mapping.

If your gameplay needs exact small patches, local gravity-aware snow or precise per-pixel coverage, build and validate an appropriate query for those rules. The supplied components are a starting point with the limits described above.

Runtime and demo problems

SymptomWhat to check
Capture buttons are missingCheck for C# compile errors and confirm only the single-file controller is installed. The buttons appear near the top of its custom Inspector. Delete the old separate Editor script.
The demo controller does nothingAssign Terrain Material and capture a profile, then use Animate To Profile for a direct request. For Run Sequence From Start, capture at least two profiles. Alternatively enable Play On Start or Edit Mode preview for the sequence. Check Playback Speed, the material’s live biome master switch and the destination’s checked channels.
Apply Profile To Material is disabledCapture the profile and use Stop & Restore to end preview, playback or a holding session. Apply is for instant full-snapshot material editing in Edit Mode. For a gameplay swap, use Animate To Profile; set Transition Seconds to 0 for an immediate selected-channel change.
I changed Winter and Autumn changed tooCaptured values are independent. Stop any active preview before adjusting the source material. Only pressing Autumn's Capture Profile From Material button can intentionally replace Autumn's saved values.
The profile captured the wrong settingsStop preview and Play mode before capture. Verify the assigned Terrain Material is the one you edited and that Sun is assigned if you want light settings captured.
A profile does not change its biomeCheck the saved profile's Slot 1–4 channel checkboxes, material modifier target IDs, active state, painted surface contribution and relevant dusting mask/slope threshold.
Snow appears but vegetation stays unchangedCheck the captured Scatter Density response and biome IDs, and confirm the scatter renderer uses the material updated by the controller. Groups with Static Scatter intentionally ignore seasonal biome changes. See the 3D Scatter Guide.
The stylized lighting profile has no effectEnable stylized lighting on the material before preview or playback and check that the relevant profile has Stylized Lighting selected. The controller does not toggle the shader keyword.
The sun does not rotate or darkenAssign the Sun Light and enable Directional Light on the affected profile. Capture a meaningfully different rotation, intensity or colour.
The profile jumps instead of blendingUse nonzero Transition Seconds and check the easing curve. Changes to biome IDs and some on/off modes are necessarily discrete.
The loop jumps to the beginningEnable Loop and set a nonzero Loop Return Seconds for the final-to-first blend. The first profile’s checked channels control that return. Loop applies to the full sequence; a direct Animate To Profile request holds its destination.
Preview settings disappear when stoppedThis is intentional. Stop and Restore puts the material and light back as they were before preview. To save a new appearance, edit the real material outside preview and capture it.
The probe reports a hit but no biomeCheck the collider's layer, surface target and assigned bake. Use a matching MeshCollider with a valid triangle index.
The wrong name or ID is reportedClear an inappropriate override, rebake current surface data, recheck library IDs and match collider topology.
The probe misses on a planetDownward Probe is world-down. Use Transform Forward or a ray based on the game's gravity.
Several terrains change togetherThe controller edits a shared material. Use independent materials when separate terrain behaviour is required.
The demo camera passes through a bridgeIt has no collision controller. Test traversal using your own gameplay character and the terrain collider.
Animate To Profile does not change anythingCheck the material reference, captured destination, checked channels, Dynamic Biomes master switch and Playback Speed. One captured profile is enough for a direct request; a full sequence needs at least two.
Resume is disabled after a profile swapHolding means the transition has finished. Request another profile to change appearance. Resume is for an unfinished paused transition.
Wind changes when entering Play modeThe Wind toggle now saves its shader keyword and matching material value together. Set wind on the material and save it. Check the requested profile’s Wind channel; older profiles without wind data preserve it until recaptured. Per-group Enable Wind is separate.
Cave crystals react to seasonsEnable Static Scatter on the crystal group and check profile slot targets. Overlapping slots targeting the same biome combine their modifiers.
Scatter remains hidden after releasing the brushWith Disable While Brushing enabled, selected tools keep it hidden between strokes. Set both surface and geometry selections to None or close the terrain tool window.
Strength above 1 does not make grass denserScatter strength is capped at 1. Increase the group’s configured Density for a denser maximum, then fade that amount with strength or Scatter Density Response.

Support

If you need help, describe the result you expected, the control you used, and what appeared instead. Include your Unity version, the selected surface pipeline, and a screenshot of the relevant settings. For a runtime query problem, also include the collider type and when you last baked surface data.

Use the DPT Games contact form or join the DPT Games Discord.

Back to top