Distance Shape
Text Render의 Distance 출력(거리장)을 받아 채우기・테두리・등고선 중 하나를 그리는 노드입니다. 넣는 것은 일반적인 영상이 아니라 거리장이므로, Render Texture 출력을 연결해도 의도한 그림이 되지 않습니다.
거리장은 ‘0.5가 윤곽이고, 윤곽에서 ±64px를 0~1에 넣은’ 이미지입니다. 따라서 이 노드의 Threshold / Width / Rings / Flow / Softness는 모두 픽셀 단위입니다.
무엇이 그려지는지는 Rings와 Width로 정해집니다
- Rings = 0, Width = 0 — 채우기. 윤곽의 안쪽이 칠해집니다
- Rings = 0, Width > 0 — 윤곽의 띠(테두리).
Width가 띠의 두께이며, 윤곽을 중심으로 양쪽으로 절반씩 퍼집니다 - Rings > 0 — 등고선.
Ringspx마다 선이 나열됩니다. 선의 두께는Width(1px 미만일 때는 1px).Rings가 들어 있는 동안에는 테두리 모드가 되지 않습니다
포트
- Threshold — 윤곽의 이동(px, 기본값 0). 양수면 두꺼워지고, 음수면 얇아집니다. 등고선 모드에서는 선의 배열 전체가 이동합니다
- Width — 띠 / 선의 두께(px, 기본값 0). 음수는 0으로 처리됩니다
- Rings — 등고선의 간격(px, 기본값 0). 음수는 0으로 처리됩니다
- Flow — 등고선의 위상(px, 기본값 0).
Rings가 0일 때는 효과가 없습니다. LFO 등으로 움직이면 선이 계속 흘러갑니다 - Softness — 엣지의 부드러움(px, 기본값 1). 음수는 0으로 처리되지만, 내부의 하한이 0.01px 있으므로 0으로 해도 약간의 안티에일리어싱이 남습니다
- Color — 색(기본값 흰색). 알파는 출력의 불투명도에 곱해집니다
- Invert — 흑백 반전(기본값 OFF). 반전은 마지막에 이루어지며, 거리장이 쓰여 있지 않은 여백도 반전의 대상이 되므로, ON으로 하면 형태가 비고 주위가 칠해집니다
거리장이 쓰여 있지 않은 픽셀은 ‘형태의 밖’으로 취급됩니다. 거리는 문자 주위의 제한된 범위에만 쓰여 있기 때문에, Threshold를 크게 잡아도, 또 Rings를 거칠게 해도 데이터가 있는 범위보다 밖으로는 퍼지지 않습니다.
DistanceA / DistanceB와 Blend
- DistanceA만 — A의 형태를 그대로 처리합니다.
Blend는 무시됩니다 - 양쪽 다 — A→B를
Blend(0~1로 클램프, 기본값 0)로 보간합니다. 0이면 A, 1이면 B. 거리 상태로 섞기 때문에 점의 대응 관계가 필요하지 않아, 구멍의 수가 다른 글자(A와 O 등)라도 깨지지 않고 형태가 녹아듭니다 - DistanceB만 — B를 A로 취급합니다(
Blend는 무시) - 어느 쪽도 연결되지 않음 — 출력은 투명입니다
서체의 모프에 사용할 때는 A와 B의 Text Render에 같은 문자열을 넣고, 배치(Pos X / Pos Y / Scale 등)도 맞춰 두면 서체의 차이만 보간됩니다.
출력
Out의 해상도는 입력된 거리장과 같습니다(DistanceA, 연결되지 않았으면 DistanceB). 입력의 해상도가 바뀌면 다시 만들어집니다. 배경은 투명이며, 불투명도는 그려진 마스크 × Color의 알파입니다.
입력 포트
| Port ID | 타입 |
|---|---|
DistanceA | RenderTexture |
DistanceB | RenderTexture |
Blend | float |
Threshold | float |
Width | float |
Rings | float |
Flow | float |
Softness | float |
Color | Color |
Invert | bool |
출력 포트
| Port ID | 타입 |
|---|---|
Out | RenderTexture |
스크립트에서 설정할 수 있는 멤버
| 경로 | 타입 |
|---|---|
blendInput | float |
thresholdInput | float |
widthInput | float |
ringsInput | float |
flowInput | float |
softnessInput | float |
invertInput | bool |
Synapse Apps (스크립팅)
await synapse.modules.create({ type: "DistanceShape" }) 














