PART 04 · 강의 2/3

수학 노드 활용

Lerp, Clamp, Power, Fresnel 등 핵심 수학 노드와 시간 기반 애니메이션 구현 기법.

01

보간과 매핑 노드

Lerp, Clamp, Remap의 활용

노드 수식 용도
Lerp A + (B - A) * Alpha 두 값 사이 보간. 마스크 기반 블렌딩의 핵심
Clamp max(min, min(max, X)) 값을 특정 범위로 제한
Saturate clamp(X, 0, 1) 0~1 범위로 제한 (무료 인스트럭션)
LinearInterpolate Lerp와 동일 Lerp의 풀네임
InverseLerp (X - A) / (B - A) 값이 A~B 범위에서 어디인지 0~1로 반환
SmoothStep 3t^2 - 2t^3 부드러운 계단 함수. 날카로운 경계를 부드럽게
Practical: 높이 기반 블렌딩 // 높이에 따라 눈/풀 블렌딩 WorldPosition.Z // 월드 높이 (cm)InverseLerp Min: 5000 // 풀 끝나는 높이 Max: 7000 // 눈 시작 높이SaturateSmoothStep // 부드러운 전환Lerp A: 풀 머티리얼 B: 눈 머티리얼
Saturate는 무료

GPU에서 Saturate(0~1 클램프)는 추가 인스트럭션 없이 출력 수정자로 처리됩니다. Clamp(0,1)보다 항상 Saturate를 사용하세요.

02

거듭제곱과 대비 조절

Power, CheapContrast로 마스크 다듬기

Power and Contrast // Power: 값의 분포를 조절 Power(X, Exp) Exp < 1 → 밝은 영역 확장 (부드러운 전환) Exp = 1 → 원본 Exp > 1 → 어두운 영역 확장 (날카로운 전환) // 마스크 다듬기 예시: TextureSample (마스크) → Power (Exp: 3.0) // 대비 강화Saturate → Lerp Alpha에 연결 // CheapContrast: 중간점 기준 대비 조절 CheapContrast(X, Contrast) // 내부: pow(X, Contrast) 기반 // Contrast = 1 → 원본 // Contrast > 1 → 대비 강화
Power vs CheapContrast

Power는 원점(0) 기준으로 곡선을 조절하고, CheapContrast는 중간값(0.5) 기준으로 대비를 조절합니다. 마스크의 밝은/어두운 영역 비율을 조절할 때는 Power, 전체적인 명암 대비를 높일 때는 CheapContrast가 적합합니다.

03

Fresnel과 방향 기반 노드

시선 각도와 표면 방향 활용

Fresnel 노드

Fresnel Node // Fresnel: 시선 각도에 따른 마스크 생성 Fresnel ExponentIn: 5.0 // 높을수록 가장자리만 밝음 BaseReflectFraction: 0.04 // 내부 수식: result = pow(1 - dot(N, V), Exponent) // 활용: // - 림 라이팅 효과 // - 에너지 실드/포스필드 // - 가장자리 글로우 // - 투명도 제어 (가장자리에서 더 불투명)

VertexNormalWS / PixelNormalWS

노드 설명 활용
VertexNormalWS 월드 스페이스 정점 노말 눈 쌓임 (Z 방향 마스크), 이끼 성장
PixelNormalWS 월드 스페이스 픽셀 노말 (노말맵 포함) 정밀한 방향 기반 효과
CameraDirectionWS 카메라 시선 방향 시선 기반 효과, 패럴랙스
ReflectionVectorWS 반사 벡터 가짜 큐브맵 반사, 매트캡
Practical: 눈 쌓임 효과 // 위를 향한 면에 눈 쌓임 VertexNormalWSComponentMask (B만 = Z) // 위 방향 성분Power (Exp: 2) // 대비 강화SaturateLerp Alpha A: 바위 머티리얼 B: 눈 머티리얼
04

시간 기반 애니메이션

Time, Sine, Frac으로 동적 효과 생성

노드 출력 활용
Time 경과 시간(초). 계속 증가 모든 시간 기반 효과의 기본
Sine / Cosine -1~1 사이 진동 맥동, 호흡, 진동 효과
Frac 소수 부분만 (0~1 반복) 톱니파, 주기적 리셋
Floor / Ceil 내림/올림 단계적(디스크리트) 애니메이션
Practical: 맥동하는 Emissive // 부드럽게 맥동하는 발광 효과 TimeMultiply (2.0) // 속도 2배SineMultiply (0.5) // -0.5~0.5Add (0.5) // 0~1로 변환Lerp A: 1.0 // 최소 밝기 B: 5.0 // 최대 밝기Multiply (Emissive Color) → Emissive Color 출력
Sine 0~1 변환 패턴

Sine(Time) * 0.5 + 0.5는 매우 자주 사용되는 패턴입니다. Sine의 -1~1 출력을 0~1로 변환하여 Lerp Alpha나 Emissive 강도로 사용합니다. 속도는 Time에 곱하는 값으로 제어합니다.

SUMMARY

핵심 요약

  • Lerp는 두 값 사이를 보간하는 가장 핵심적인 노드이며, SmoothStep으로 부드러운 전환을 만듭니다.
  • Power로 마스크의 대비를 강화하고, Saturate(무료 인스트럭션)로 0~1 범위를 보장합니다.
  • Fresnel 노드로 시선 각도 기반 마스크(림 라이트, 실드)를 생성합니다.
  • VertexNormalWS의 Z 성분으로 위를 향한 면을 마스킹(눈, 이끼 효과)합니다.
  • Time + Sine 조합으로 맥동, 호흡 등 주기적 애니메이션을 구현합니다.
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: Lerp와 Step 활용

Lerp 노드로 두 색상 사이를 보간하고, Step과 SmoothStep 노드로 날카로운 경계와 부드러운 경계의 차이를 비교하세요. Heightmap으로 지형 색상을 고도별로 분리하세요.

실습 2: 프레넬 + 파워 조합

1-dot(CameraVector, Normal)을 직접 계산하여 수동 프레넬을 구현하고, Power 노드로 감쇠 커브를 조절하세요. 내장 Fresnel 노드와 결과를 비교하세요.

심화 과제: 절차적 패턴 생성

수학 노드만으로(텍스처 없이) 체커보드, 동심원, 격자 패턴을 생성하세요. Frac, Floor, Fmod, Sin 노드를 조합하고, 파라미터로 패턴의 크기와 색상을 제어하세요.