Skip to main content

Editor & Inspector Guide

The InfiniteCorrugatedRoof component groups its parameters into logical sections. Field names below match the public fields on the component, so they line up with the scripting API.

Panel layout & dimensions

Controls the size of the grid and how panels overlap.

FieldDescriptionDefault
columnCountNumber of panel columns across the roof (X axis)1
rowCountNumber of panel rows along the roof (Y axis)1
panelWidthWidth of a single panel, in meters1.0
panelLengthLength of a single panel, in meters2.0
verticalOverlapVertical overlap between stacked rows, in meters0.15
overlapDistanceTiny depth offset between overlapping layers to prevent Z-fighting0.001

Columns overlap by exactly one corrugation wave so adjacent panels always line up seamlessly; rows overlap by verticalOverlap, just like real corrugated sheets.

Wave configuration

FieldDescriptionDefault
waveProfileAnimationCurve describing the cross-section of one wave, sampled over 0–1trapezoid-like
wavesPerPanelNumber of corrugation waves across one panel's width9
corrugationAmplitudeHeight of the wave, in meters0.035

Any curve shape is supported — round, trapezoidal, asymmetric — as long as it has at least two keyframes. An invalid curve is reset to a safe default automatically.

Mesh settings

FieldDescriptionDefault
lengthSegmentsPerPanelSubdivisions along a panel's length (LOD0); lower LODs use fewer24
sheetThicknessSheet thickness, in meters; 0 = single-sided sheet0.001
Performance

Thickness doubles the vertex and triangle count (front + back faces). Keep it at 0 for distant or background roofs and only enable it where the edge profile is visible.

Modifiers & variations

Panel transform

Adds believable, non-uniform placement to individual panels.

FieldDescription
horizontalJitterMetersRandom horizontal offset per panel
verticalGapMetersRandom vertical gap between stacked panels
tiltDegrees / yawDegreesSmall random rotation per panel
lengthVarianceMetersRandom shortening of panel length (creates uneven row splits)

Surface noise

Perlin-based displacement that breaks up an overly-perfect surface.

FieldDescription
heightVertical displacement amount
warpHorizontal / depth displacement amount
scaleSize of the noise features — smaller = finer detail
detailBlend between a smooth and a rougher secondary noise octave

Cut settings

Trims the roof rectangle with an angled line at the start and/or end edge — useful for gables and sloped roof ends.

FieldDescription
modeHorizontal cuts the whole panel straight; Diagonal follows the angle per vertex
startAngleDegrees / endAngleDegreesCut angle at the start/end edge; the sign selects which side the cut pivots from

Texture mapping

ICR expects a texture atlas with 8 wear-level columns, each picturing 12 corrugation waves — so one material can represent everything from clean, new metal to heavily rusted sheets.

FieldDescription
panelColorsList of vertex colors, assignable per panel (tint applied in the shader)
verticalTilingRepeats the atlas vertically along the panel length
verticalOffsetShifts the V coordinate — useful to de-align tiling seams between rows
wearLevelSelects which of the 8 atlas columns (0–7) each panel uses
panelColorIndexSelects which color from panelColors each panel uses

Panel orientation (mirrored/flipped) is chosen per panel automatically to avoid a repetitive, tiled look.

Randomization & seed

wearLevel, verticalOffset and panelColorIndex are Dynamic Values: toggle Randomize on any of them to draw a value per panel from a min–max range instead of a fixed value.

All randomization — jitter, tilt and noise offsets included — is driven by randomSeed. The same seed always reproduces the exact same roof, so you can share a seed with a teammate or lock one in before a final build.


Next: Technical Reference