SurfaceDebugChannel enum Rendering

A surface value the renderer can show in place of the lit result.

Every channel is display-referred: the resolve pass hands its pixels through untouched, so a scalar of 0.5 is mid gray on screen and a color channel is display-encoded in the shader. Scalars run through the DebugView range and gain, directions map through 0.5 * v + 0.5, and a channel a material does not carry draws a gray checkerboard.

Inheritance
Available extensions

Values

none → const SurfaceDebugChannel
const SurfaceDebugChannel(0, 'none', 'Off', SurfaceDebugGroup.none)
worldNormal → const SurfaceDebugChannel

The interpolated geometric normal, before any normal map.

const SurfaceDebugChannel(1, 'world_normal', 'World normal', SurfaceDebugGroup.geometry)
shadingNormal → const SurfaceDebugChannel

The shading normal after the normal map.

const SurfaceDebugChannel(2, 'shading_normal', 'Shading normal', SurfaceDebugGroup.geometry)
tangent → const SurfaceDebugChannel
const SurfaceDebugChannel(3, 'tangent', 'Tangent', SurfaceDebugGroup.geometry)
bitangent → const SurfaceDebugChannel
const SurfaceDebugChannel(4, 'bitangent', 'Bitangent', SurfaceDebugGroup.geometry)
tangentHandedness → const SurfaceDebugChannel

Black for a left-handed tangent frame, white for right-handed.

const SurfaceDebugChannel(5, 'tangent_handedness', 'Tangent handedness', SurfaceDebugGroup.geometry)
uv0 → const SurfaceDebugChannel
const SurfaceDebugChannel(6, 'uv0', 'UV 0', SurfaceDebugGroup.geometry)
uv1 → const SurfaceDebugChannel
const SurfaceDebugChannel(7, 'uv1', 'UV 1', SurfaceDebugGroup.geometry)
vertexColor → const SurfaceDebugChannel
const SurfaceDebugChannel(8, 'vertex_color', 'Vertex color', SurfaceDebugGroup.geometry)
viewDirection → const SurfaceDebugChannel
const SurfaceDebugChannel(9, 'view_direction', 'View direction', SurfaceDebugGroup.geometry)
worldPosition → const SurfaceDebugChannel

World position remapped through the range (default -10..10 per axis).

const SurfaceDebugChannel(10, 'world_position', 'World position', SurfaceDebugGroup.geometry, rangeMin: -10.0, rangeMax: 10.0)
faceOrientation → const SurfaceDebugChannel

Front faces blue, back faces red. A red face the camera should see is wound the wrong way.

const SurfaceDebugChannel(11, 'face_orientation', 'Face orientation', SurfaceDebugGroup.geometry)
uv0Checker → const SurfaceDebugChannel

A colored checker on the first UV set, out-of-range cells in red.

const SurfaceDebugChannel(12, 'uv0_checker', 'UV 0 checker', SurfaceDebugGroup.geometry)
uv1Checker → const SurfaceDebugChannel

The same checker on the second UV set (the lightmap set).

const SurfaceDebugChannel(13, 'uv1_checker', 'UV 1 checker', SurfaceDebugGroup.geometry)
depthGap → const SurfaceDebugChannel

The smallest gap two parallel surfaces need here to keep their depth order, as a power of ten in meters on a blue to red ramp (default range a hundredth of a millimeter to a meter): eight depth-buffer steps or a sixteenth of a pixel of the surface's own depth slope, whichever is larger. An overlay closer to its surface than this flickers (z-fighting) unless its Material.depthLayer is higher.

const SurfaceDebugChannel(14, 'depth_gap', 'Depth gap', SurfaceDebugGroup.geometry, rangeMin: -5.0, rangeMax: 0.0)
baseColor → const SurfaceDebugChannel
const SurfaceDebugChannel(20, 'base_color', 'Base color', SurfaceDebugGroup.surface)
alpha → const SurfaceDebugChannel
const SurfaceDebugChannel(21, 'alpha', 'Alpha', SurfaceDebugGroup.surface)
metallic → const SurfaceDebugChannel
const SurfaceDebugChannel(22, 'metallic', 'Metallic', SurfaceDebugGroup.surface)
roughness → const SurfaceDebugChannel
const SurfaceDebugChannel(23, 'roughness', 'Roughness', SurfaceDebugGroup.surface)
specular → const SurfaceDebugChannel
const SurfaceDebugChannel(24, 'specular', 'Specular', SurfaceDebugGroup.surface)
occlusion → const SurfaceDebugChannel
const SurfaceDebugChannel(25, 'occlusion', 'Occlusion', SurfaceDebugGroup.surface)
emissive → const SurfaceDebugChannel

Linear emissive radiance, display-encoded; raise the gain for dim emitters or lower it for bright ones.

