designpaca/apps/site/public/work/rfs-cfd/index.html
Yun Chan 4d813420dc
Some checks failed
ci / build (push) Failing after 1m52s
feat(showcase): 신규 쇼케이스 3종 — RFS · 트웬티온스 · 새벽청과
각 워크를 서로 다른 클라이언트로 보고 0~6단계를 따로 돌았다(토큰 체계 신규 정의 =
전체 경로). 셋 모두 라이트/다크 반전을 .band-light / .band-dark 가 --band-* 를
재정의하는 규칙으로 정의해 하드 게이트 4를 통과시켰다 — 반전이 섹션마다의 기분이
아니라 두 클래스가 만드는 규칙이다.

RFS — 실시간 유체 시뮬레이터 (rfs-cfd)
  프리셋 darkroom-spec · 컨셉 "암실과 사양서"
  R1 luminary.ai · R2 teenage.engineering EP-133 · 보조 simscale.com (전부 실측)
  히어로에서 브라우저가 실제로 Navier–Stokes 를 푼다. 순수 WebGL2, three.js 미사용.
  이류 → 온도 소스 → 부력·설비 힘 → 발산 → 압력 Jacobi → 투영 → 파티클 전진.
  격자 224×126 / 파티클 26,000 / Jacobi 22회, 좁은 화면은 절반으로 줄인다.
  prefers-reduced-motion 이면 시작하지 않고 그 자리에 RFS 실물 파티클 렌더가 남는다.
  단위계로 세 번 실패했다: dt 를 프레임 단위로 넘겨 파티클이 0.2초 만에 소멸했고,
  전부 급기구에서만 재생성해 실 한 가닥이 됐으며, 랙이 위로 뿜어 핫/콜드 아일이
  갈라지지 않았다. dt 를 초로 못박고 속도를 초당 격자 셀로 통일해 해결했다.
  수치는 전부 RFS 저장소 README 출처. 정확도 지표는 싣지 않았다 — 사내 검증 자료이고
  현재 통과 상태가 아니다.

트웬티온스 (twentyoz-corp)
  프리셋 field-record · 컨셉 "네 개의 현장"
  R1 samsara.com · R2 lars-mueller-publishers.com · R3 = 현행 twentyoz.kr 감사
  현행 사이트 실측: 대비 실패 172개 요소(9~11px 가 3.61:1), 한글 폰트 미지정으로
  한글이 시스템 기본으로 떨어짐, h1 자간 −0.06em(한글 상한의 세 배), 배경 #020202.
  'Digital Genetics' 은유가 산업용 IoT 사업을 가리고 있었다.
  유지한 자산은 radius 0 과 무채색·모노 기조.
  첫 화면에 회사 이름 대신 현장 선택기를 뒀다 — 라디오 그룹이라 JS 0바이트이고
  좌우 화살표 키가 그냥 먹는다. 파트너 19곳은 원본에 도메인 표기가 없어 나누지 않았다.

새벽청과 (saebyeok-cheonggwa)
  프리셋 market-board · 컨셉 "오늘 새벽 두 시의 값"
  R1 natoora.com · R2 phillips.com · R3 제철 12개월 띠
  커머스가 감추는 시세 변동을 히어로의 주인공으로 삼았다. 상품 사진은 아래로 내렸다.
  경매 시각·경락가격·등급·당도 표시 규정을 조사해 카피의 근거로 썼다.
  무화과 당도를 "—" 로 두고 값이 없는 게 아니라 표시가 허용되지 않는 품목이라고 적었다.
  등락은 색이 아니라 ▲▼보합 기호가 먼저다.
  표의 숫자가 예시임을 판 아래와 푸터 두 곳에 명시하고, 주소·전화는 비웠다(게이트 11).
  사진 4장은 codex 내장 image_gen 생성물이며 합계 341KB.

검증: Astro 빌드 통과, verify 체인 L0~L6 10계층 전부 통과,
showcase-audit 신규 3종 12/12 통과(320/390/768/1440).
성능 실측(RFS): JS 24KB · 총 704KB. 폰트만 530KB 로 예산(200KB) 초과 —
한글 웹폰트 자체가 원인이고 기존 cheongon-care 는 650KB 로 더 크다.
저장소 공통 baseline 이라 이번 판은 기록만 남기고 넘어간다.

