Nodes/MiniMax H3 Audio T8/MiniMax H3 Skin Finish Texture Guard / 肤质纹理保护 (Advanced EXP)
ComfyUI Node

MiniMax H3 Skin Finish Texture Guard / 肤质纹理保护 (Advanced EXP)

A mechanical guard so your skin finish can't flatten shadows or clip highlights

By T8mars·Created 20 days ago·Updated a day ago· 807
MiniMax H3 Skin Finish Texture Guard / 肤质纹理保护 (Advanced EXP)
  • source_frames
  • candidate_frames
  • used_skin_mask
  • audio
  • guarded_candidate
  • source
  • selected
  • audio
  • effective_mask
  • rejected_mask
  • difference
  • report_json
shadow_protection0.10
highlight_protection0.94
transition_width0.060
minimum_texture_ratio0.78
minimum_reference_texture0.003
maximum_new_clipped_fraction0.0005
clipping_epsilon0.0039
texture_radius1
chunk_frames4
accept_candidatefalse

Skin finishing is a smoothing operation, and smoothing has a failure mode: it eats texture. A candidate that looks great in the mid-tones can flatten deep shadows, crush highlights into clipping, and turn fine pores into plastic. MiniMaxH3SkinFinishTextureGuardT8Advanced is the pack's answer - a fail-closed mechanical guard that sits after a skin-finish candidate and catches exactly those regressions, frame by frame, before anything gets accepted.

The author is blunt about what it isn't: not a beauty score, not a semantic parser, not a deblur, not a pore generator. It's a hard retention guard, and that's precisely its value. You append it to the pipeline and let the thresholds do the policing.

How it works

Give it source_frames, candidate_frames and the used_skin_mask, and it checks every masked pixel region against the source:

  • Shadow and highlight protection. shadow_protection (0.10) preserves source luma at or below that value; highlight_protection (0.94) preserves luma at or above it. The finish physically cannot touch your near-black shadow detail or near-clipped highlights.
  • Clipping gate. maximum_new_clipped_fraction (0.0005) caps how many masked pixels the candidate may newly clip before the frame falls back to source.
  • Texture floor. minimum_texture_ratio (0.78) compares each frame's high-pass RMS against the source. Drop below that relative floor and the frame reverts to source. texture_radius (1) and minimum_reference_texture (0.003) tune how the high-frequency floor is measured.

Any failing frame returns to source. The outputs tell you exactly what happened: guarded_candidate, source, selected, effective_mask, rejected_mask, difference, and report_json. And true to the pack's philosophy, accept_candidate defaults to false - source stays selected until you've reviewed the guarded result.

The author's safe starting points: shadow_protection=0.10, highlight_protection=0.94, minimum_texture_ratio=0.78, maximum_new_clipped_fraction=0.0005. One honest caveat: the high-pass RMS treats noise as texture too, so this guard is best used as a hard floor against over-smoothing, not as a quality meter.

Where it fits

The canonical chain (in examples/workflows/17-skin-finish/2026-08-24_H3_Skin_Finish_Texture_Guard_Advanced_EXP.json) is: Semantic Mask → Skin Finish → Texture Guard → Preview/Audit. Wire the finish node's candidate, source and used_skin_mask in, keep both acceptance switches off, review, then accept.

Install

Standard pack install - ComfyUI Manager, search "MiniMax H3 Audio T8", or:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8

then restart ComfyUI. No extra pip dependencies, no model files for this one - it's pure CPU signal analysis on frames you already have.

The trap to avoid

Don't use this node as a replacement for actually looking at the output. It's a mechanical interlock, not a quality verdict - a candidate that passes every gate can still be wrong in a way no pixel statistic catches. The pack's own validation is honest: a 0.592 MP × 124-frame run passed the default gates and kept PCM-identical audio, which proves the machinery works, not that your clip is done. Review first, then accept, then finalize.

CategoryT8/MiniMax H3/Post FX/Experimental

Inputs (14)

NameTypeDefaultDescription
source_framesIMAGE
candidate_framesIMAGE
used_skin_maskMASK
shadow_protectionFLOAT0.100–0.45Source luma at or below this value is preserved.
highlight_protectionFLOAT0.940.55–1Source luma at or above this value is preserved.
transition_widthFLOAT0.0600.001–0.25
minimum_texture_ratioFLOAT0.780–1Per-frame high-pass RMS floor relative to source. This is a hard retention guard, not a perceptual quality score.
minimum_reference_textureFLOAT0.0030–0.25
maximum_new_clipped_fractionFLOAT0.00050–0.25Maximum newly clipped masked-pixel fraction before frame fallback.
clipping_epsilonFLOAT0.00390.0001–0.05
texture_radiusINT11–8
chunk_framesINT41–32
accept_candidateBOOLEANfalseSource remains selected until the guarded candidate is reviewed.
audiooptAUDIO

Outputs (8)

NameTypeDescription
guarded_candidateIMAGE
sourceIMAGE
selectedIMAGE
audioAUDIO
effective_maskMASK
rejected_maskMASK
differenceIMAGE
report_jsonSTRING