Nodes/comfyui-minimax-h3-audio-T8/MiniMax H3 Skin Finish Dichromatic Specular / 二色反射高光抑制 (Advanced EXP)
ComfyUI Node

MiniMax H3 Skin Finish Dichromatic Specular / 二色反射高光抑制 (Advanced EXP)

Dichromatic specular attenuation

By T8mars·Created about a month ago·Updated a day ago· 1,031
MiniMax H3 Skin Finish Dichromatic Specular / 二色反射高光抑制 (Advanced EXP)
  • source_frames
  • used_skin_mask
  • audio
  • specular_candidate
  • source
  • selected
  • audio
  • effective_mask
  • rejected_mask
  • difference
  • report_json
amount0.80
specular_strength0.80
diffuse_radius_percent2.5
maximum_radius_px48
specular_threshold_linear0.004
specular_softness_linear0.030
chroma_dilution_threshold0.0015
chroma_dilution_softness0.020
minimum_diffuse_chroma0.008
diffuse_chroma_softness0.050
minimum_direction_cosine0.75
maximum_surface_delta0.100
minimum_texture_ratio0.86
maximum_texture_ratio1.10
minimum_reference_texture0.003
maximum_mean_abs_change0.035
maximum_peak_abs_change0.18
minimum_mask_area0.0001
maximum_mask_area0.50
maximum_new_clipped_fraction0.0005
clipping_epsilon0.0039
chunk_frames2
accept_candidatefalse

Most skin-smoothing tools bluntly blur anything bright. The Dichromatic Specular node is the one that stops and asks a physics-adjacent question first: is this bright patch actually a specular highlight - the kind you'd want to attenuate - or is it just bright skin, which you should leave alone? It's a clean-room, display-referred approximation of that judgment, and it's one of the more interesting experiments in the pack precisely because it tries to be conservative about what counts as shine.

How it works

The node describes its own contract: it requires a neutral-illuminant dichromatic specular estimate and local chroma dilution before it will touch a pixel. The dichromatic model, simplified, says a specular reflection roughly preserves the light source's color (often near-neutral) while the diffuse skin underneath carries the chroma. So the node looks for pixels that are bright, have a positive achromatic specular estimate, and sit where chroma is locally diluted - meaning the highlight has washed out the local color. Same-chromaticity bright skin (a uniformly lit pale cheek, for example) is intentionally left unchanged, because that's not a specular separation, that's just skin.

The control set is intimidatingly long, but the ones you'd actually touch:

  • amount (0.8) and specular_strength (0.8) - how much correction and how hard the specular estimate pushes.
  • specular_threshold_linear / specular_softness_linear (0.004 / 0.03) - the brightness floor and falloff for "this is a highlight."
  • chroma_dilution_threshold / chroma_dilution_softness - the local-color-washout test.
  • minimum_direction_cosine (0.75) - consistency with the masked diffuse-colour direction; this is the gate that stops near-neutral diffuse skin from being treated (that problem is "ill-conditioned," per the author).
  • The guard rail: minimum_texture_ratio, maximum_peak_abs_change, maximum_new_clipped_fraction, etc. - the same bounded-change/texture/clipping gauntlet the other candidates run.

The input/output shape

Required: source_frames, used_skin_mask, and a mountain of floats; optional audio. Outputs mirror the family pattern: specular_candidate, source, selected (source by default), audio, effective_mask, rejected_mask, difference, report_json. Frames that fail any gate bounce to source, and accept_candidate (false) is the only path to the candidate.

Why you'd reach for it

For greasy, sweaty-skin footage where a broad blur would flatten the face. Its whole design is to remove only the highlight layer, preserving the diffuse tone underneath - which is exactly what you want for "matte the shine, keep the skin." It's also frame-independent and CPU-only, so it runs chunked (chunk_frames default 2) without loading H3 or SAM.

Honest expectations

T8's validation is characteristically blunt: a real 960x544x124 run passed all the mechanical gates, but the blind human review had source winning seven criteria, candidate winning zero, and the reviewer's post-reveal verdict was essentially "looks the same." So this is an experiment with no perceptible-benefit claim - the author says so explicitly. Reach for it if you want to understand the approach or need a principled, safely-bounded highlight attenuator in the chain; don't reach for it expecting a visible transformation out of the box.

Installing it

Standard pack install: ComfyUI Manager → "MiniMax H3 Audio T8", or clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git into custom_nodes; update ComfyUI core first, restart. No extra model files - this one is pure CPU image math.

CategoryT8/MiniMax H3/Post FX/Experimental

Inputs (26)

NameTypeDefaultDescription
source_framesIMAGE
used_skin_maskMASK
amountFLOAT0.800–1
specular_strengthFLOAT0.800–1
diffuse_radius_percentFLOAT2.50.1–8
maximum_radius_pxINT481–192
specular_threshold_linearFLOAT0.0040–0.25
specular_softness_linearFLOAT0.0300.001–0.5
chroma_dilution_thresholdFLOAT0.00150–0.25
chroma_dilution_softnessFLOAT0.0200.001–0.5
minimum_diffuse_chromaFLOAT0.0080–0.25
diffuse_chroma_softnessFLOAT0.0500.001–0.5
minimum_direction_cosineFLOAT0.75-1–0.99
maximum_surface_deltaFLOAT0.1000–0.25
minimum_texture_ratioFLOAT0.860–1
maximum_texture_ratioFLOAT1.101–2
minimum_reference_textureFLOAT0.0030–0.1
maximum_mean_abs_changeFLOAT0.0350–0.25
maximum_peak_abs_changeFLOAT0.180–1
minimum_mask_areaFLOAT0.00010–0.25
maximum_mask_areaFLOAT0.500.05–1
maximum_new_clipped_fractionFLOAT0.00050–0.25
clipping_epsilonFLOAT0.00390.0001–0.05
chunk_framesINT21–16
accept_candidateBOOLEANfalseFalse keeps the exact source selected. Enable only after labelled full-video review and downstream Texture/Safety gates.
audiooptAUDIO

Outputs (8)

NameTypeDescription
specular_candidateIMAGE
sourceIMAGE
selectedIMAGE
audioAUDIO
effective_maskMASK
rejected_maskMASK
differenceIMAGE
report_jsonSTRING