const SurfaceDebugChannel(26, 'emissive', 'Emissive', SurfaceDebugGroup.surface)
clearcoat → const SurfaceDebugChannel
const SurfaceDebugChannel(40, 'clearcoat', 'Clearcoat', SurfaceDebugGroup.physical)
clearcoatRoughness → const SurfaceDebugChannel
const SurfaceDebugChannel(41, 'clearcoat_roughness', 'Clearcoat roughness', SurfaceDebugGroup.physical)
clearcoatNormal → const SurfaceDebugChannel
const SurfaceDebugChannel(42, 'clearcoat_normal', 'Clearcoat normal', SurfaceDebugGroup.physical)
sheenColor → const SurfaceDebugChannel
const SurfaceDebugChannel(43, 'sheen_color', 'Sheen color', SurfaceDebugGroup.physical)
sheenRoughness → const SurfaceDebugChannel
const SurfaceDebugChannel(44, 'sheen_roughness', 'Sheen roughness', SurfaceDebugGroup.physical)
transmission → const SurfaceDebugChannel
const SurfaceDebugChannel(45, 'transmission', 'Transmission', SurfaceDebugGroup.physical)
transmissionColor → const SurfaceDebugChannel
const SurfaceDebugChannel(46, 'transmission_color', 'Transmission color', SurfaceDebugGroup.physical)
diffuseTransmission → const SurfaceDebugChannel
const SurfaceDebugChannel(47, 'diffuse_transmission', 'Diffuse transmission', SurfaceDebugGroup.physical)
anisotropy → const SurfaceDebugChannel
const SurfaceDebugChannel(48, 'anisotropy', 'Anisotropy', SurfaceDebugGroup.physical)
anisotropyDirection → const SurfaceDebugChannel
const SurfaceDebugChannel(49, 'anisotropy_direction', 'Anisotropy direction', SurfaceDebugGroup.physical)
iridescence → const SurfaceDebugChannel
const SurfaceDebugChannel(50, 'iridescence', 'Iridescence', SurfaceDebugGroup.physical)
iridescenceThickness → const SurfaceDebugChannel

Iridescence film thickness in nanometers (default range 0..1200).

const SurfaceDebugChannel(51, 'iridescence_thickness', 'Iridescence thickness', SurfaceDebugGroup.physical, rangeMin: 0.0, rangeMax: 1200.0)
ior → const SurfaceDebugChannel

Index of refraction (default range 1..3).

const SurfaceDebugChannel(52, 'ior', 'Index of refraction', SurfaceDebugGroup.physical, rangeMin: 1.0, rangeMax: 3.0)
specularColor → const SurfaceDebugChannel
const SurfaceDebugChannel(53, 'specular_color', 'Specular color', SurfaceDebugGroup.physical)
objectColor → const SurfaceDebugChannel

A stable color per node, so joined meshes, duplicates, and instance boundaries read at a glance.

const SurfaceDebugChannel(60, 'object_color', 'Object color', SurfaceDebugGroup.identity)
materialColor → const SurfaceDebugChannel

A stable color per material instance.

const SurfaceDebugChannel(61, 'material_color', 'Material color', SurfaceDebugGroup.identity)
validation → const SurfaceDebugChannel

Every validation flag at once, over a flat gray.

const SurfaceDebugChannel(70, 'validation', 'Validation', SurfaceDebugGroup.validation)
nonFinite → const SurfaceDebugChannel

Red for NaN, green for infinity, blue for a negative color.

const SurfaceDebugChannel(71, 'non_finite', 'Non-finite values', SurfaceDebugGroup.validation)
baseColorRange → const SurfaceDebugChannel

Dielectric base color outside the plausible albedo band, blue too dark and red too bright.

const SurfaceDebugChannel(72, 'base_color_range', 'Base color range', SurfaceDebugGroup.validation)
metallicBinary → const SurfaceDebugChannel

Yellow where metallic is neither 0 nor 1.

const SurfaceDebugChannel(73, 'metallic_binary', 'Non-binary metallic', SurfaceDebugGroup.validation)
normalLength → const SurfaceDebugChannel

Orange where the interpolated normal is far from unit length.

const SurfaceDebugChannel(74, 'normal_length', 'Normal length', SurfaceDebugGroup.validation)
missingTangent → const SurfaceDebugChannel

Pink where a normal map perturbs a surface that has no tangents.

const SurfaceDebugChannel(75, 'missing_tangent', 'Missing tangent', SurfaceDebugGroup.validation)
uvRange → const SurfaceDebugChannel

Yellow where the first UV set leaves the unit square.

const SurfaceDebugChannel(76, 'uv_range', 'UV range', SurfaceDebugGroup.validation)
custom → const SurfaceDebugChannel

The material.debug value a .fmat wrote in Surface(), shown raw.

const SurfaceDebugChannel(80, 'custom', 'Custom (material.debug)', SurfaceDebugGroup.custom)

Properties

group → SurfaceDebugGroup
final
hashCode → int
The hash code for this object.
no setterinherited
id → String
Stable snake-case id for settings, tools, and the registry.
final
index → int
A numeric identifier for the enumerated value.
no setterinherited
label → String
Menu label.
final
name → String

Available on Enum, provided by the EnumName extension

The name of the enum value.
no setter
rangeMax → double
final
rangeMin → double
The default scalar remap range for this channel.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
shaderId → int
The id the shader switches on; mirrors DEBUG_CHANNEL_* in material_debug.glsl.
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

byId(String id) → SurfaceDebugChannel?
The channel with id, or null.

Constants

values → const List<SurfaceDebugChannel>
A constant List of the values in this enum, in order of their declaration.