Nodes/SideBySide_Stereoscope/πŸ‘€ SBS by SamSeen (Legacy)
ComfyUI Node

πŸ‘€ SBS by SamSeen (Legacy)

The legacy SBS node β€” bring your own depth map, and a warning label

By SamSeenXΒ·Created 2 years agoΒ·Updated 4 months agoΒ· 61
πŸ‘€ SBS by SamSeen (Legacy)
  • base_image
  • depth_map
  • stereoscopic_image
β—„depth_scale30β–Ί
β—„modeβ–Ύβ–Ί

This is the original node from the ComfyUI_SSStereoscope pack, and the display name doesn't mince words: "SBS by SamSeen (Legacy)". It takes a 2D image plus a depth map you supply, and produces a side-by-side stereoscopic image. No AI depth model involved - no downloads, CPU only, which is both its charm and its trap.

Here's the honest take: if you're starting fresh today, you probably don't want this one. The pack now ships two better options - SBS V2 (auto-generates the depth with Depth-Anything) and SBS V2.1 (External Depth), which also takes your own depth map but uses the modern V2 engine. The V2.1 node exists specifically because this legacy node has artifacts: its left-to-right pixel-shifting "eats" foreground objects, leaving them thinner or with holes. The changelog is blunt about it. So when would you reach for this? If you're running an old saved workflow, want the exact original output, or you have a depth map already (say, from a ControlNet preprocessor like MiDaS or Depth-Anything) and just need a quick SBS conversion without loading another model.

How it works

It's a raw pixel loop, no vectors, no GPU. The node resizes your depth map to match the base image, then walks every pixel: reads the depth value, computes a shift (depth_scale / image_width * depth), and paints the source pixel into the shifted position on both the left and right halves of the output. To hide the resulting gaps it stretches pixels to fill - which is exactly where those streaks and "eaten" foreground artifacts come from. You can watch the progress bar crawl through every row. It works, but it's the definition of a first-generation implementation.

The inputs

Four inputs, all simple:

  • base_image - the flat 2D image you want to convert.
  • depth_map - your own depth map. Brighter = closer (assuming normal polarity). Feed it whatever you have; it'll handle grayscale or RGB and resize it to match.
  • depth_scale (INT, default 30) - the strength of the 3D effect. Higher = more separation, more gaps and artifacts.
  • mode - Parallel or Cross-eyed. Parallel means you diverge your eyes to freeview; Cross-eyed is the classic "look at the nose tip" trick. For anything viewed on a 3D display or headset, Parallel is the safe choice - the two images go left-eye-left, right-eye-right. Cross-eyed flips the halves for the no-glasses freeviewing trick.

The output

Just one: stereoscopic_image (IMAGE), the side-by-side composite. Save it, view it on a 3D display, or cross your eyes (with practice).

Install

Same pack, same steps:

cd ComfyUI/custom_nodes
git clone https://github.com/MrSamSeen/ComfyUI_SSStereoscope
cd ComfyUI_SSStereoscope
pip install -r requirements.txt

Restart ComfyUI. ComfyUI Manager users can just search "ComfyUI_SSStereoscope". Note the one thing this node doesn't need: no model download, because it doesn't run any depth estimation itself.

The honest warning

Don't learn this node and assume the pack works this way. The artifacts are why the author built V2.1 (External Depth) - same idea, vectorized right-to-left shifting, faster, and it fixes the "reducing" problem. If your depth map is good and you want clean output, use V2.1 or the auto-depth V2 instead and keep this one for compatibility. If you're debugging an old workflow and the foreground looks like it's being nibbled away, you're not doing anything wrong - that's the legacy algorithm. That's the tell you've found the right node for the wrong era.

CategoryπŸ‘€ SamSeen

Inputs (4)

NameTypeDefaultDescription
base_imageIMAGEβ€”
depth_mapIMAGEβ€”
depth_scaleINT30β€”
modeCOMBO2 options: Parallel, Cross-eyed

Outputs (1)

NameTypeDescription
stereoscopic_imageIMAGEβ€”