모션의 렌더링 비용 살펴보기
Motion Rendering And Performance
입력 지연과 프레임 문제를 구분하고 전환의 실제 비용을 진단합니다.
이 자료로 구현하기
원문 주소와 버전이 포함된 요청문입니다. 복사한 뒤 만들 화면과 요구사항을 채워 에이전트에게 전달하세요.
FROM PRINCIPLE TO PRACTICE
이 원리로 만든 예제 122
예제를 열어 동작을 살펴보고, 코드와 함께 이 문서의 원리를 확인해 보세요.
Animated Beam
- 연결선은 컨테이너 좌표에서 계산
updatePath는 양 끝 요소의 중심에서 컨테이너 원점을 빼서 이차 곡선을 만듭니다. 대표 데모는 여섯 주변 아이콘을 중앙에 연결합니다. 관찰자는 컨테이너 크기만 감시하므로 크기는 그대로인 내부 재배치도 따로 확인해야 합니다.
- 연결선은 컨테이너 좌표에서 계산
Neon Gradient Card
- 측정 크기를 사용하는 네온 표면
NeonGradientCard는 offsetWidth·offsetHeight를 CSS 변수로 옮겨 두 의사요소의 크기와 blur를 정합니다. 최초·창 resize·children 변경 때만 측정하므로 지연 폰트나 부모만의 리사이즈를 따로 검사해야 합니다.
- 측정 크기를 사용하는 네온 표면
Animated Theme Toggler
- 테마 적용과 전환 효과의 분리
toggleTheme는 지원이 없으면 applyTheme를 즉시 실행하고, 지원 시 flushSync로 테마를 바꾼 뒤 새 루트 화면을 클리핑합니다. 전환 중 중복 입력을 막습니다. controlled 모드의 저장 책임은 부모에 있고 uncontrolled 모드는 localStorage에 씁니다.
- 테마 적용과 전환 효과의 분리
연결된 예제 119개 더 보기
Backlight
- 내장 영상 주위의 필터 비용
Backlight는 SourceGraphic을 흐리고 채도를 올린 뒤 원본과 합성하는 SVG 필터를 children에 적용합니다. 대표 데모는 blur=40인 YouTube iframe입니다. iframe의 영상 재생이나 외부 로딩을 이 컴포넌트가 제어하지는 않습니다.
- 내장 영상 주위의 필터 비용
Flickering Grid
- 가시성과 캔버스 작업량
FlickeringGrid는 opacity 배열을 deltaTime 확률로 갱신하고 IntersectionObserver로 RAF 시작 여부를 결정합니다. 대표 데모는 500px 높이 안에 800×800 캔버스를 지정합니다. 설정된 색·불투명도만으로 깜박임이나 성능 안전성을 판단할 수 없습니다.
- 가시성과 캔버스 작업량
Floating 3D Particles
- 정지된 화면과 남아 있는 프레임 작업
Floating3DParticles는 2D canvas에 원근 투영한 원을 그립니다. DPR은 2로 제한하고 좁은 창에서 수량을 20%로 줄입니다. 감소 선호에는 staticFrame을 쓰지만 paused·reducedMotion 분기도 RAF를 계속 예약하므로 완전한 작업 정지라고 설명할 수 없습니다.
- 정지된 화면과 남아 있는 프레임 작업
Light Rays
- 광선 수와 흐림 영역의 비용
LightRays는 마운트 뒤 임의 폭·각도·지연을 가진 광선을 만들고 opacity와 회전을 반복합니다. 기본 길이는 70vh라서 카드 높이와 기준이 다릅니다. 대표 데모의 문장은 z-10 별도 레이어에 남습니다.
- 광선 수와 흐림 영역의 비용
Noise Texture
- 정적 노이즈도 필터 비용을 측정
NoiseTexture는 fractalNoise를 흑백으로 만들고 RGB slope를 적용하는 정적 SVG 필터입니다. 각 인스턴스는 useId로 필터를 구분합니다. 데모는 방사형 마스크를 추가하며 원본 코드에 시간 변화는 없습니다.
- 정적 노이즈도 필터 비용을 측정
Particles
- 입자 수의 설정값과 실제 배열
Particles의 initCanvas는 resizeCanvas에서 quantity개를 만들고 drawParticles에서 같은 수를 다시 추가합니다. 원본 흐름상 배열은 두 배가 될 수 있습니다. 포인터는 창에서 듣되 영역 안 좌표만 저장하며 이탈 때 중앙으로 돌리는 처리는 없습니다.
- 입자 수의 설정값과 실제 배열
Pulsating Button
- 버튼 색 측정과 맥동 표현
PulsatingButton은 pulseColor가 없으면 computed backgroundColor를 읽어 --bg에 저장합니다. 루트 클래스·버튼 속성·초점·포인터 변화를 관찰하고 RAF로 측정을 묶습니다. 맥동 span은 aria-hidden이며 라벨과 분리되어 있습니다.
- 버튼 색 측정과 맥동 표현
Retro Grid
- WebGL 격자와 CSS 대체 경로
RetroGrid는 WebGL과 미분 확장 준비에 성공하면 canvas를 보여 주고 실패하면 CSS 원근 격자를 남깁니다. contextlost 때 파이프라인을 해제하고 복구 때 다시 구성합니다. 감소 선호에서는 shader 시간을 0으로 두고 CSS 애니메이션도 끕니다.
- WebGL 격자와 CSS 대체 경로
Text Highlighter
- 줄바꿈 뒤 다시 그리는 강조선
Highlighter는 rough-notation의 annotate로 선을 그리고 요소와 document.body의 ResizeObserver에서 hide·show를 다시 실행합니다. 데모는 밑줄 하나와 하이라이트 하나를 사용합니다. once 진입 옵션이 있어도 resize 재생은 별도 경로입니다.
- 줄바꿈 뒤 다시 그리는 강조선
dot grid
- 정적인 작은 점도 해상도 비용을 가진다
DotGrid는 시간 uniform이 없고 별도의 높은 maxPixelCount 기본값을 ShaderMount에 넘깁니다. 마운트는 부모 크기와 픽셀 비율로 캔버스를 다시 그리므로 작은 점의 선명도, 확대, 크기 변경 비용을 함께 확인해야 합니다.
- 정적인 작은 점도 해상도 비용을 가진다
halftone dots
- 점 스타일을 바꿀 때의 샘플 수와 화질
main은 type에 따라 stepMultiplier를 바꾸며 gooey·soft는 더 촘촘한 이중 반복으로 이웃 점을 누적합니다. 스타일 차이는 셀 크기 계산에도 영향을 주므로 속도만 비교하지 말고 정보와 모양이 얼마나 달라지는지도 남겨야 합니다.
- 점 스타일을 바꿀 때의 샘플 수와 화질
lens distortion
- 색 레이어 수를 늘릴 때의 비용과 경계
count는 spread 방향으로 샘플링하는 색 레이어 수입니다. 많은 레이어는 더 촘촘한 합성을 만들지만 원본 소스만으로 특정 기기에서의 프레임 비용을 알 수는 없습니다. 정적 이미지 필터여도 조절과 크기 변경 시 다시 그리는 비용이 있습니다.
- 색 레이어 수를 늘릴 때의 비용과 경계
metaballs
- 공 수가 바꾸는 반복 작업
Metaballs의 픽셀 계산은 최대 20개 공을 순회하며 count에서 멈춥니다. 공 수와 캔버스 픽셀 수는 다른 비용 축입니다. 먼저 공 수만 바꾸고, 다음으로 동일 공 수에서 예제 크기를 바꿔 비교해야 원인을 구분할 수 있습니다.
- 공 수가 바꾸는 반복 작업
perlin
- 옥타브 수를 늘린 결과와 작업량
추가 옥타브는 한 픽셀에서 수행하는 잡음 계산을 늘립니다. octaveCount를 바꾸면서 scale·픽셀 비율·화면 크기까지 바꾸면 어느 요인의 비용인지 알 수 없습니다. 소스의 반복 횟수는 측정할 가설이며 특정 FPS의 근거가 아닙니다.
- 옥타브 수를 늘린 결과와 작업량
smoke ring
- 연기의 겹 수와 시간 혼합 비용
SmokeRing은 서로 다른 두 localTime으로 잡음을 계산하고 timeBlend로 이어 붙입니다. noiseIterations는 각 잡음의 층 수를 바꾸므로 같은 반지름·크기에서 층 수만 줄인 비교가 필요합니다. 기본값 8은 모든 장치에 맞는 품질 기준이 아닙니다.
- 연기의 겹 수와 시간 혼합 비용
static radial gradient
- 정적인 방사형 색면의 갱신 시점
StaticRadialGradient의 fragment shader는 u_time을 쓰지 않고 기본 speed는 0입니다. 색이나 초점을 바꾸거나 부모 크기가 달라질 때는 다시 그려야 하지만 시간만 흐른다고 장면을 바꿀 이유는 없습니다. speed prop의 존재 자체가 시간 기반 효과의 근거가 되지는 않습니다.
- 정적인 방사형 색면의 갱신 시점
warp
- 소용돌이 반복 수의 화질·작업량 비교
Warp는 최대 20의 루프 안에서 swirlIterations에 도달하면 멈춥니다. swirl이 0이면 시각 기여는 사라지지만 소스상 반복문의 종료 조건은 iterations에 남아 있습니다. 보이지 않는 효과가 작업까지 없어졌다는 뜻인지 측정해야 합니다.
- 소용돌이 반복 수의 화질·작업량 비교
waves
- 선명도 설정의 실제 전달 경로 확인
WavesImpl은 높은 maxPixelCount 기본값을 꺼내지만 반환하는 ShaderMount에 그 값을 전달하지 않습니다. 따라서 이 래퍼의 maxPixelCount prop만 바꾸어 높은 상한이 적용되었다고 주장할 수 없습니다. 공통 마운트의 실제 상한과 리사이즈 결과를 확인할 필요가 있습니다.
- 선명도 설정의 실제 전달 경로 확인
3D Glass Portal Card Effect with React Three Fiber and Gaussian Splatting
- 굴절용 장면과 최종 장면의 두 번 그리기
GlassModel은 스플랫을 보이게 하고 유리를 숨겨 FBO에 그린 뒤, 그 텍스처를 유리 재질에 전달합니다. showOriginal은 최종 장면의 원본 표시만 바꿉니다.
- 굴절용 장면과 최종 장면의 두 번 그리기
Alternate Column Scroll Animation
- 열에서 상세 탐색으로 옮기는 좌표 계산
Grid는 현재 보이는 항목만 상세 내비게이션으로 이동시키며 원래 이미지와 목적지의 중심 차이로 이동량을 구합니다. 선택 이미지 확대는 뷰포트 높이의 70%를 사용합니다.
- 열에서 상세 탐색으로 옮기는 좌표 계산
Animating 160,000 Cubes in Three.js to Visualize Dithering
- 큐브마다 저장한 임계값과 지연값
Grid.init은 같은 BoxGeometry에 셀·행·열의 정규화 값과 디더링 임계값을 InstancedBufferAttribute로 넣습니다. 큐브별 행렬은 배치 때 만들고 진행값은 재질 uniform으로 전달합니다.
- 큐브마다 저장한 임계값과 지연값
The weight of a moment.
- 02 / Keyframes & independent tracks · renderBounce
A deterministic bounce evaluator maps the playhead to separate height, squash and color tracks. The impact keyframe is editable; the graph and sphere use the same evaluated values. This binding describes the authored study and does not verify the original project.
- 02 / Keyframes & independent tracks · renderBounce
Animating in Frames: Repeating Image Transition
- 두 사각형 사이에 만드는 중간 이미지
generateMotionPath는 출발·도착의 중심과 크기를 보간하고 중간 복제본만 반환합니다. sine 경로와 무작위 wobble은 그 위치에 추가되는 제품 표현입니다.
- 두 사각형 사이에 만드는 중간 이미지
Animating Letters with Shaders: Interactive Text Effect with Three.js & GLSL
- 같은 월드 좌표를 글자 솟음과 그림자에 전달
onPointerMove는 투명한 hit plane과 만나는 지점을 글자·그림자 재질의 uDisplacement에 함께 전달합니다. 글자는 반경 3 안에서 z를 올리고 그림자는 같은 거리로 alpha를 줄입니다.
- 같은 월드 좌표를 글자 솟음과 그림자에 전달
Background Shift Animation with CSS Blend Modes
- 블렌드 레이어의 스크롤 기준점
calcTriggerTop은 화면 좌표에 Locomotive의 currentScroll을 더해 기준점을 잡습니다. 400px 구간을 백분율 이동량으로 바꾸고 방향별로 다른 축을 사용합니다.
- 블렌드 레이어의 스크롤 기준점
Beyond the Luminance Ramp: A Shape-Aware ASCII Renderer in Three.js
- 밝기 한 값 대신 여섯 표본으로 글리프 선택
셀 셰이더는 내부 여섯 지점과 외곽 표본을 비교한 뒤 각 글리프의 여섯 특징값과 제곱 오차를 계산합니다. 가장 작은 오차의 글리프 인덱스를 출력 알파에 담습니다.
- 밝기 한 값 대신 여섯 표본으로 글리프 선택
Breaking the Frame: Building a Real-Time Datamosh Effect with Three.js
- 현재 카메라와 이전 프레임 행렬의 구분
DataMoshEffect는 이전 camera matrixWorld와 projectionMatrix를 별도로 저장합니다. 이전 기록이 없을 때는 현재 카메라를 사용하고 회전 전용 재투영에는 현재 위치를 복사합니다.
- 현재 카메라와 이전 프레임 행렬의 구분
Building a 3D Infinite Carousel with Reactive Background Gradients
- 무한 위치와 시간 기반 관성 감쇠
tick은 dt로 이동량을 계산하고 FRICTION의 dt×60 제곱으로 속도를 줄입니다. 위치는 TRACK으로 감싸며 중심에 가장 가까운 카드가 배경 그라디언트를 선택합니다.
- 무한 위치와 시간 기반 관성 감쇠
One object. Two truths.
- 03 / Material passes & compositing · compositeMaterialPasses
An independently generated torus knot is projected once into two offscreen 2D render targets. Solid and wire passes share geometry and camera; a directional alpha mask composites their outputs. This browser-canvas study isolates the article’s render-target principle without claiming its Three.js shader implementation. This binding describes the authored study and does not verify the original project.
- 03 / Material passes & compositing · compositeMaterialPasses
Building a Dual-Scene Fluid X-Ray Reveal Effect in Three.js
- 직전 마스크를 읽고 다른 대상으로 쓰기
FluidSim.update는 targetA를 이전 프레임으로 읽고 targetB에 새 마스크를 그린 뒤 두 대상을 바꿉니다. 셰이더는 이웃의 어두운 값을 합치고 프레임마다 0.015씩 흰색으로 돌립니다.
- 직전 마스크를 읽고 다른 대상으로 쓰기
Building a Mouse-Following Square Lens Effect with Three.js and GLSL
- 정사각 마스크와 이미지 cover 좌표
셰이더는 메시 비율로 마스크 좌표를 보정하고 렌즈의 변위를 다시 이미지 좌표로 옮깁니다. 안쪽은 채널별 이동을 적용한 첫 이미지, 바깥은 별도로 변형한 두 번째 이미지입니다.
- 정사각 마스크와 이미지 cover 좌표
Building a Playful Stop-Motion Crayon Cursor in p5.js
- 지연된 포인터 거리로 붓 굵기 만들기
CanvasManager는 목표 포인터를 보간한 위치와의 거리로 mouse.delta를 만들고 붓 굵기와 커서 반지름에 사용합니다. 실제 이동 속도와 같은 단위는 아닙니다.
- 지연된 포인터 거리로 붓 굵기 만들기
Depth without drift.
- 20 / Generated coordinates & camera projection · renderProjection
An original indexed patch reuses a persistent position buffer. Normalized generated coordinates map through cover sizing and optional camera-ray compensation into a Three.js perspective camera. Actual updated vertex positions are projected with that camera and compared in CSS pixels with an independently calculated 2D cover reference. No camera or face inference is used. This binding describes the authored study and does not verify the original project.
- 20 / Generated coordinates & camera projection · renderProjection
Building a Scroll-Driven Dual-Wave Text Animation with GSAP
- 진행률과 행 인덱스에서 파형 직접 계산
calculateWavePosition은 행별 위상과 전체 스크롤 진행률을 sin에 넣어 이동 범위로 변환합니다. 두 열은 부호를 반대로 적용하며 중앙에 가까운 행이 썸네일을 선택합니다.
- 진행률과 행 인덱스에서 파형 직접 계산
Building an Endless Interactive Glass Xylophone with Three.js
- 회전하는 막대의 로컬 공간에서 충돌 판정
hitBarIndex는 시간에 따른 회전과 막대별 회전을 합쳐 각 인스턴스 행렬을 만들고 광선을 역변환합니다. 로컬 박스와 만나는 후보 중 거리가 작은 인덱스를 선택합니다.
- 회전하는 막대의 로컬 공간에서 충돌 판정
Building an Endless Procedural Snake with Three.js and WebGL
- 연결 곡선에서 이어지는 단면 방향
EndlessCurve는 이전 접선과 법선을 다음 곡선으로 이어 주며 평행 이동 회전으로 프레임을 계산합니다. 거의 반대인 접선에는 별도 회전축을 선택합니다.
- 연결 곡선에서 이어지는 단면 방향
Glass, with no glass.
- 04 / SDF bevels & recycled cards · projectGlassPool
A rounded-rectangle signed distance drives a bevel height field and finite-difference normals in a native WebGL shader. Three refracted samples of an original procedural texture create dispersion. A bounded pool reprojects over a spherical field, and selectable HTML labels use the same projected card data. GPU cloth and the publisher’s full camera-matrix implementation are outside this study. This binding describes the authored study and does not verify the original project.
- 04 / SDF bevels & recycled cards · projectGlassPool
Building an Infinite Marquee Along an SVG Path with React & Motion
- 경로 길이의 비율로 반복 항목을 배치
MarqueeAlongSvgPath는 itemIndex로 경로 위 시작 비율을 나누고 baseOffset을 더해 0~100으로 감쌉니다. 결과를 offsetDistance에 전달하며 responsive 모드는 viewBox 크기의 내부 표면 전체를 같은 배율로 축소하고 가운데에 놓습니다.
- 경로 길이의 비율로 반복 항목을 배치
Building an Interactive Crumpled Paper Effect with Houdini VAT and Three.js
- 정점 ID와 애니메이션 텍스처 행의 대응
loadVATData는 uv2 또는 uv1에서 정점별 pointId를 만들고 프레임별 텍스처 행을 계산합니다. correct·naive·reversed·noflip 디버그 모드는 서로 다른 행 순서를 사용합니다.
- 정점 ID와 애니메이션 텍스처 행의 대응
Building an Interactive Wave Propagation Cube Grid with Three.js
- 시간이 지난 포인터 자취의 파동 합성
정점 셰이더는 자취의 거리와 나이로 파면·감쇠를 계산합니다. 가중 합을 정규화하고 최대 높이를 제한하며 윗면 정점만 움직입니다.
- 시간이 지난 포인터 자취의 파동 합성
Same orchard. Fewer calls.
- 21 / Instancing & measured rendering work · renderOrchard
A deterministic array of original column transforms feeds either separate Three.js Mesh objects or one InstancedMesh. A single render reports renderer.info draw calls and triangles, while the drawing buffer reports actual pixel dimensions. Object count, DPR and scheduling are separate controls; no frame-rate or universal speedup claim is made. This binding describes the authored study and does not verify the original project.
- 21 / Instancing & measured rendering work · renderOrchard
Contour, light, altitude.
- 05 / Persistent terrain scene · elevation
One persistent Canvas 2D surface projects an independently generated elevation grid. Elevation bands, approximate surface hillshade and a snow threshold are derived during drawing. Document progress selects camera and chapter state; the renderer is never remounted. This isolates terrain presentation and lifecycle principles without an actual DEM, glTF or Webflow integration. This binding describes the authored study and does not verify the original project.
- 05 / Persistent terrain scene · elevation
Connected Grid Layout Animation
- 인접 항목의 실제 위치로 확대 기준점 선택
첫 변형은 이전 형제의 오른쪽과 현재 항목의 오른쪽을 비교해 왼쪽 배치 여부를 정합니다. 외곽은 0→1, 내부 이미지는 5→1로 함께 확대합니다.
- 인접 항목의 실제 위치로 확대 기준점 선택
Creating a Smooth Horizontal Parallax Gallery: From DOM to WebGL
- DOM 사각형을 중앙 원점의 메시로 옮기기
GLMedia는 DOM bounds에서 수평 scroll을 빼고 뷰포트 중심을 원점으로 메시를 배치합니다. 이미지 중심이 화면 중심에서 떨어진 정도를 별도 시차 uniform에 전달합니다.
- DOM 사각형을 중앙 원점의 메시로 옮기기
Creating an Interactive 3D Cluster with Three.js, TSL and Three Start
- 삼각형별 중심을 기준으로 만든 돌출 면
createExtrudedFaces는 position 배열을 9개 값씩 읽어 삼각형 중심과 바깥 방향을 계산합니다. 각 돌출 geometry를 중심으로 되돌린 뒤 BatchedMesh의 instance 행렬로 다시 배치합니다.
- 삼각형별 중심을 기준으로 만든 돌출 면
Creating Wavy Infinite Carousels in React Three Fiber with GLSL Shaders
- 반복 위치와 속도 기반 왜곡의 결합
Carousel은 Lenis velocity로 메시 위치와 uScrollSpeed를 함께 바꿉니다. useFrame은 전체 이미지 폭 또는 높이를 기준으로 메시를 반복 구간 안에 감쌉니다.
- 반복 위치와 속도 기반 왜곡의 결합
A field made of functions.
- 06 / Parametric GPU tubes · buildParameterGrid
A native WebGL vertex shader derives curve positions, finite-difference tangents, a cross-section frame and normals from immutable progress/angle attributes. The animated reveal changes radius rather than transparency. A stable reference-axis fallback prevents zero-length cross products for this bounded curve family; it does not promise a globally continuous frame for arbitrary curves. This binding describes the authored study and does not verify the original project.
- 06 / Parametric GPU tubes · buildParameterGrid
Experimental On-Scroll Text Animations with SVG Clip-Path
- 문자 마스크와 그 안의 포스터를 따로 이동
첫 효과는 두 clipPath를 서로 다른 범위로 수평 이동시키고 각 posterInner에는 작은 반대 시차를 줍니다. 마스크 이동과 이미지 이동은 다른 요소의 책임입니다.
- 문자 마스크와 그 안의 포스터를 따로 이동
One state. Two surfaces.
- 22 / Semantic content & pixel treatment · paintCoverFrame
One application state owns caption, accent and effect. Both a semantic HTML card and an independently drawn Canvas2D cover consume the same snapshot. Pixelated mode paints that cover into a smaller detached canvas, then enlarges it with image smoothing disabled. Inputs and resize events redraw the current state without replacing native controls. This is manual drawing of known content, not automatic HTML rasterization. This binding describes the authored study and does not verify the original project.
- 22 / Semantic content & pixel treatment · paintCoverFrame
Gooey Cursor Effect
- 포인터 자취를 셀의 수명으로 표현
GooCursor는 화면을 cellSize 격자로 나누고 포인터가 새 셀에 들어갈 때 그 셀을 켠 뒤 ttl 후 숨깁니다. resize는 셀 DOM을 다시 만듭니다.
- 포인터 자취를 셀의 수명으로 표현
Grid Zoom Layout
- 확대 이미지 목적지는 뷰포트 비율로 정함
calcTransformImage는 원래 셀 사각형에서 화면 폭 54%의 크기와 x=65%, y=50% 중심까지의 변환을 구합니다. 주변 정보의 자리와 함께 검증할 제품 값입니다.
- 확대 이미지 목적지는 뷰포트 비율로 정함
Hover Motion Intro Animation
- 포인터 중앙 거리의 제곱으로 대비 변화
calculateMappedContrast는 수평 중앙에서의 정규화 거리를 제곱해 100→330 대비를 만듭니다. 밝기·기울기·축소는 각각 다른 계산으로 같은 포인터에 반응합니다.
- 포인터 중앙 거리의 제곱으로 대비 변화
Hover Preview Effect with Mini Map
- 썸네일 안의 커서 위치를 미니맵으로 축소
HoverMap은 show 때 썸네일·지도·점의 사각형을 저장합니다. render는 커서 위치를 썸네일 상대 좌표로 바꾸고 지도 크기로 매핑합니다.
- 썸네일 안의 커서 위치를 미니맵으로 축소
How to Animate WebGL Shaders with GSAP: Ripples, Reveals, and Dynamic Blur Effects
- tween 갱신 횟수로 증가하는 셰이더 시간
첫 Effect의 animate와 resetMaterial은 onUpdate마다 uTime에 0.1을 더합니다. 그 값은 실제 경과 초가 아니라 콜백 횟수에 의존하며 ripple과 grayscale 값도 함께 바뀝니다.
- tween 갱신 횟수로 증가하는 셰이더 시간
When drops become one.
- 14 / Smooth distance fields · renderLiquid
An independently authored native WebGL ray marcher evaluates a smooth union of sphere signed-distance fields. A bounded pointer trail supplies sphere centers; finite-difference surface normals support shaded, normal and distance views. No original custom-licensed implementation is redistributed. This binding describes the authored study and does not verify the original project.
- 14 / Smooth distance fields · renderLiquid
How To Create Kinetic Image Animations with React Three Fiber
- 비율을 보존해 이어 붙인 한 장의 texture
getCanvasTexture는 모든 이미지를 병렬로 읽고 가로 축이면 공통 높이, 세로 축이면 공통 폭에 맞춥니다. 이미지별 길이와 gap의 합으로 canvas를 만들고 DPR을 최대 2까지 적용합니다.
- 비율을 보존해 이어 붙인 한 장의 texture
Implementing a Dissolve Effect with Shaders and Particles in Three.js
- 입자 배열 갱신과 매 프레임 속성 재생성
updateParticleAttriutes는 모든 입자의 위치·거리를 CPU에서 갱신하고 최대 이동을 넘으면 초기 위치로 돌립니다. 매 호출에서 다섯 BufferAttribute를 새로 만들어 geometry에 다시 설정합니다.
- 입자 배열 갱신과 매 프레임 속성 재생성
Inline Layout Switch Ideas
- 인라인 이미지가 목록으로 모이는 측정 순서
showImages는 이미지의 Flip 상태를 먼저 저장하고 텍스트 조각을 서로 다른 축·방향으로 내보냅니다. 목록으로 이동하는 기하와 무작위 텍스트 퇴장은 별도 표현입니다.
- 인라인 이미지가 목록으로 모이는 측정 순서
Large Image to Content Page Transition
- 스크롤 확대와 상세 전환의 속성 소유
animateOnScroll은 각 미리보기의 imageInner를 위쪽 원점으로 세로 확대하고 제목을 위로 밀어냅니다. 같은 항목 클릭은 별도의 showContent로 이어집니다.
- 스크롤 확대와 상세 전환의 속성 소유
Matrix Sentinels: Building Dynamic Particle Trails with TSL
- 자취 이력과 입자 갱신의 GPU 실행 순서
ParticlesTrails는 초기 compute가 끝난 후 매 update에서 computePositionStory를 먼저 기다리고 computeUpdate를 실행합니다. 이 순서가 자취가 참조하는 위치의 시점을 정합니다.
- 자취 이력과 입자 갱신의 GPU 실행 순서
Menu to Grid Layout Animation
- 복귀할 메뉴 행의 중심으로 덮개 축소
상세에서 돌아올 때 cover의 높이를 0으로 줄이고 원래 row의 화면 top+높이/2로 옮깁니다. 제목은 currentRow를 기준으로 시차를 두고 복귀합니다.
- 복귀할 메뉴 행의 중심으로 덮개 축소
On-Scroll 3D Carousel
- 항목 수와 반지름으로 만드는 원형 배치
getCarouselCellTransforms는 360도를 항목 수로 나누고 각 셀에 rotateY와 translateZ를 조합합니다. 반지름은 scene의 data-radius에서 읽습니다.
- 항목 수와 반지름으로 만드는 원형 배치
On-Scroll Column & Row Animations
- 열 이동과 개별 이미지 시차의 서로 다른 구간
첫 변형은 grid 구간에서 열 인덱스에 비례해 yPercent를 움직입니다. 각 이미지의 작은 y 이동은 해당 item의 진입·이탈 구간을 따릅니다.
- 열 이동과 개별 이미지 시차의 서로 다른 구간
On-Scroll Expanding Image Animation within Typography
- 열린 인라인 배치를 목표 상태로 측정
ExpandImageEffect는 type--open 상태에서 이미지와 주변 글자의 Flip 상태를 캡처하고 스크롤에 맞춰 그 상태로 이동합니다. 이후 본문 자체의 퇴장 효과도 연결합니다.
- 열린 인라인 배치를 목표 상태로 측정
On-Scroll Perspective Grid Animations
- 원근과 큰 수평 이동량의 조합
applyAnimation의 type1은 perspective를 1000px로 정하고 항목마다 -1000~-500%에서 500~1000%까지 서로 다른 수평 범위를 부여합니다.
- 원근과 큰 수평 이동량의 조합
On-Scroll SVG Filter Effect
- 원과 경로가 서로 다른 SVG 속성을 보간
Item은 마스크 종류에 따라 원의 r 또는 경로의 d를 data-value-final로 바꿉니다. 이미지 밝기·확대와 Flip 배치도 같은 스크롤 애니메이션에 결합합니다.
- 원과 경로가 서로 다른 SVG 속성을 보간
Pixel Distortion Effect with Three.js
- 캔버스 크기로 나누지만 원점은 화면에 남는 좌표
Sketch.mouseEvents는 clientX·clientY를 컨테이너 width·height로 나눕니다. 컨테이너의 화면 위치를 빼지 않으므로 전체 화면을 벗어난 배치에서는 포인터 기준이 달라질 수 있습니다.
- 캔버스 크기로 나누지만 원점은 화면에 남는 좌표
Playing with Light and Refraction in Three.js: Warping 3D Text Inside a Glass Torus
- 프레임 계산한 굴절률 목표를 다시 tween에 전달
배포 번들의 ese는 그룹을 프레임 delta로 회전시키고 5초 주기 중 2초 동안 1.07→3.5의 굴절률 목표를 계산합니다. 매 프레임 Mb.to로 재질 ior에 tween을 만들며 나머지 3초의 목표는 1.07입니다.
- 프레임 계산한 굴절률 목표를 다시 tween에 전달
Reflection Scroll Effect
- 원본과 반사본을 같은 인덱스로 동기화
반사 wrapper는 매 프레임 -lenis.actualScroll만큼 이동합니다. 각 콘텐츠와 같은 인덱스의 반사 항목에는 동일 회전·깊이·필터 tween을 적용합니다.
- 원본과 반사본을 같은 인덱스로 동기화
Relighting Images with Depth Maps and Three.js
- 깊이 기울기와 이미지 밝기 기울기를 합친 법선
normalNode는 깊이 맵의 네 이웃 차이를 texture 크기·modelScale·coverScale로 보정합니다. 별도로 이미지 luminance 차이를 detail로 더한 뒤 법선을 정규화합니다.
- 깊이 기울기와 이미지 밝기 기울기를 합친 법선
Rendering a Procedural Vortex Inside a Glass Sphere with Three.js and TSL
- 고밀도 평면과 입자 복제의 비용
Galaxy는 512×512로 분할한 평면을 만들고 그 position·uv 배열을 새 인스턴스 속성으로 복사해 입자 표현에도 사용합니다. 유리 구의 굴절 재질은 별도 장면 요소입니다.
- 고밀도 평면과 입자 복제의 비용
Fit the frame. Keep the shape.
- 18 / Texture fitting & crop anchors · renderFit
The CPU calculates image and plane aspect-ratio fitting only when its dimension inputs change. A simple texture sampler consumes the derived UV scale and anchor offset. Cover and contain share one fit calculation with zero-size guards; a collapse animation updates only the changing plane dimension. This binding describes the authored study and does not verify the original project.
- 18 / Texture fitting & crop anchors · renderFit
Scroll-Based Layout Animations
- 전환 후 레이아웃과 표현 속성을 함께 측정
triggerFlipOnScroll은 gallery--switch 상태에서 이미지·캡션의 기하와 filter·opacity를 기록합니다. 내부 자식은 2→1 확대를 별도 스크롤 효과로 받습니다.
- 전환 후 레이아웃과 표현 속성을 함께 측정
Slideshow with Filter Reveal Effect
- 바깥 이미지와 안쪽 이미지의 반대 이동
Slideshow.navigate는 outer를 ±101%, inner를 반대 방향으로 움직여 가려지는 경계를 만듭니다. filtersAnimation을 켜면 밝기도 800%를 경유합니다.
- 바깥 이미지와 안쪽 이미지의 반대 이동
Smooth Panel Scroll Effects
- 페이지 전체 구간과 showcase 구간의 중첩
첫 데모는 start=0·end=max의 전체 스크롤로 열 크기와 작은 y 오프셋을 바꿉니다. showcase가 화면 위에 닿을 때까지의 열 이동은 별도 트리거를 사용합니다.
- 페이지 전체 구간과 showcase 구간의 중첩
Staggered (3D) Grid Animations with Scroll-Triggered Effects
- 화면 중앙 좌우에 따라 다른 3D 진입
animateScrollGrid는 처음 측정한 isLeftSide로 rotateZ·xPercent의 부호를 정합니다. 바깥 wrapper의 원근 이동과 안쪽 이미지의 세로 확대를 함께 사용합니다.
- 화면 중앙 좌우에 따라 다른 3D 진입
SVG Mask Transitions on Scroll with GSAP and ScrollTrigger
- 화면 비율에 맞춘 SVG 블라인드 좌표
createBlinds는 viewBox 폭을 100으로 보고 높이를 화면 높이/폭×100으로 계산합니다. openBlinds는 각 조각의 위·아래 도형 y를 서로 다르게 이동시킵니다.
- 화면 비율에 맞춘 SVG 블라인드 좌표
Three.js Instances: Rendering Multiple Objects Simultaneously
- 공유 재질 시간과 인스턴스별 위상차
instanced-attributes 예제는 하나의 uTime을 매 프레임 갱신하고 Blob마다 timeShift 속성을 넣습니다. vertex shader는 로컬 위치의 사인 이동 후 instanceMatrix와 modelMatrix를 적용합니다.
- 공유 재질 시간과 인스턴스별 위상차
Canvas Morphs
- 경로 계산과 두 렌더러의 비용 구분
MorphSVG의 render 콜백이 전달하는 rawPath를 draw가 순회하며 moveTo와 bezierCurveTo로 캔버스에 그립니다. SVG path는 같은 타임라인에서 shape2·3·4·1로 변형됩니다. setDisplay가 최초 DPR과 viewBox 배율을 맞추지만 크기 변경 재계산 리스너는 없습니다.
- 경로 계산과 두 렌더러의 비용 구분
Canvas particles
- 입자 상태와 캔버스 그리기 비용
99개 객체의 상태는 타임라인이 바꾸고 draw가 scale 순으로 정렬하여 각각 translate·rotate·drawImage를 실행합니다. resize는 캔버스 크기와 반지름을 갱신하고 타임라인을 invalidate합니다. 자동 재생이 된다는 사실만으로 프레임 성능을 확정하지 않습니다.
- 입자 상태와 캔버스 그리기 비용
Cursor Trail
- 거리 조건과 고정 크기 이미지 풀
ticker의 ImageTrail이 두 포인터 위치의 거리를 확인하고 100px을 넘으면 18개 img 중 하나를 순환 선택합니다. 재사용 전에 해당 노드의 트윈을 죽이고 위치를 바꿉니다. 프리뷰의 처음 다섯 도형은 같은 이미지 풀의 대기 표시입니다. 첫 mousemove가 이를 숨기고, 원래 animateImage의 clearProps가 재사용할 노드의 기존 표현을 정리합니다. 포인터가 정지해도 ticker 검사는 남습니다.
- 거리 조건과 고정 크기 이미지 풀
curveMode
- 같은 입력 도형에서 보간 방식만 비교
두 패널에 같은 새 시작·도착 경로와 같은 1.6초 선형 진행을 주고 curveMode만 false·true로 다르게 지정했습니다. rebuild는 두 입력 문자열을 매번 복원하고 진행 슬라이더는 두 트윈을 같은 값으로 멈춥니다. 점선은 도착 윤곽이며 경로 문자열 길이는 관찰 값일 뿐 곡선 품질이나 성능 점수가 아닙니다.
- 같은 입력 도형에서 보간 방식만 비교
Draw a path
- 경로의 존재와 선의 표시 길이
공식 코드는 .draw-me 요소에 drawSVG:0인 from 트윈을 1초 적용합니다. 동반 예제는 새로 그린 곡선·원·지그재그의 stroke를 대상으로 하며 path의 기하 자체를 바꾸지 않습니다. 재시작 전에는 표시 길이를 100%로 복원해 중간 상태를 도착점으로 잘못 캡처하지 않게 합니다.
- 경로의 존재와 선의 표시 길이
Generating Randomness
- 처음 생성한 값과 반복마다 생성한 값
세 utils.random 호출은 실행 시 한 번 값을 만듭니다. 상자의 x는 -400…400을 5단위로 고르고 색은 함수에서 선택하며 repeatRefresh:true가 다음 반복에서 값을 다시 계산합니다. 동반 예제의 값 패널은 처음의 세 값을 유지하고 정지 버튼은 상자 트윈만 제어합니다.
- 처음 생성한 값과 반복마다 생성한 값
MacOS Dock Effect
- 거리 함수와 고정된 아이콘 간격
도크 왼쪽 위치와 첫 아이콘 offsetLeft를 기준으로 포인터 좌표를 계산합니다. 각 아이콘의 고정 간격 min=48과 코사인·사인 함수로 scale과 x를 구합니다. 열두 아이콘이 좁은 화면을 넘을 수 있으며, CSS로 간격만 바꾸면 이 계산의 48과 어긋납니다.
- 거리 함수와 고정된 아이콘 간격
Proximity scale grid
- 거리 측정 대상과 확대 대상 분리
paint는 변형하지 않는 칸의 getBoundingClientRect에서 중심을 읽습니다. Math.hypot 거리의 범위를 반경으로 제한하고 mapRange로 강도를 만든 다음 안쪽 mark만 확대합니다. 중앙 비추기는 같은 거리 계산의 키보드 입력이며 포인터 이탈·정적 모드는 배율을 1로 복원합니다. 측정·트윈 개수에 대한 성능 보장은 하지 않습니다.
- 거리 측정 대상과 확대 대상 분리
Shader on Scroll
- 공유 입력과 캔버스별 렌더링 비용
단일 ScrollTrigger가 제한된 속도를 velocityProxy에 넣고 0.8초에 걸쳐 0으로 되돌립니다. 각 frame은 별도의 WebGLRenderer와 ticker를 만들어 같은 값을 shader uniform으로 읽습니다. 원본 ticker는 밀리초와 초를 혼용해 어댑터에서 GSAP 초 단위로 맞췄습니다. 최초 이미지 로드 후의 layout 외에 resize·dispose 경로는 없습니다.
- 공유 입력과 캔버스별 렌더링 비용
Shape Index
- 같은 끝점과 다른 중간 경로
원본 group을 네 개로 복제하고 같은 마름모에서 같은 shapeNew로 변형하면서 shapeIndex만 default·3·6·9로 바꿉니다. 각 모양의 시작 지연도 0.25초씩 달라 정확히 같은 진행률의 정지 비교는 별도 조작이 필요합니다. 복제된 SVG ID가 중복되는 코드도 그대로 보존합니다.
- 같은 끝점과 다른 중간 경로
Smooth Morph
- 같은 원본 경로와 점 재배치 옵션
두 패널은 같은 시작·도착 문자열을 사용하며 오른쪽만 smooth의 points·redraw·persist를 설정합니다. 설정 변경은 이전 효과를 제거하고 원래 입력 d를 복원합니다. 점선은 원래 도착 윤곽으로 남습니다. redraw가 재구성한 경로가 원래 입력과 모든 지점에서 동일하다거나 points가 실제 결과 점 개수·성능을 그대로 뜻한다고 주장하지 않습니다.
- 같은 원본 경로와 점 재배치 옵션
Three.js Scroll Waypoints
- 캔버스 이동과 내부 렌더링의 별도 비용
한 번 만든 WebGLRenderer가 같은 canvas를 계속 사용하고 GSAP ticker가 render를 호출합니다. Flip.fit은 캔버스 위치·크기를 두 marker로 연결하고 같은 타임라인에서 mesh.rotation을 바꿉니다. onResize는 DPR을 최대 2로 제한한 버퍼 크기와 카메라 비율을 갱신합니다.
- 캔버스 이동과 내부 렌더링의 별도 비용
Velocity Skew
- 순간 속도와 감쇠 중인 표현 값
속도를 -300으로 나누고 ±20도로 제한한 뒤 현재 proxy.skew보다 절댓값이 클 때만 새 값을 수락합니다. 0.8초 복귀 트윈의 onUpdate가 quickSetter로 모든 이미지에 값을 씁니다. 따라서 감쇠보다 작은 반대 방향 입력은 즉시 반영되지 않으며 force3D 설정만으로 성능을 보장하지 않습니다.
- 순간 속도와 감쇠 중인 표현 값
원근 원반형 작품 카드
- 원근 원반형 작품 카드의 구현 계약
원반 표면과 깊이 그림자를 유지하면서 범위 입력으로 원근 기울기만 바꿉니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 원근 원반형 작품 카드의 구현 계약
반사광의 추상 입체 심벌
- 반사광의 추상 입체 심벌의 구현 계약
직접 그린 도형의 색면과 윤곽을 고정한 상태에서 각도만 바꾸어 입체감의 원인을 비교합니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 반사광의 추상 입체 심벌의 구현 계약
거대한 입체 아치와 두 열 소개
- 거대한 입체 아치와 두 열 소개의 구현 계약
프레임 밖으로 넘치는 아치의 위치만 조절하고 하단 제목과 설명은 문서 흐름에 남겨 겹침을 비교합니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 거대한 입체 아치와 두 열 소개의 구현 계약
점 구체와 청사진 구획
- 점 구체와 청사진 구획의 구현 계약
청사진의 큰 구획과 점의 미세 간격을 별도로 만들고 range로 점 간격만 바꾸어 시각 밀도를 비교합니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 점 구체와 청사진 구획의 구현 계약
변형 글자 위 벡터 궤적
- 변형 글자 위 벡터 궤적의 구현 계약
변형된 제목과 벡터 경로를 독립된 층으로 만들고 경로를 숨겨도 단어·선택 제어를 유지합니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 변형 글자 위 벡터 궤적의 구현 계약
굴절 세로 표면과 읽기 카드
- 굴절 세로 표면과 읽기 카드의 구현 계약
새로 만든 반복 그라디언트의 굴절 인상과 읽기 표면을 분리하며 프로젝트 버튼은 작은 카드의 선택 상태를 갱신합니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 굴절 세로 표면과 읽기 카드의 구현 계약
대각선 카드 열과 고정 탐색
- 대각선 카드 열과 고정 탐색의 구현 계약
대각선으로 겹친 자체 그림의 표시 위치를 명시적 선택 버튼으로 바꾸고 탐색 표면은 같은 자리에 유지합니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 대각선 카드 열과 고정 탐색의 구현 계약
떠 있는 작은 장식과 큰 초대 제목
- 떠 있는 작은 장식과 큰 초대 제목의 구현 계약
작은 날개 장식과 그림자를 시각적으로만 연결하고 대형 초대 제목과 연락 disclosure를 일반 문서 흐름에 둡니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 떠 있는 작은 장식과 큰 초대 제목의 구현 계약
파란 구체 군집과 얇은 제목
- 파란 구체 군집과 얇은 제목의 구현 계약
구체의 개별 음영은 유지한 채 군집의 전체 크기만 조절하여 효과 면적과 본문 겹침을 비교합니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 파란 구체 군집과 얇은 제목의 구현 계약
금속 카드와 어두운 전시 단상
- 금속 카드와 어두운 전시 단상의 구현 계약
금융·회원 기능 없이 자체 전시 패스의 금속 색면과 각도를 분리해 조절하는 제품 재질 실습입니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 금속 카드와 어두운 전시 단상의 구현 계약
인물 지형 옆의 연락 장면
- 인물 지형 옆의 연락 장면의 구현 계약
새 지형·인물 그림과 실제 연락 안내의 DOM 책임을 분리하며 시각 장치가 없어도 연락 설명을 열 수 있습니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 인물 지형 옆의 연락 장면의 구현 계약
색 띠가 겹친 프로젝트 소개
- 색 띠가 겹친 프로젝트 소개의 구현 계약
자체 직조 무늬와 새 프로젝트 이름을 서로 다른 각도의 띠로 겹칩니다. 일반 목록은 그림과 독립적으로 읽을 수 있으며 원본 물리 반응은 구현 근거로 사용하지 않습니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 색 띠가 겹친 프로젝트 소개의 구현 계약
점으로 그린 원근 건축 공간
- 점으로 그린 원근 건축 공간의 구현 계약
새 수학적 좌표가 원근 공간의 점 장식만 담당하며 제목과 탐색은 일반 DOM으로 남습니다. 원본 점군·LiDAR·카메라 움직임은 주장하지 않습니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 점으로 그린 원근 건축 공간의 구현 계약
구슬 곡선과 모서리 행동 카드
- 구슬 곡선과 모서리 행동 카드의 구현 계약
자체 구슬 분기 도형과 노란 강조 단어, 반투명 메뉴, 모서리 소개 카드를 조합합니다. 도형은 추상 장식이며 생물학적 사실이나 제품 효능을 나타내지 않습니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 구슬 곡선과 모서리 행동 카드의 구현 계약
검은 곡면과 전시장 지도 진입
- 검은 곡면과 전시장 지도 진입의 구현 계약
자체 검은 곡면 장식과 제목을 분리하고 지도 썸네일·일반 지도 버튼이 같은 네이티브 상세창을 엽니다. 실제 지리나 원본 3D 지도로 오인할 기능은 포함하지 않습니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 검은 곡면과 전시장 지도 진입의 구현 계약
점망 인물과 분산된 전시 제목
- 점망 인물과 분산된 전시 제목의 구현 계약
경기·플레이·보상을 포함하지 않는 새 공연 인물 점망을 만들고 분산된 제목의 읽기 순서와 일반 입장 조작을 분리합니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 점망 인물과 분산된 전시 제목의 구현 계약
색 점망 조각과 일반 포트폴리오 탐색
- 색 점망 조각과 일반 포트폴리오 탐색의 구현 계약
색 점망은 장식이고 탐색 버튼과 설명은 일반 DOM입니다. 추상 조각만 표시하며 감지·조준·적·좌표 패널을 포함하지 않습니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 색 점망 조각과 일반 포트폴리오 탐색의 구현 계약
추상 금속 도형·타원 고리·큰 제목
- 추상 금속 도형·타원 고리·큰 제목의 구현 계약
금속 면·가는 다면체 선·발광 고리를 서로 다른 장식 층으로 두고 제목·소개는 일반 문서에 남깁니다. 고리 회전은 사용자가 시작하는 독립 예시입니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 추상 금속 도형·타원 고리·큰 제목의 구현 계약
점 지구와 가상 연결 경로의 일반 탐색
- 점 지구와 가상 연결 경로의 일반 탐색의 구현 계약
점 지구와 연결선은 가상 데이터 그림입니다. 경로 선택의 상태는 실제 텍스트와 버튼에 나타나며 접속 중·실시간 사용자 수를 주장하지 않습니다. 이 연결은 새로 작성한 실행 코드의 계약을 설명하며, 원본의 동작을 검증했다는 뜻은 아닙니다.
- 점 지구와 가상 연결 경로의 일반 탐색의 구현 계약
CPU Architecture · Gamma UI
- CSS 광점과 SVG 선의 별도 시간 경로
CpuArchitecture는 viewBox 0 0 200 100의 SVG입니다. 선의 시작 그리기는 SVG animate의 stroke-dashoffset이고, 여덟 광점은 작성자 globals.css의 offset-path와 animation-path를 사용합니다. CPU 문자의 그라데이션 stop에도 SVG animate가 있습니다. 전체가 하나의 애니메이션 제어기를 사용하는 구조는 아닙니다.
- CSS 광점과 SVG 선의 별도 시간 경로
Inverted Cursor · Gamma UI
- 컨테이너 좌표를 프레임마다 따라가는 원
Cursor는 mousemove의 client 좌표에서 컨테이너 rect를 빼고 size/2로 원의 중심을 맞춥니다. 매 requestAnimationFrame에서 남은 거리의 0.2만큼 움직이며 경과 시간을 인자로 쓰지 않습니다. 이는 프레임별 보간 설정이고 특정 밀리초 지연이나 장치 공통 속도를 보장하지 않습니다.
- 컨테이너 좌표를 프레임마다 따라가는 원
Mesh gradient메시 그라디언트
- 겹친 흐림 효과의 비용 측정
세 색 덩어리에 흐림과 서로 다른 지연을 주어 색이 섞입니다. 공통 변형 애니메이션을 써도 큰 흐림 영역과 겹침의 비용이 없어졌다고 볼 수는 없습니다.
- 겹친 흐림 효과의 비용 측정
Metallic surface금속의 표면
- 금속처럼 보이는 CSS 표면의 근거
이 표면은 반복 방사형 그라디언트 위에 회전하는 원뿔형 그라디언트를 겹친 CSS 연구입니다. 흐림·대비 필터와 혼합 모드를 사용하며 물리적 금속 시뮬레이션이나 셰이더 실행을 구현한 것은 아닙니다.
- 금속처럼 보이는 CSS 표면의 근거
Glass surface빛을 통과하는 카드
- 움직이는 배경을 통과하는 유리 표면
세 색 덩어리가 움직이는 뒤쪽 표면 위에 흐림이 있는 반투명 카드를 놓습니다. 카드 자체는 일정한 각도를 유지하므로 배경 움직임과 후면 필터를 따로 검사할 수 있습니다.
- 움직이는 배경을 통과하는 유리 표면
Prismatic border프리즘 프레임
- 프리즘 경계의 배경 이동을 측정하기
여러 색을 담은 넓은 그라디언트의 배경 위치가 이동합니다. 바깥 그림자는 고정이고 내부 표면은 별도로 덮여 있으므로 경계 움직임과 그림자 비용을 구분해 볼 수 있습니다.
- 프리즘 경계의 배경 이동을 측정하기
Neon frame은은한 네온
- 그림자 번짐의 실제 렌더링 비용
네온 효과는 바깥 두 그림자와 안쪽 그림자의 번짐을 바꾸는 애니메이션입니다. 요소를 이동시키는 효과와 다른 작업이므로 부드럽다는 느낌만으로 성능을 판단하지 않습니다.
- 그림자 번짐의 실제 렌더링 비용
Cursor trail포인터의 잔상
- 다섯 잔상의 추적 속성 검사
다섯 원의 왼쪽·위쪽 좌표에 각기 다른 전환 시간을 주어 잔상처럼 보이게 합니다. 각 원의 변형은 중심 정렬용이고 추적 자체는 위치 속성을 바꾸므로 합성 전용 효과라고 단정할 수 없습니다.
- 다섯 잔상의 추적 속성 검사
Grain gradient입자가 있는 색
- 고정 입자와 움직이는 색면 분리
입자는 SVG 난류 필터를 담은 배경 이미지이고, 실제 움직임은 뒤의 색 덩어리가 만듭니다. 입자 레이어의 혼합과 색 덩어리의 흐림을 따로 비교할 수 있습니다.
- 고정 입자와 움직이는 색면 분리
Primary role: source-backed rendering diagnosis and mechanism selection.
Repository Boundary
This guide owns questions about the delivery of product motion. It does not grant reusable Layout CSS animation properties, establish universal frame budgets, or treat a trace from one machine as proof for every device. Use the existing Practice Reference for the boundary between mechanics and taste.
Reusable Method
Describe the visible failure before choosing a faster-looking API: input responds late, geometry jumps, frames arrive irregularly, content is blank during decoding, or the wrong state appears. Record the target browser/device, surface size, concurrent work, and source revision. Select evidence that distinguishes these failures.
Source Findings
| Source | What it supports | What it does not establish |
|---|---|---|
| web.dev animation guide | Rendering work depends on the properties and effects involved; inspect paint and compositing behavior. | That a property or library always runs on a GPU. |
| Layout thrashing | Interleaved style writes and geometry reads can force synchronous layout; batching can avoid repeated work. | That every geometry read is a defect. |
| Chrome runtime performance | Recorded frames and main-thread work can locate a runtime bottleneck. | Hardware equivalence between throttling and an actual device. |
| View Transitions Level 1 | Same-document transitions wrap a DOM update and expose distinct update, readiness, and finish promises. | Route state, data consistency, or a universal cross-document contract. |
| Scroll-driven Animations | Scroll progress and view progress are distinct timeline models. | That a visually scrubbed sequence has correct reading order or accessibility. |
| CSS Transitions Level 2 | @starting-style supplies entry styling for relevant newly rendered elements. |
Correct exit teardown, focus handling, or support in an unspecified runtime. |
These are dated source readings, not a compatibility table. The linked standards-track documents include work in progress; check the selected browser and feature combination before making a shipping claim.
Match The Mechanism To The Responsibility
| Responsibility | Candidate | First failure probe |
|---|---|---|
| Animate one local state difference | CSS transition with a static endpoint | Disable transitions; the endpoint must still be correct. |
| Control an effect's playback lifecycle | Web Animations | Interrupt and dispose it; verify cleanup and promise handling. |
| Visually connect a replaced DOM state | Same-document View Transition | Skip the transition; the DOM update must still occur once. |
| Bind presentation to a scroll interval | Native scroll/view timeline where supported | Remove support; content must remain readable in order. |
| Coordinate media decoding with chapters | Consumer-owned controller | Delay or fail a frame decode; preserve a readable fallback. |
This selection table is a local reasoning aid. It does not rank CSS, JavaScript, or native APIs by universal speed.
A Diagnostic Sequence
- Reproduce the failure with representative content and a repeatable input sequence. Save the initial state, not just the final screenshot.
- Inspect the slow interval: input queueing, script execution, style/layout, paint, compositing, and media work where the tooling exposes them.
- Change one suspected cost while retaining the same task and information. For a suspected layout loop, batch the same reads before writes rather than removing the interaction.
- Compare trace intervals and final behavior. Report both improvements and regressions; averaging the entire page can hide the bad interval.
- Repeat on a declared target device when the claim concerns that device. Keep emulation and real-device observations separate.
For continuous motion, inspect frame delivery during the effect. For input responsiveness, use Loading And Feedback and its distinction between next paint and completed work. A responsive first frame can precede an unsuccessful operation.
View Transition Failure Contract
Treat the DOM update as the essential operation. updateCallbackDone reports that update's result; ready can reject when an animation cannot start; visual skipping can still lead to successful completion. Handle the promises relevant to the selected API version and keep route/focus error handling independent of decoration. The specification interface is the source for these distinctions.
Local probes: request a second navigation before the first effect ends, remove a named element, use a duplicate transition name, fail the update callback, and resize during capture. Determine which failures skip only the effect and which prevent the destination update. Do not infer business success from the existence of a transition object.
Opinionated Guidance
Choose the smallest effect that explains the state change. Promote an element or retain a large snapshot only when the measured benefit justifies its lifetime and resource cost. Reducing the work is often easier to explain than adding coordination machinery, but retain evidence for the actual tradeoff.
Platform-Specific Guidance
DevTools UI and event names change; record tool/browser versions and retain raw traces. A native timeline needs a source-bound fallback, especially for media chapters with independent decoding. Follow Scroll-driven Story for reading, scroll ownership, and runnable examples.
Unsupported Absolutes
An average FPS value cannot prove every frame arrived on time. Smooth video playback of a capture cannot establish input latency. A compositor-friendly effect does not remove image decode, memory, script, or accessibility costs.
Verification Contract
Report the initial failure, task-preserving comparison, target environment, raw artifact locator, observed difference, and remaining limitations. Keep source-derived expectations separate from measured timings. Test the static path, rapid input, cold and warm media/cache conditions, and reduced motion when relevant.
The sequence above is a proposed diagnostic protocol; this documentation change captures no runtime performance evidence. Re-review when the effect, content scale, browser feature, or target hardware changes.
Source, License, And Attribution
Locally authored synthesis. The linked official browser guidance and specifications were inspected 2026-09-21; no source code, figures, or tables are reproduced. consumer_reference: not_applicable because no consumer implementation or performance record is selected.
IA Navigation
Parent: Motion. Next: Motion Review Workflow.



