Checks
Every scan checks each static and skeletal mesh against every enabled target. A finding has a rule id, a severity (Error, Warning or Info; Info findings are called Suggestions in the panel and the HTML report), a message and the targets it applies to. A finding without targets applies to every target.
Rules at a glance
Section titled “Rules at a glance”| Rule id | Name | Severity | Applies to |
|---|---|---|---|
OverBudget |
Over budget | Warning | Targets whose first rendered LOD has more triangles than their budget, unless No platform key applies |
NoLODs |
No LODs | Warning | Targets on which a mesh without LODs has more triangles than their LOD threshold |
NaniteFallback |
Nanite fallback | Warning for meshes without LODs, Info for meshes with LODs | Targets without Nanite |
NaniteMaterials |
Nanite fallback materials | Warning when a material section is missing, Info otherwise | Targets without Nanite, for static Nanite meshes with more than one material slot |
InvalidMinLOD |
Invalid Min LOD | Error | Targets with a platform key whose Min LOD is beyond the last LOD |
ScreenSizeOrder |
Screen size order | Warning | All targets |
WeakReduction |
Weak reduction | Info | All targets |
NoPlatformKey |
No platform key | Info | Targets without a platform key that start over their budget although a lighter LOD fits |
The rule id appears in the JSON report and in Python (rule_id). The name appears in the panel, the HTML report, the commandlet output and Data Validation messages.
Each rule reports at most one finding per mesh. Rules that depend on the target list every target they apply to in one finding. Meshes without render data are not checked.
Change what is reported
Section titled “Change what is reported”The checks have no on/off switches; they follow your targets:
- Change a target’s Max Triangles or Require LODs Above (Max Skeletal Triangles or Require Skeletal LODs Above for skeletal meshes), or turn the target off, in Project Settings > Plugins > ta LOD Tailor > Targets. See Targets and readiness.
- Change Weak Reduction Ratio under Checks for the Weak reduction rule.
- Raise Min Validation Severity to keep warnings or suggestions out of Data Validation. See Data Validation.
- Use
-FailOnto decide which severities fail the commandlet.
Numbers in the messages use English formatting: 57,120, and 1.2M for a million triangles or more.
The rules
Section titled “The rules”Over budget
Section titled “Over budget”For every target that doesn’t render the mesh with Nanite, LOD Tailor takes the triangles of the first LOD the target renders: the LOD at the mesh’s Min LOD for the target’s platform key (see What a target renders). For a Nanite mesh on a target without Nanite, LOD 0 is the fallback mesh. If those triangles are more than the target’s Max Triangles, the mesh is over budget on that target. Skeletal meshes are compared with Max Skeletal Triangles, and their message says so.
A target without a platform key and with Min LOD -1 is the exception: when a lighter LOD of the mesh fits its budget, it gets the No platform key suggestion instead, because a batch run can’t make that target start at the lighter LOD.
Over the triangle budget: <target> <triangles> / <budget>, <target> <triangles> / <budget>.Over the skeletal mesh triangle budget: <target> <triangles> / <budget>.Example:
Over the triangle budget: Meta Quest 57,120 / 20,000.Fix: build a LOD chain with Per-platform Min LOD on the Batch LODs page, so the target starts at the first LOD within its budget.
No LODs
Section titled “No LODs”Reports meshes that have a single LOD and more triangles than a target’s Require LODs Above (Require Skeletal LODs Above for skeletal meshes): the full mesh is drawn at every distance there. Nanite meshes get the Nanite fallback finding instead.
<triangles> triangles and no LODs, so the full mesh is drawn at every distance on <targets>.Examples:
57,120 triangles and no LODs, so the full mesh is drawn at every distance on PC, Steam Deck, Switch 2, Meta Quest.6,118 triangles and no LODs, so the full mesh is drawn at every distance on Switch 2, Meta Quest.With the default targets, a static mesh needs LODs above 20,000 triangles on PC, 5,000 on Steam Deck, 3,000 on Switch 2 and 1,000 on Meta Quest, and a skeletal mesh above 15,000, 8,000, 6,000 and 3,000.
Nanite fallback
Section titled “Nanite fallback”Reports Nanite meshes on every target without Nanite. There, Unreal draws the mesh’s fallback mesh as LOD 0 and then the mesh’s LODs, if it has any.
-
A Nanite mesh without LODs is a Warning: the fallback mesh is drawn at every distance.
Nanite mesh without LODs: on <targets> only the fallback mesh (<fallback triangles> of <full triangles> triangles) is drawn, at every distance.Nanite mesh without LODs: on Steam Deck, Switch 2, Meta Quest only the fallback mesh (16,529 of 159,200 triangles) is drawn, at every distance. -
A Nanite mesh with LODs is Info, so you know which targets don’t use Nanite for it.
Nanite mesh: on <targets> the fallback mesh (<fallback triangles> triangles) and <count> more LODs are drawn.Nanite mesh: on Steam Deck, Switch 2, Meta Quest the fallback mesh (3,213 triangles) and 2 more LODs are drawn.
Fix: run Batch LODs with Keep Nanite, add LODs or Turn Nanite off. See Nanite meshes and the mesh’s Nanite or LODs verdict.
Nanite fallback materials
Section titled “Nanite fallback materials”A static Nanite mesh with several material slots can lose small material sections on its fallback LODs, so targets without Nanite show wrong or missing materials. LOD Tailor compares the material slots that LOD 0, the fallback mesh, draws with the slots each further LOD draws. LODs whose sections LOD Tailor merged on purpose (Fewer draw calls) are not compared.
-
A slot that LOD 0 draws and a later LOD doesn’t is a Warning:
Material sections of the fallback mesh are missing on <LODs and slots>, so <targets> show wrong or missing materials there.Material sections of the fallback mesh are missing on LOD 1 (slot 1), so Steam Deck, Switch 2, Meta Quest show wrong or missing materials there. -
Otherwise the mesh gets an Info finding, so you check its materials on those targets:
Nanite mesh with <count> materials: <targets> draw its fallback mesh, where small material sections can disappear. Check its materials there.
Fix: rebuild the LODs with a larger triangle share, so small sections survive the reduction, or fix the materials of the LOD in the Static Mesh Editor or in its source file. See Material risk on the fallback.
Invalid Min LOD
Section titled “Invalid Min LOD”For every target with a platform key, LOD Tailor reads the mesh’s Min LOD for that key: the value for the key, then for its platform group, then the mesh’s default Min LOD. If it is the number of LODs or more, it points at a LOD the mesh doesn’t have, for example after LODs were removed. This is the only rule that reports Errors. Targets without a platform key are not checked.
Min LOD <highest value> is set for <targets>, but the mesh has only <count> LODs.Example:
Min LOD 3 is set for Steam Deck, Meta Quest, but the mesh has only 2 LODs.Fix: a batch run with Per-platform Min LOD writes a valid value for every target with a key; or change the Min LOD in the mesh’s LOD settings in the Static Mesh Editor or the Skeletal Mesh Editor.
Screen size order
Section titled “Screen size order”Screen sizes must get smaller from LOD to LOD. For meshes with more than one LOD and screen sizes set by hand (not computed by Unreal; skeletal meshes always have screen sizes set by hand), LOD Tailor compares the default screen size of every LOD from LOD 2 on with the LOD before it. The first LOD whose screen size is not smaller is reported, and the LOD before it is never shown.
LOD <n> has a screen size of <value>, not smaller than LOD <n − 1> (<value>), so LOD <n − 1> is never shown.Example:
LOD 2 has a screen size of 0.3, not smaller than LOD 1 (0.25), so LOD 1 is never shown.Screen sizes are shown with up to three decimals. Per-platform screen sizes are not checked. The finding applies to every target.
Fix: a batch run with Screen sizes from the distances writes screen sizes in the right order.
Weak reduction
Section titled “Weak reduction”A LOD that keeps almost all triangles of the LOD before it costs memory without saving much rendering time. LOD Tailor compares every LOD from LOD 1 on with the LOD before it and reports the first LOD that keeps more than Weak Reduction Ratio (default 0.85, 85 %) of its triangles. LODs after a LOD with 64 triangles or fewer are not checked.
LOD <n> keeps <triangles> of the <triangles> triangles of LOD <n − 1>.Example:
LOD 1 keeps 8,572 of the 9,024 triangles of LOD 0.This is a suggestion (Info): it doesn’t lower readiness. The finding applies to every target.
No platform key
Section titled “No platform key”A target without a platform key starts every mesh at the mesh’s default Min LOD, because no per-platform value can be written for it. When its Min LOD is -1 (the first LOD within the budget) and the mesh starts there with more triangles than the target’s budget although a later LOD fits, LOD Tailor reports this suggestion instead of Over budget. Switch 2 has no platform key by default.
Starts at LOD <default Min LOD>: <target> <triangles> / <budget> (LOD <n> fits). Without a platform key the target uses the default Min LOD, so a batch run cannot start it at a lighter LOD; give the target its platform key in the ta LOD Tailor settings.LOD <n> fits names the first LOD after the default Min LOD within the budget. Several targets are listed one after the other, separated by commas. Example:
Starts at LOD 0: Switch 2 155,864 / 60,000 (LOD 2 fits). Without a platform key the target uses the default Min LOD, so a batch run cannot start it at a lighter LOD; give the target its platform key in the ta LOD Tailor settings.This is a suggestion (Info): it doesn’t lower readiness, and the mesh doesn’t count as over budget on that target in the Over budget tile, the Over budget filter or the HTML report.
Fix: give the target its platform key in Project Settings > Plugins > ta LOD Tailor > Targets (for Switch 2, the key needs the console’s platform SDK in your engine), then run Batch LODs with Per-platform Min LOD. See Notes on the default targets.
Data Validation
Section titled “Data Validation”LOD Tailor registers a validator with Unreal’s Data Validation plugin, which is enabled automatically with LOD Tailor. With the integration on, the checks run wherever Unreal runs Data Validation:
- Validate Assets on assets or folders in the Content Browser,
- validate on save, if it is enabled in your project’s Data Validation settings,
- changelist validation before you submit to source control.
Settings
Section titled “Settings”Both settings are in Project Settings > Plugins > ta LOD Tailor > Checks:
| Setting | Default | Meaning |
|---|---|---|
| Run During Data Validation | Enabled | Runs the checks as part of Data Validation. |
| Min Validation Severity | Warning | Findings below this severity are not reported. With the default, suggestions are left out; set it to Info to see them too, or to Error to see only errors. |
Which assets are validated
Section titled “Which assets are validated”A mesh is validated by LOD Tailor when all of these are true:
- Run During Data Validation is enabled.
- The asset is a static or skeletal mesh and is loaded. Data Validation passes loaded assets to validators.
- The mesh’s folder is inside one of the Included Paths and not inside an Excluded Paths folder. World Partition
__ExternalActors__and__ExternalObjects__folders are always skipped.
All eight rules run, on every enabled target.
Messages and severities
Section titled “Messages and severities”Every finding at or above Min Validation Severity becomes one Data Validation message:
[ta LOD Tailor] <Rule name>: <Message>For example:
[ta LOD Tailor] Over budget: Over the triangle budget: Meta Quest 57,120 / 20,000.| LOD Tailor severity | Data Validation message | Validation result |
|---|---|---|
| Error | Error | The mesh fails validation |
| Warning | Warning | The mesh passes, with a warning |
| Info | Info | The mesh passes |
On Unreal Engine 5.3 and older, Data Validation has errors and warnings only, so suggestions are not reported there even with Min Validation Severity set to Info.