🌍 FoW - Environment Category Light
Three text boxes that build your whole scene
- clip
- Environment Conditioning
- Environment Prompt
The scene node that thinks in three layers
Most category nodes in the FoW suite make you pick from a catalog. Environment Category Light does something smarter: it gives you three text boxes - setting, structure/props, and elements/lighting - and fuses whatever you type in each into one conditioning object. It's a gentle way to force yourself to describe a scene completely, which is exactly where weak environments come from: people write "a castle" and stop.
It's part of SirWillance's FoW_Suite_LIGHT, the free Light tier of the "Force of Will" suite, built by a self-taught dev over two months and MIT-licensed. Of all the category nodes this one shows the author's background-cleaning instinct most clearly - same .replace(" FoW ", ", ") delimiter cleanup you see in the refiner, same "encode each non-empty box, concat them" logic.
How it works
Each non-empty text box gets cleaned and encoded separately, then the conditionings are concatenated with ComfyUI's built-in ConditioningConcat:
cond = clip.encode_from_tokens_scheduled(clip.tokenize(cleaned_text))
...
fused = self.concat_node.concat(fused, cond)[0]
Empty boxes are skipped, and if all three are empty it encodes an empty string so the graph still produces a valid (if useless) conditioning rather than erroring out. The three slices are joined with ", " for the text output.
The inputs that matter
- clip (CLIP) - your checkpoint's text encoder.
- environment_setting (STRING, multiline) - where and when the scene is ("a rainy cyberpunk alley at night").
- environment_structure_props (STRING, multiline) - the built environment and objects ("neon signs, fire escapes, puddles").
- environment_elements_lighting (STRING, multiline) - atmosphere and light ("harsh neon reflections, steam rising").
Outputs are Environment Conditioning (CONDITIONING) and Environment Prompt (STRING). The conditioning feeds a positive Fusion node; the string shows the joined result.
Installing it
One install, whole suite:
cd ComfyUI/custom_nodes
git clone https://github.com/SirWillance/FoW_Suite_LIGHT
Restart ComfyUI, nodes appear under "🧿 FoW - Light". ComfyUI Manager has it too - search "Force of Will Suite Light". No dependencies, no model downloads.
Where people get burned
The three-box structure is a feature, not a rule - nothing enforces that "lighting" goes in the lighting box. People dump everything into environment_setting and leave the others empty, which defeats the point. The separation matters because the FoW pipeline weights each category independently later: if you want to boost lighting without boosting "rainy alley," it has to be in its own box. Also keep each box to one idea-sentence. Three stuffed paragraphs don't encode better than three clean lines - CLIP's token budget is real on SDXL-lineage models, and the KB's prompt essay is blunt that structure beats volume on the models where this pack's weighting actually works.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| environment_settingopt | STRING | — | |
| environment_structure_propsopt | STRING | — | |
| environment_elements_lightingopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| Environment Conditioning | CONDITIONING | — |
| Environment Prompt | STRING | — |