기존 16종에서 발견된 70건(대비 미달·히어로 줄 수 초과)은 이번 범위를 넘어
design.md 에 목록만 남겼다.
2026-08-24 12:51:48 +09:00

545 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>RFS — 실시간 유체 시뮬레이터 · 데이터센터 열관리 GPU 엔진</title>
<meta
name="description"
content="GPU Compute Shader 위에서 도는 δ-SPH 엔진. 파티클 100,000개를 60 FPS 로 계산해 서버랙 발열과 항온항습기 냉각을 실시간으로 반영한다. 메시 재생성 없이 설비 배치를 그 자리에서 검증한다."
/>
<meta property="og:title" content="RFS — 실시간 유체 시뮬레이터" />
<meta
property="og:description"
content="설비를 옮기면 유동이 그 자리에서 바뀐다. 데이터센터 열관리를 위한 실시간 GPU 유체 시뮬레이션 엔진."
/>
<meta property="og:type" content="website" />
<meta name="theme-color" content="#0e1114" />
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css"
/>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap"
/>
<link rel="stylesheet" href="./styles/main.css" />
<link
rel="icon"
href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' fill='%230E1114'/%3E%3Cpath d='M4 21c4-6 8 4 12-2s8 3 12-3' stroke='%233E8FB0' stroke-width='2.4' fill='none' stroke-linecap='round'/%3E%3Cpath d='M4 27c4-6 8 4 12-2s8 3 12-3' stroke='%238CC152' stroke-width='2.4' fill='none' stroke-linecap='round' opacity='.75'/%3E%3C/svg%3E"
/>
</head>
<body>
<a class="skip-link" href="#main">본문으로 건너뛰기</a>
<header class="site-head">
<div class="wrap head-inner">
<a class="wordmark" href="#top">
<span class="wordmark-mark" aria-hidden="true">
<svg viewBox="0 0 28 20" role="presentation" focusable="false">
<path d="M2 13c3.5-5.5 7-1 10.5-5S21 5 26 3" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
<path d="M2 18c3.5-5.5 7-1 10.5-5S21 10 26 8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" opacity=".5" />
</svg>
</span>
<span class="wordmark-text">RFS</span>
</a>
<nav class="nav" aria-label="주요 섹션">
<a href="#solver">솔버</a>
<a href="#equipment">장비</a>
<a href="#visualization">시각화</a>
<a href="#adopt">도입</a>
</nav>
<p class="head-meta mono">v0.13.0</p>
</div>
</header>
<main id="main">
<!-- ══════════════════════════════════════════════════════════
1 · 히어로 — 암실. 실제로 도는 열유동이 첫 화면을 덮는다
══════════════════════════════════════════════════════════ -->
<section class="band band-dark hero" id="top" aria-labelledby="heroHeading">
<div class="hero-stage" data-field-shell data-field-state="loading">
<canvas id="thermalField" aria-hidden="true"></canvas>
<!-- WebGL 이 없거나 모션을 줄이는 설정이면 이 렌더가 남는다.
폴백이 아니라 결과물이다 — RFS 실물의 파티클 뷰다 -->
<img
class="hero-fallback"
src="./assets/sph-sideview.webp"
width="691"
height="437"
alt="RFS 실물 파티클 뷰 — 서버랙을 통과한 공기가 데워져 위로 오르는 측면 단면"
/>
<div class="hero-grid" aria-hidden="true"></div>
<!-- 장비 형상. 셰이더가 쓰는 좌표와 같은 값을 CSS 변수로 넘긴다 —
그림과 라벨이 어긋나면 라벨이 거짓말이 된다 -->
<div class="stage-solid stage-rack" aria-hidden="true"></div>
<div class="stage-solid stage-fwu" aria-hidden="true"></div>
<div class="hero-scrim" aria-hidden="true"></div>
<div class="stage-tag stage-tag-fwu" aria-hidden="true"><span>FWU 급기</span></div>
<div class="stage-tag stage-tag-rack" aria-hidden="true"><span>서버랙</span></div>
</div>
<div class="wrap hero-copy">
<h1 id="heroHeading">
메시를 다시<br />
만들지 않는다
</h1>
<p class="hero-lead">
설비를 옮기면 유동이 그 자리에서 바뀐다. 데이터센터 열관리를 위한 실시간 GPU 유체
시뮬레이터.
</p>
<div class="hero-controls">
<div class="ctl">
<div class="ctl-head">
<label for="ctlLoad">서버랙 부하</label>
<output class="mono" id="outLoad" for="ctlLoad">70%</output>
</div>
<input type="range" id="ctlLoad" min="0" max="100" step="5" value="70" />
</div>
<div class="ctl">
<div class="ctl-head">
<label for="ctlSupply">FWU 급기량</label>
<output class="mono" id="outSupply" for="ctlSupply">65%</output>
</div>
<input type="range" id="ctlSupply" min="0" max="100" step="5" value="65" />
</div>
</div>
<p class="hero-note">
위 화면은 브라우저에서 도는 <strong>2D 축소판</strong>이다. 슬라이더를 움직이거나 화면을
문지르면 유동이 즉시 반응한다. 실물 RFS 는 Unity 6.4 위에서 3D δ-SPH 를 돌린다 —
파티클 100,000개, 60 FPS.
</p>
</div>
</section>
<!-- ══════════════════════════════════════════════════════════
2 · 문제 — 왜 기존 CFD 로는 안 되는가
══════════════════════════════════════════════════════════ -->
<section class="band band-light section-problem" id="problem" aria-labelledby="problemHeading">
<div class="wrap split">
<div class="split-lead">
<h2 id="problemHeading">
해가 나올 즈음에는<br />이미 다른 결정을 내린 뒤다
</h2>
</div>
<div class="split-body">
<p>
범용 CFD 도구는 시뮬레이션 한 건에 수 시간에서 수 일이 걸린다. 랙 한 대를 옮길 때마다
메시를 다시 만들고 처음부터 다시 풀어야 하므로, 운영 중에 답을 얻는 용도로는 쓰이지
않는다. 그래서 현장의 배치 변경은 대개 계산이 아니라 경험으로 결정된다.
</p>
<p>
RFS 는 정확도의 상한을 낮추는 대신 <strong>회신 시간</strong>을 바꾼 도구다.
발열량을 올리고, 급기 밸브를 조이고, 랙을 한 칸 옮기는 조작이 같은 화면 안에서
유동에 반영된다. 검증할 것이 "결과 파일"이 아니라 "지금 보고 있는 장면"이 된다.
</p>
<dl class="contrast">
<div>
<dt>범용 CFD 도구</dt>
<dd>배치를 바꾸면 메시 재생성 → 재계산. 한 건에 수 시간~수 일</dd>
</div>
<div>
<dt>RFS</dt>
<dd>배치·발열·제어 변경이 같은 세션 안에서 유동에 반영된다</dd>
</div>
</dl>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════════════════════
3 · 솔버 — 암실. 사양을 숨기지 않는다
══════════════════════════════════════════════════════════ -->
<section class="band band-dark section-solver" id="solver" aria-labelledby="solverHeading">
<div class="wrap">
<p class="eyebrow">유체 엔진</p>
<h2 id="solverHeading">GPU Compute Shader 위의 δ-SPH</h2>
<p class="section-lead">
격자를 깔지 않는다. 공기를 입자로 놓고 이웃 입자끼리 밀도·압력·열을 주고받게 한다.
벽이 움직여도 격자를 다시 만들 일이 없다 — 실시간이 가능한 이유가 여기에 있다.
</p>
<ul class="spec-ledger">
<li>
<p class="spec-name">보간 커널</p>
<p class="spec-value">Wendland C2</p>
<p class="spec-note">Poly6·Spiky 혼용을 걷어내고 단일 경로로 통일했다</p>
</li>
<li>
<p class="spec-name">상태방정식</p>
<p class="spec-value">Tait</p>
<p class="spec-note">약압축성 가정. 압력 반복 없이 밀도에서 압력을 직접 얻는다</p>
</li>
<li>
<p class="spec-name">벽면 경계</p>
<p class="spec-value">Adami Ghost Particle</p>
<p class="spec-note">엣지·코너까지 덮는다. 경계에서 입자가 새던 결함을 해소한 방식</p>
</li>
<li>
<p class="spec-name">시간 적분</p>
<p class="spec-value">CFL 적응 서브스텝</p>
<p class="spec-note">유속이 빨라지면 스텝을 자동으로 잘게 쪼갠다</p>
</li>
<li>
<p class="spec-name">배속</p>
<p class="spec-value">0.1× — 10×</p>
<p class="spec-note">배속을 바꿔도 같은 물리 결과가 나오도록 시간 불변을 보장한다</p>
</li>
<li>
<p class="spec-name">열·습도</p>
<p class="spec-value">입자 간 전도 + 부력</p>
<p class="spec-note">습공기 밀도 보정을 포함한다</p>
</li>
<li>
<p class="spec-name">주기 경계</p>
<p class="spec-value">PBC · 최소 이미지 규약</p>
<p class="spec-note">셀 래핑으로 무한 반복 공간을 다룬다</p>
</li>
<li>
<p class="spec-name">이웃 탐색</p>
<p class="spec-value">공간 해시 그리드</p>
<p class="spec-note">SpatialHash 커널 1개가 전담한다</p>
</li>
</ul>
<div class="figures">
<figure>
<p class="fig-num mono">01</p>
<p class="fig-title">GPU 커널</p>
<p class="fig-val mono">53<span>+</span></p>
<p class="fig-note">Compute Shader 10개 · HLSL 67개로 분할</p>
</figure>
<figure>
<p class="fig-num mono">02</p>
<p class="fig-title">파티클</p>
<p class="fig-val mono">100,000</p>
<p class="fig-note">최대 512,000. 60 FPS 안정 구간 기준</p>
</figure>
<figure>
<p class="fig-num mono">03</p>
<p class="fig-title">파티클 1개의 크기</p>
<p class="fig-val mono">20<span>B</span></p>
<p class="fig-note">AoS 를 SoA 6개 버퍼로 갈라 얻은 값</p>
</figure>
<figure>
<p class="fig-num mono">04</p>
<p class="fig-title">테스트</p>
<p class="fig-val mono">2,000<span>+</span></p>
<p class="fig-note">499개 파일 · EditMode · PlayMode · Performance</p>
</figure>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════════════════════
4 · 장비 — 라이트. 이 제품이 아는 물건들
══════════════════════════════════════════════════════════ -->
<section class="band band-light section-equipment" id="equipment" aria-labelledby="equipHeading">
<div class="wrap">
<h2 id="equipHeading">전산실에 있는 물건을 그대로 안다</h2>
<p class="section-lead">
유동만 푸는 것으로는 답이 안 나온다. 열을 만드는 것과 식히는 것이 각자의 제어 논리를
가지고 장 안에 들어가 있어야 배치 변경이 의미를 갖는다.
</p>
<div class="equip-list">
<article>
<h3>항온항습기 <span class="tag mono">FWU</span></h3>
<p>
PID 자동 제어로 목표 온도를 좇는다. 열교환은 ε-NTU 로 계산하고,
프리쿨링·쿨링 밸브와 댐퍼 모드를 각각 조작할 수 있다.
</p>
</article>
<article>
<h3>서버랙</h3>
<p>
CFM 기반으로 통과 공기에 열을 싣는다. 동적 전력 프로파일 5종을 갖고 있고,
장애 상황을 만들어 그때 열이 어디로 가는지 볼 수 있다.
</p>
</article>
<article>
<h3>팬 · 댐퍼 · 냉각코일</h3>
<p>
듀얼 원뿔 존 모델로 GPU 파티클 물리에 직접 개입한다.
후처리로 그린 화살표가 아니라 실제로 입자를 민다.
</p>
</article>
<article>
<h3>온도계</h3>
<p>
물리 기반 센서 응답 특성을 갖는다. 값이 즉시 튀지 않고 실제 계기처럼 따라온다.
Cool Zone 과 Hot Zone 을 자동으로 분류한다.
</p>
</article>
<article>
<h3>급기구 · 배기구</h3>
<p>
CFD inlet / outlet 패턴을 따른다. 경계에 걸린 파티클을 자동으로 재배치해
유입·유출이 끊기지 않게 한다.
</p>
</article>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════════════════════
5 · 시각화 — 암실. 실제 렌더를 그대로 싣는다
══════════════════════════════════════════════════════════ -->
<section class="band band-dark section-vis" id="visualization" aria-labelledby="visHeading">
<div class="wrap">
<p class="eyebrow">보이는 방식</p>
<h2 id="visHeading">읽는 방법을 네 가지로 나눈다</h2>
<div class="vis-layout">
<ol class="vis-list">
<li>
<h3>파티클</h3>
<p>온도로 색을 매핑하고 발광과 LOD 를 건다. 공기가 어디서 데워지는지 그대로 보인다.</p>
</li>
<li>
<h3>트레일</h3>
<p>Ring Buffer 로 궤적을 남긴다. 한 순간이 아니라 지나온 경로를 본다.</p>
</li>
<li>
<h3>히트맵 슬라이스</h3>
<p>
온도·속도·압력·밀도·습도 다섯 물리량의 단면을 5패스 GPU 파이프라인으로 그린다.
<span class="mono">X</span> · <span class="mono">Y</span> ·
<span class="mono">Z</span> 키로 축을 바꾼다.
</p>
</li>
<li>
<h3>벡터 필드</h3>
<p>화살표 글리프와 스트림라인을 GPU 인스턴싱으로 띄운다. 방향과 세기를 함께 읽는다.</p>
</li>
</ol>
<div class="vis-shots">
<figure>
<img
src="./assets/sph-topview.webp"
width="689"
height="680"
loading="lazy"
decoding="async"
alt="RFS 상면 뷰 — 랙 상부에서 데워진 입자가 초록으로 퍼지고 주변 저온 입자는 청록으로 남는다"
/>
<figcaption>상면 · 랙 상부의 열기둥</figcaption>
</figure>
<figure>
<img
src="./assets/sph-sideview.webp"
width="691"
height="437"
loading="lazy"
decoding="async"
alt="RFS 측면 뷰 — 랙을 통과하며 데워진 공기가 오른쪽으로 밀려 나가는 단면"
/>
<figcaption>측면 · 랙을 통과한 공기</figcaption>
</figure>
<p class="shots-note">
두 장 모두 RFS 실물의 파티클 뷰다. 저온이 청록, 고온이 초록이다 —
이 페이지 첫 화면의 색도 같은 규칙을 쓴다.
</p>
</div>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════════════════════
6 · 에디터 — 라이트
══════════════════════════════════════════════════════════ -->
<section class="band band-light section-editor" id="editor" aria-labelledby="editorHeading">
<div class="wrap split">
<div class="split-lead">
<h2 id="editorHeading">시뮬레이터가 아니라 작업 환경이다</h2>
<p class="section-lead">
배치를 바꿔 보려면 배치를 바꿀 수 있어야 한다. RFS Editor 는 Unity UI Toolkit 으로 만든
런타임 편집 환경이고, 시뮬레이션이 도는 채로 물건을 옮긴다.
</p>
</div>
<div class="split-body">
<dl class="feature-rows">
<div>
<dt>오브젝트 편집</dt>
<dd>이동·회전·스케일 핸들, 다중 선택, Undo / Redo, 드래그 앤 드롭 배치</dd>
</div>
<div>
<dt>속성 패널</dt>
<dd>실시간 속성 편집. 관제 시스템의 XD 태그를 여기서 바인딩한다</dd>
</div>
<div>
<dt>리플레이</dt>
<dd>
CSV 또는 XD API 를 데이터소스로 삼아 시계열을 재생하고, 실측 대비 정확도 리포트를
만든다
</dd>
</div>
<div>
<dt>AI Advisor</dt>
<dd>
26개 규칙의 Rule Engine 과 LLM 프로바이더 4종(Anthropic · OpenAI · Gemini ·
로컬 Ollama) 연동
</dd>
</div>
<div>
<dt>모니터링</dt>
<dd>PUE · COP · 전력 · CO₂ 대시보드, MetricsHUD 7섹션 26메트릭</dd>
</div>
<div>
<dt>프로젝트</dt>
<dd>생성·저장·불러오기, 다중 씬, glTF / GLB 3D 모델 임포트</dd>
</div>
</dl>
<div class="keys">
<p class="keys-title">손에 익는 키</p>
<ul>
<li><kbd>Space</kbd> 일시정지 · 재개</li>
<li><kbd>H</kbd> 히트맵</li>
<li><kbd>X</kbd><kbd>Y</kbd><kbd>Z</kbd> 슬라이스 축</li>
<li><kbd>F3</kbd> 성능 통계</li>
<li><kbd>Tab</kbd> UI 접기</li>
</ul>
</div>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════════════════════
7 · 아키텍처 — 라이트. 5계층
══════════════════════════════════════════════════════════ -->
<section class="band band-dark section-arch" id="architecture" aria-labelledby="archHeading">
<div class="wrap">
<h2 id="archHeading">다섯 켜</h2>
<ol class="layers">
<li>
<p class="layer-id mono">L1</p>
<p class="layer-name">애플리케이션</p>
<p class="layer-body">RFS Editor · Simulation3D · AI Advisor · 리플레이</p>
</li>
<li>
<p class="layer-id mono">L2</p>
<p class="layer-name">파이프라인 · 컨트롤러</p>
<p class="layer-body">SimulationPipeline → 스테이지 10개 → 컨트롤러 26개</p>
</li>
<li>
<p class="layer-id mono">L3</p>
<p class="layer-name">GPU 컴퓨트</p>
<p class="layer-body">
SPHCore 8 · DomainExt 14 · SpatialHash 1 · TempGrid 8 · ObjectGrid 7 ·
Integration 5 · Scatter 4 · Trail 2 · GlobalSDF 3 · Coil 1
</p>
</li>
<li>
<p class="layer-id mono">L4</p>
<p class="layer-name">데이터 버퍼</p>
<p class="layer-body">SoA 버퍼 6개 · ParticleData 20B · 충돌 메시 데이터</p>
</li>
<li>
<p class="layer-id mono">L5</p>
<p class="layer-name">외부 통신</p>
<p class="layer-body">Socket.IO v2 (RFS-XD 관제 연동) · REST API · CSV 내보내기</p>
</li>
</ol>
</div>
</section>
<!-- ══════════════════════════════════════════════════════════
8 · 도입 — 라이트. 요구사양과 연락
══════════════════════════════════════════════════════════ -->
<section class="band band-light section-adopt" id="adopt" aria-labelledby="adoptHeading">
<div class="wrap split">
<div class="split-lead">
<h2 id="adoptHeading">돌려 보려면 무엇이 필요한가</h2>
<p class="section-lead">
DirectCompute 를 쓰므로 NVIDIA GPU 를 권장한다. 아래는 개발 저장소가 명시한 값
그대로다.
</p>
</div>
<div class="split-body">
<table class="req">
<caption class="sr-only">RFS 시스템 요구사항 — 최소 사양과 권장 사양</caption>
<thead>
<tr>
<th scope="col">항목</th>
<th scope="col">최소</th>
<th scope="col">권장</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">운영체제</th>
<td>Windows 10 64bit</td>
<td>Windows 11</td>
</tr>
<tr>
<th scope="row">GPU</th>
<td>GTX 1660 · VRAM 6GB</td>
<td>RTX 3060 이상 · VRAM 8GB 이상</td>
</tr>
<tr>
<th scope="row">메모리</th>
<td>16 GB</td>
<td>16 GB 이상</td>
</tr>
<tr>
<th scope="row">엔진</th>
<td colspan="2">Unity 6.4 (6000.4.5f1) · URP 17.2</td>
</tr>
</tbody>
</table>
<div class="adopt-cta">
<p>
도입 검토·기술 문의는 개발사인 트웬티온스로 연락하면 된다.
제품은 독점 소프트웨어이고, 평가판 제공 여부는 협의 사항이다.
</p>
<a class="btn" href="mailto:hello@twentyoz.kr?subject=RFS%20%EB%8F%84%EC%9E%85%20%EB%AC%B8%EC%9D%98">
RFS 도입 문의
</a>
<p class="adopt-fine mono">hello@twentyoz.kr · 070-4353-1190</p>
</div>
</div>
</div>
</section>
</main>
<footer class="band band-dark site-foot">
<div class="wrap foot-inner">
<div>
<p class="foot-name">RFS — Realtime Fluid Simulator</p>
<p class="foot-line">데이터센터 열관리를 위한 실시간 GPU 유체 시뮬레이션 엔진</p>
</div>
<dl class="foot-meta mono">
<div><dt>버전</dt><dd>0.13.0</dd></div>
<div><dt>엔진</dt><dd>Unity 6.4 · URP 17.2</dd></div>
<div><dt>개발</dt><dd>Twentyoz Co., Ltd.</dd></div>
<div><dt>라이선스</dt><dd>Proprietary</dd></div>
</dl>
</div>
<div class="wrap foot-fine">
<p>
이 페이지의 수치는 RFS 개발 저장소의 README 에 적힌 값을 옮긴 것이다.
실측 조건이 붙지 않은 정확도 지표는 싣지 않았다.
</p>
</div>
</footer>
<script src="./scripts/thermal-field.js" defer></script>
</body>
</html>