From 622c91a95483bac371ecf9e9cd2182d3992719b0 Mon Sep 17 00:00:00 2001 From: tolelom <98kimsungmin@naver.com> Date: Thu, 26 Mar 2026 07:38:37 +0900 Subject: [PATCH] docs: update STATUS.md and DEFERRED.md with all completed deferred items MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test count: 255 → 485. Major additions across all crates: - Renderer: JPG, glTF, ORM/Emissive, CSM, Point/Spot Shadow, Frustum Culling, SH, GPU BRDF - ECS: JSON/Binary scene, ComponentRegistry, query filters, scheduler - Physics: Angular dynamics, Sequential Impulse, Sleep, CCD, BVH refit, ray/triangle - Asset: Async loader, FileWatcher, hot reload - Audio: OGG/Vorbis, 24/32-bit WAV, Doppler - AI: NavMesh builder, Funnel, obstacle avoidance - Net: Reliability, snapshots, interpolation - Script: Table interop, coroutines, sandbox, hot reload - Editor: Text input, scroll, drag & drop Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/DEFERRED.md | 229 ++++++++++++++++++++++++----------------------- docs/STATUS.md | 214 ++++++++++++++++++------------------------- 2 files changed, 202 insertions(+), 241 deletions(-) diff --git a/docs/DEFERRED.md b/docs/DEFERRED.md index 93cffa6..dbcd406 100644 --- a/docs/DEFERRED.md +++ b/docs/DEFERRED.md @@ -2,158 +2,159 @@ ## Phase 2 -- ~~**PNG 디코더 자체 구현**~~ ✅ `png.rs` + `deflate.rs` 구현 완료. -- ~~**JPG 디코더 자체 구현**~~ ✅ `jpg.rs` Baseline JPEG (Huffman/IDCT/MCU/YCbCr) 구현 완료. -- ~~**glTF 파서**~~ ✅ `gltf.rs` + `json_parser.rs` glTF 2.0 / GLB 구현 완료. +- ~~**PNG 디코더 자체 구현**~~ ✅ 완료. +- ~~**JPG 디코더 자체 구현**~~ ✅ Baseline JPEG 완료. +- ~~**glTF 파서**~~ ✅ glTF 2.0 / GLB 완료. - **JPG Progressive** — Baseline만 지원. Progressive JPEG 미구현. -- **glTF 애니메이션/스킨** — 메시+머티리얼만 지원. 애니메이션, 스킨, 카메라, 라이트 확장 미구현. +- **glTF 애니메이션/스킨** — 메시+머티리얼만 지원. ## Phase 3a - **Archetype 기반 스토리지** → SparseSet 사용 중. 대규모 씬에서 성능 이슈 시 전환. -- ~~**시스템 스케줄러**~~ ✅ 순서 기반 Scheduler (System trait + FnMut blanket impl) 구현 완료. -- ~~**쿼리 필터**~~ ✅ query_with/query_without, query2_with/query2_without 구현 완료. Changed 미구현. -- ~~**query3+**~~ ✅ query3, query4 구현 완료. -- **Changed 필터** — 컴포넌트 변경 감지 미구현. 프레임별 dirty flag 필요. -- **의존성 기반 스케줄러** — 순서 기반만 구현. 읽기/쓰기 의존성 자동 정렬/병렬 실행 미구현. +- ~~**시스템 스케줄러**~~ ✅ 순서 기반 Scheduler 완료. +- ~~**쿼리 필터**~~ ✅ With/Without 완료. +- ~~**query3+**~~ ✅ query3, query4 완료. +- **Changed 필터** — 컴포넌트 변경 감지 미구현. +- **의존성 기반 스케줄러** — 읽기/쓰기 의존성 자동 정렬/병렬 실행 미구현. ## Phase 3b -- **JSON 직렬화** → 커스텀 .vscn 텍스트 포맷 사용. -- **바이너리 씬 포맷** — 미구현. -- **임의 컴포넌트 직렬화** — Transform/Parent/Tag만 지원. +- ~~**JSON 직렬화**~~ ✅ serialize_scene_json/deserialize_scene_json 완료. +- ~~**바이너리 씬 포맷**~~ ✅ VSCN 바이너리 포맷 완료. +- ~~**임의 컴포넌트 직렬화**~~ ✅ ComponentRegistry 등록 기반 완료. ## Phase 3c -- **비동기 로딩** — 동기 insert만. -- **핫 리로드** — 파일 변경 감지 미구현. +- ~~**비동기 로딩**~~ ✅ AssetLoader (워커 스레드) 완료. +- ~~**핫 리로드**~~ ✅ FileWatcher (mtime 폴링) + replace_in_place 완료. ## Phase 4a -- **Metallic/Roughness/AO 텍스처 맵** → 파라미터 값만 사용. 텍스처 샘플링 미구현. -- **Emissive 맵** — 미구현. +- ~~**Metallic/Roughness/AO 텍스처 맵**~~ ✅ ORM 텍스처 샘플링 완료. +- ~~**Emissive 맵**~~ ✅ Emissive 텍스처 + 셰이더 완료. ## Phase 4b -- **CSM (Cascaded Shadow Maps)** → 단일 캐스케이드만. 원거리 그림자 해상도 낮음. -- **Point Light Shadow (큐브맵)** — 미구현. -- **Spot Light Shadow** — 미구현. -- **라이트 컬링** — 타일/클러스터 기반 미구현. +- ~~**CSM (Cascaded Shadow Maps)**~~ ✅ 2-캐스케이드 CSM 완료. +- ~~**Point Light Shadow (큐브맵)**~~ ✅ 큐브맵 depth + 6면 렌더링 완료. +- ~~**Spot Light Shadow**~~ ✅ Perspective shadow map 완료. +- ~~**라이트 컬링**~~ ✅ CPU 프러스텀 컬링 완료. ## Phase 4c -- **HDR 큐브맵 환경맵** → 프로시저럴 sky 함수로 대체. -- **Irradiance/Prefiltered Map 컨볼루션** → 프로시저럴 근사. -- **GPU 컴퓨트 BRDF LUT** → CPU 생성 (256x256). +- ~~**HDR 큐브맵 환경맵**~~ → 프로시저럴 Hosek-Wilkie sky로 대체 완료. +- ~~**Irradiance/Prefiltered Map 컨볼루션**~~ ✅ SH Irradiance (L2, 9계수) 완료. +- ~~**GPU 컴퓨트 BRDF LUT**~~ ✅ 컴퓨트 셰이더 Rg16Float 완료. ## Phase 5-1 -- ~~**Capsule, Convex Hull 콜라이더**~~ ✅ Capsule + GJK/EPA 구현 완료. Convex Hull은 미구현. +- ~~**Capsule, Convex Hull 콜라이더**~~ ✅ Capsule + GJK/EPA 완료. **Convex Hull 미구현.** - ~~**OBB (회전된 박스) 충돌**~~ ✅ GJK/EPA로 대체 완료. -- **Incremental BVH 업데이트** — 매 프레임 전체 rebuild. 성능 이슈 시 incremental update 적용. -- **연속 충돌 감지 (CCD)** — 이산 충돌만. 빠른 물체의 터널링 미처리. +- ~~**Incremental BVH 업데이트**~~ ✅ refit() 완료. +- ~~**연속 충돌 감지 (CCD)**~~ ✅ swept_sphere_vs_aabb 완료. ## Phase 5-2 -- **각속도/회전 물리** — angular_velocity 필드만 존재, 적분 미구현. 관성 텐서 필요. -- ~~**마찰 (Coulomb)**~~ ✅ Coulomb friction 구현 완료. -- **Sequential Impulse 솔버** — 단일 반복 충돌 응답만. 다중 물체 쌓기 불안정. -- **Sleep/Island 시스템** — 정지 물체 최적화 미구현. +- ~~**각속도/회전 물리**~~ ✅ 관성 텐서 + angular velocity 적분 완료. +- ~~**마찰 (Coulomb)**~~ ✅ 완료. +- ~~**Sequential Impulse 솔버**~~ ✅ N회 반복 솔버 완료. +- ~~**Sleep/Island 시스템**~~ ✅ velocity threshold + timer 완료. ## Phase 5-3 -- **Ray vs Plane, Triangle, Mesh** — 콜라이더 기반만 지원. 메시 레벨 레이캐스트 미구현. -- **raycast_all (다중 hit)** — 가장 가까운 hit만 반환. -- **BVH 조기 종료 최적화** — 모든 리프 검사 후 최소 t 선택. front-to-back 순회 미구현. +- ~~**Ray vs Triangle**~~ ✅ Möller–Trumbore 완료. +- **Ray vs Plane, Mesh** — 삼각형 단위만 지원. 전체 메시 순회 레이캐스트 미구현. +- ~~**raycast_all (다중 hit)**~~ ✅ 거리순 정렬 완료. +- ~~**BVH 조기 종료 최적화**~~ ✅ 재귀 트리 순회 + query_ray 완료. + +## Phase 6-1 + +- **macOS/Linux 백엔드** — WASAPI(Windows)만 구현. +- ~~**OGG/Vorbis 디코더**~~ ✅ OGG 컨테이너 + Vorbis 디코더 완료. +- ~~**24-bit/32-bit WAV**~~ ✅ 완료. +- **ECS 통합** — AudioSource 컴포넌트 미구현. +- **비동기 로딩** — 동기 로딩만. + +## Phase 6-2 + +- ~~**도플러 효과**~~ ✅ doppler_shift 완료. +- **HRTF** — 미구현. +- **Reverb/Echo** — 미구현. +- **Occlusion** — 미구현. + +## Phase 6-3 + +- **동적 그룹 생성** — 고정 4개만. +- **그룹 간 라우팅/버스** — 미구현. +- **이펙트 체인** — Reverb, EQ 등 미구현. +- **비선형 페이드 커브** — 선형 페이드만. + +## Phase 7-1 + +- **투명 오브젝트** — 디퍼드에서 처리 불가. 별도 포워드 패스 필요. +- **G-Buffer 압축** — 미적용. +- **Light Volumes** — 풀스크린 라이팅만. +- **Stencil 최적화** — 미구현. + +## Phase 7-2 + +- **Bilateral Blur** — SSGI 노이즈 제거 블러 미구현. +- **반해상도 렌더링** — 풀 해상도 SSGI. +- **Temporal Accumulation** — 미구현. +- **Light Probes** — 미구현. + +## Phase 7-3 + +- **RT Reflections** — 미구현. +- **RT AO** — 미구현. +- **Point/Spot Light RT shadows** — Directional만 구현. +- **Soft RT shadows** — 단일 ray만. +- **BLAS 업데이트** — 정적 지오메트리만. +- **Fallback** — RT 미지원 GPU 폴백 미구현. + +## Phase 7-4 + +- **TAA** — 미구현. +- **SSR** — 미구현. +- **Motion Blur, DOF** — 미구현. +- **Auto Exposure** — 고정 exposure만. +- **Bilateral Bloom Blur** — 단순 tent filter. + +## Phase 8-1 + +- ~~**자동 내비메시 생성**~~ ✅ 복셀화 기반 NavMeshBuilder 완료. +- ~~**String Pulling (Funnel)**~~ ✅ SSF 알고리즘 완료. +- ~~**동적 장애물 회피**~~ ✅ velocity obstacle 기반 완료. +- **ECS 통합** — AI 컴포넌트 미구현. +- **내비메시 직렬화** — 미구현. + +## Phase 8-2 + +- ~~**상태 동기화 (스냅샷)**~~ ✅ Snapshot + delta 압축 완료. +- ~~**보간 / 예측**~~ ✅ InterpolationBuffer 완료. +- **지연 보상** — 미구현. +- ~~**신뢰성 계층**~~ ✅ ReliableChannel + OrderedChannel 완료. +- **암호화 / 인증** — 미구현. + +## Phase 8-3 + +- ~~**핫 리로드**~~ ✅ reload_file 완료. +- ~~**엔진 API 노출**~~ ✅ 기본 API (spawn, position, entity_count, velocity, rotation, scale, destroy, find_by_tag) 완료. +- ~~**Lua 테이블 ↔ Rust 구조체**~~ ✅ push_table/read_table/push_vec3/read_vec3 완료. +- ~~**코루틴**~~ ✅ LuaCoroutine (create/resume/is_finished) 완료. +- ~~**샌드박싱**~~ ✅ os/io/loadfile/dofile/require 차단 완료. ## Phase 8-4 - **씬 뷰포트** — 3D 렌더러 임베드 미구현. - **엔티티 인스펙터** — ECS 컴포넌트 편집 미구현. - **에셋 브라우저** — 파일 시스템 탐색 미구현. -- **텍스트 입력** — 키보드 → 문자열 입력 미구현. -- **스크롤, 드래그앤드롭** — 미구현. +- ~~**텍스트 입력**~~ ✅ text_input 위젯 완료. +- ~~**스크롤, 드래그앤드롭**~~ ✅ scroll_panel + drag/drop 완료. - **도킹, 탭, 윈도우 드래그** — 미구현. -- **TTF 폰트** — 비트맵 고정폭만. 가변 크기 미지원. - -## Phase 8-3 - -- **핫 리로드** — 파일 변경 감지 + Lua state 재로드 미구현. -- ~~**엔진 API 노출**~~ ✅ 기본 엔진 API (spawn, position, entity_count) Lua 바인딩 구현 완료. 물리/오디오 API는 미구현. -- **Lua 테이블 ↔ Rust 구조체** — 복잡한 데이터 변환 미구현. -- **코루틴** — Lua 코루틴 래핑 미구현. -- **샌드박싱** — Lua 보안 제한 미구현. - -## Phase 8-2 - -- **상태 동기화 (스냅샷)** — 미구현. 서버→클라이언트 월드 상태 전송. -- **보간 / 예측** — 미구현. 클라이언트 측 스무딩. -- **지연 보상** — 미구현. 서버 측 히트 판정 보정. -- **신뢰성 계층** — 미구현. 패킷 재전송, 순서 보장. -- **암호화 / 인증** — 미구현. - -## Phase 8-1 - -- **자동 내비메시 생성** — Recast 스타일 복셀화 미구현. 수동 정의만. -- **String Pulling (Funnel)** — 삼각형 중심점 경로만. 최적 경로 스무딩 미구현. -- **동적 장애물 회피** — 정적 내비메시만. 런타임 장애물 미처리. -- **ECS 통합** — AI 컴포넌트 미구현. 함수 직접 호출. -- **내비메시 직렬화** — 미구현. - -## Phase 7-4 - -- **TAA** — Temporal Anti-Aliasing 미구현. Motion vector 필요. -- **SSR** — Screen-Space Reflections 미구현. -- **Motion Blur, DOF** — 미구현. -- **Auto Exposure** — 고정 exposure만. 적응형 노출 미구현. -- **Bilateral Bloom Blur** — 단순 box/tent filter. Kawase blur 미적용. - -## Phase 7-3 - -- **RT Reflections** — 미구현. BLAS/TLAS 인프라 재사용 가능. -- **RT AO** — 미구현. -- **Point/Spot Light RT shadows** — Directional만 구현. -- **Soft RT shadows** — 단일 ray만. Multi-ray soft shadow 미구현. -- **BLAS 업데이트** — 정적 지오메트리만. 동적 메시 변경 시 BLAS 재빌드 필요. -- **Fallback** — RT 미지원 GPU에서 자동 PCF 폴백 미구현. - -## Phase 7-2 - -- **Bilateral Blur** — SSGI 노이즈 제거 블러 미구현. 4x4 노이즈 타일링만. -- **반해상도 렌더링** — 풀 해상도에서 SSGI 실행. 성능 최적화 미적용. -- **Temporal Accumulation** — 프레임 간 누적 미구현. 매 프레임 독립 계산. -- **Light Probes** — 베이크 기반 GI 미구현. - -## Phase 7-1 - -- **투명 오브젝트** — 디퍼드에서 처리 불가. 별도 포워드 패스 필요. -- **G-Buffer 압축** — Position을 depth에서 복원, Normal을 octahedral 인코딩 등 미적용. -- **Light Volumes** — 풀스크린 라이팅만. 라이트별 sphere/cone 렌더 미구현. -- **Stencil 최적화** — 미구현. - -## Phase 6-3 - -- **동적 그룹 생성** — 고정 4개(Master/Bgm/Sfx/Voice)만. 런타임 추가 불가. -- **그룹 간 라우팅/버스** — 미구현. 단순 Master → 개별 그룹 구조만. -- **이펙트 체인** — Reverb, EQ 등 미구현. -- **비선형 페이드 커브** — 선형 페이드만. - -## Phase 6-2 - -- **도플러 효과** — 미구현. 상대 속도 기반 주파수 변조. -- **HRTF** — 미구현. 헤드폰용 3D 정위. -- **Reverb/Echo** — 미구현. 환경 반사음. -- **Occlusion** — 미구현. 벽 뒤 소리 차단. - -## Phase 6-1 - -- **macOS/Linux 백엔드** — WASAPI(Windows)만 구현. CoreAudio, ALSA 미구현. -- **OGG/Vorbis 디코더** — WAV PCM 16-bit만 지원. -- **24-bit/32-bit WAV** — 16-bit만 파싱. -- **ECS 통합** — AudioSource 컴포넌트 미구현. AudioSystem 직접 호출. -- **비동기 로딩** — 동기 로딩만. +- **TTF 폰트** — 비트맵 고정폭만. ## 렌더링 한계 - **per-entity dynamic UBO** — 수천 개 이상은 인스턴싱 필요. -- **max_bind_groups=4** — IBL을 shadow group에 합쳐서 해결. 추가 group 필요 시 리소스 합치거나 bindless 활용. +- **max_bind_groups=4** — 리소스 합치기로 해결 중. diff --git a/docs/STATUS.md b/docs/STATUS.md index abe8127..1ea1795 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -9,7 +9,7 @@ - examples/triangle ### Phase 2: Rendering Basics -- voltex_math: Vec2, Vec4, Mat4 (transforms, look_at, perspective, orthographic) +- voltex_math: Vec2, Vec4, Mat4 (transforms, look_at, perspective, orthographic, inverse) - voltex_renderer: MeshVertex(+tangent), Mesh, depth buffer, OBJ parser, Camera, FpsController - voltex_renderer: Blinn-Phong shader, BMP texture loader, GpuTexture - voltex_renderer: PNG decoder (deflate + filter reconstruction) @@ -24,182 +24,142 @@ - voltex_ecs: System trait, Scheduler (ordered execution) - examples/many_cubes (400 entities, dynamic UBO) -### Phase 3b: Scene Graph +### Phase 3b: Scene Graph + Serialization - voltex_ecs: Parent/Children hierarchy, add_child/remove_child/despawn_recursive - voltex_ecs: WorldTransform propagation (top-down) -- voltex_ecs: Scene serialization (.vscn text format), Tag component +- voltex_ecs: Scene serialization (.vscn text, JSON, binary VSCN format), Tag component +- voltex_ecs: ComponentRegistry (등록 기반 임의 컴포넌트 직렬화) +- voltex_ecs: Mini JSON writer/parser (자체 구현) - examples/hierarchy_demo (solar system) ### Phase 3c: Asset Manager - voltex_asset: Handle(generation), AssetStorage(ref counting), Assets(type-erased) +- voltex_asset: AssetLoader (워커 스레드 비동기 로딩, LoadState) +- voltex_asset: FileWatcher (mtime 폴링 변경 감지), replace_in_place (핫 리로드) - examples/asset_demo ### Phase 4a: PBR Rendering - voltex_renderer: MaterialUniform (base_color, metallic, roughness, ao) - voltex_renderer: Cook-Torrance BRDF shader (GGX NDF + Smith geometry + Fresnel-Schlick) +- voltex_renderer: ORM 텍스처 맵 (AO/Roughness/Metallic) + Emissive 텍스처 +- voltex_renderer: Full PBR texture layout (8 bindings: albedo+normal+ORM+emissive) - voltex_renderer: Procedural UV sphere generator -- voltex_renderer: PBR pipeline (3→4 bind groups) - examples/pbr_demo (7x7 metallic/roughness sphere grid) -### Phase 4b-1: Multi-Light +### Phase 4b: Lighting + Shadows - voltex_renderer: LightData (Directional/Point/Spot), LightsUniform (MAX_LIGHTS=16) -- PBR shader: multi-light loop, point attenuation, spot cone falloff -- examples/multi_light_demo (orbiting colored point lights) - -### Phase 4b-2: Shadow Mapping -- voltex_renderer: ShadowMap (2048x2048 depth), ShadowUniform, ShadowPassUniform -- Shadow depth-only shader + pipeline (front-face cull, depth bias) -- PBR shader: shadow map sampling + 3x3 PCF -- examples/shadow_demo (directional light shadows) +- voltex_renderer: ShadowMap (2048x2048, 3x3 PCF) +- voltex_renderer: CascadedShadowMap (2 캐스케이드, 프러스텀 분할) +- voltex_renderer: PointShadowMap (큐브맵 6면), SpotShadowMap (perspective) +- voltex_renderer: Frustum 라이트 컬링 (Gribb-Hartmann, sphere vs 6 planes) +- examples/shadow_demo, multi_light_demo ### Phase 4c: Normal Map + IBL -- MeshVertex: tangent[4] added, computed in OBJ parser + sphere generator -- voltex_renderer: BRDF LUT (CPU Monte Carlo, 256x256), IblResources -- PBR shader: TBN normal mapping, procedural sky IBL, split-sum approximation -- Texture bind group: albedo + normal map (pbr_texture_bind_group_layout) -- IBL merged into shadow bind group (group 3) due to max_bind_groups=4 +- voltex_renderer: TBN normal mapping, Hosek-Wilkie procedural sky +- voltex_renderer: SH Irradiance (L2, 9계수, CPU 계산, 셰이더 평가) +- voltex_renderer: GPU Compute BRDF LUT (Rg16Float, 컴퓨트 셰이더) +- voltex_renderer: SkyParams (sun_direction, turbidity) - examples/ibl_demo ### Phase 5-1: Collision Detection -- voltex_math: AABB type (new, from_center_half_extents, intersects, merged, surface_area) -- voltex_physics: Collider enum (Sphere, Box), ContactPoint -- voltex_physics: BVH broad phase (median split, longest axis) -- voltex_physics: Narrow phase — sphere_vs_sphere, sphere_vs_box, box_vs_box (SAT) +- voltex_math: AABB, Ray +- voltex_physics: Collider (Sphere, Box, Capsule), ContactPoint, GJK/EPA +- voltex_physics: BVH (재귀 트리 순회, query_ray, refit incremental) - voltex_physics: detect_collisions(world) ECS integration ### Phase 5-2: Rigid Body Simulation -- voltex_physics: RigidBody (mass, velocity, restitution), PhysicsConfig -- voltex_physics: Semi-implicit Euler integration -- voltex_physics: Impulse-based collision response + positional correction (Baumgarte) -- voltex_physics: physics_step (integrate → detect → resolve) +- voltex_physics: RigidBody (mass, velocity, angular_velocity, friction, sleep) +- voltex_physics: Semi-implicit Euler (linear + angular, 관성 텐서) +- voltex_physics: Sequential Impulse solver (N회 반복, angular impulse) +- voltex_physics: Sleep/Island (velocity threshold + timer) +- voltex_physics: CCD (swept_sphere_vs_aabb) ### Phase 5-3: Raycasting -- voltex_math: Ray type (origin, direction, at) -- voltex_physics: ray_vs_aabb, ray_vs_sphere, ray_vs_box -- voltex_physics: raycast(world, ray, max_dist) BVH-accelerated ECS integration +- voltex_physics: ray_vs_aabb, ray_vs_sphere, ray_vs_box, ray_vs_capsule, ray_vs_triangle +- voltex_physics: raycast (closest hit), raycast_all (다중 hit, 거리순) +- voltex_physics: BVH-accelerated query_ray ### Phase 6-1: Audio System Foundation -- voltex_audio: WAV parser (PCM 16-bit, mono/stereo) -- voltex_audio: AudioClip (f32 samples), mixing (volume, looping, channel conversion) -- voltex_audio: WASAPI backend (Windows, shared mode, COM FFI) -- voltex_audio: AudioSystem (channel-based audio thread, play/stop/volume) -- examples/audio_demo (sine wave playback) +- voltex_audio: WAV parser (PCM 16/24/32-bit, mono/stereo) +- voltex_audio: OGG/Vorbis decoder (자체 구현) +- voltex_audio: AudioClip, mixing, WASAPI backend, AudioSystem +- examples/audio_demo ### Phase 6-2: 3D Audio -- voltex_audio: Listener, SpatialParams -- voltex_audio: distance_attenuation (inverse distance), stereo_pan (equal-power) -- voltex_audio: mix_sounds spatial integration (per-sound attenuation + panning) -- voltex_audio: play_3d, set_listener API +- voltex_audio: distance_attenuation, stereo_pan, play_3d, set_listener +- voltex_audio: Doppler effect (doppler_shift) ### Phase 6-3: Mixer -- voltex_audio: MixGroup (Master, Bgm, Sfx, Voice), MixerState -- voltex_audio: GroupState with linear fade (tick-based) -- voltex_audio: effective_volume (group * master) -- voltex_audio: set_group_volume, fade_group API +- voltex_audio: MixGroup (Master/Bgm/Sfx/Voice), fade, effective_volume -### Phase 7-1: Deferred Rendering -- voltex_renderer: GBuffer (4 MRT: Position/Normal/Albedo/Material + Depth) -- voltex_renderer: G-Buffer pass shader (MRT output, TBN normal mapping) -- voltex_renderer: Lighting pass shader (fullscreen triangle, Cook-Torrance BRDF, multi-light, shadow, IBL) -- voltex_renderer: Deferred pipeline (gbuffer + lighting bind group layouts) -- examples/deferred_demo (5x5 sphere grid + 8 orbiting point lights) - -### Phase 7-2: SSGI (Screen-Space Global Illumination) -- voltex_renderer: SsgiResources (hemisphere kernel 64 samples, 4x4 noise, output texture) -- voltex_renderer: SSGI shader (SSAO + color bleeding in one fullscreen pass) -- voltex_renderer: SSGI pipeline + bind group layouts -- voltex_renderer: Lighting pass SSGI integration (ambient * ssgi_ao + indirect) -- deferred_demo updated with 3-pass rendering (GBuffer → SSGI → Lighting) - -### Phase 7-3: RT Shadows (Hardware Ray Tracing) -- voltex_renderer: RtAccel (BLAS/TLAS acceleration structure management) -- voltex_renderer: RT Shadow compute shader (ray query, directional light) -- voltex_renderer: RT shadow pipeline + bind group layouts -- voltex_renderer: Lighting pass RT shadow integration -- deferred_demo updated with hardware RT shadows (4-pass: GBuffer → SSGI → RT Shadow → Lighting) - -### Phase 7-4: Post Processing (HDR + Bloom + ACES) -- voltex_renderer: HdrTarget (Rgba16Float), Lighting → HDR output -- voltex_renderer: BloomResources (5-level mip chain, downsample/upsample) -- voltex_renderer: Bloom shader (bright extract + tent filter upsample) -- voltex_renderer: Tonemap shader (ACES filmic + bloom merge + gamma) -- deferred_demo updated with full post-processing (7 passes) +### Phase 7-1~7-4: Advanced Rendering +- Deferred rendering (G-Buffer 4 MRT + Lighting pass) +- SSGI (SSAO + color bleeding) +- RT Shadows (BLAS/TLAS, compute shader ray query) +- Post Processing (HDR + Bloom + ACES tonemap) ### Phase 8-1: AI System -- voltex_ai: NavMesh (manual triangle mesh, find_triangle, edge/center queries) -- voltex_ai: A* pathfinding on triangle graph (center-point path) -- voltex_ai: Steering behaviors (seek, flee, arrive, wander, follow_path) +- voltex_ai: NavMesh (manual + auto builder via voxelization) +- voltex_ai: A* pathfinding + Funnel algorithm (String Pulling) +- voltex_ai: Steering behaviors + Dynamic obstacle avoidance -### Phase 8-4: Immediate Mode UI (Editor Foundation) -- voltex_editor: FontAtlas (8x12 비트맵 ASCII, 코드 생성) -- voltex_editor: DrawList (정점/인덱스/커맨드), DrawVertex (Unorm8x4 color) -- voltex_editor: UiContext (IMGUI 상태, hot/active, 커서 레이아웃) -- voltex_editor: Widgets (text, button, slider, checkbox, panel) -- voltex_editor: UiRenderer (wgpu 2D pipeline, alpha blending, orthographic) -- examples/editor_demo (IMGUI 위젯 데모) +### Phase 8-2: Networking +- voltex_net: Packet protocol, UDP socket, NetServer/NetClient +- voltex_net: ReliableChannel (sequence, ACK, retransmission, RTT) +- voltex_net: OrderedChannel (in-order delivery) +- voltex_net: Snapshot serialization + delta compression +- voltex_net: InterpolationBuffer (client-side linear interpolation) ### Phase 8-3: Lua Scripting -- voltex_script: Lua 5.4 내장 빌드 (cc crate) -- voltex_script: Lua C API FFI 바인딩 -- voltex_script: LuaState 안전 래퍼 (exec, exec_file, register_fn, globals) -- voltex_script: 기본 바인딩 (voltex_print) +- voltex_script: Lua 5.4 내장 빌드, FFI 바인딩 +- voltex_script: LuaState (exec, register_fn, push_table/read_table, push_vec3/read_vec3) +- voltex_script: LuaCoroutine (create/resume), Sandbox (os/io 차단) +- voltex_script: Hot reload (reload_file), Engine API (spawn, position, velocity, rotation, scale, destroy, find_by_tag) -### Phase 8-2: Networking Foundation -- voltex_net: Packet protocol (Connect, Accept, Disconnect, Ping, Pong, UserData) -- voltex_net: Binary serialization/deserialization -- voltex_net: Non-blocking UDP socket wrapper -- voltex_net: NetServer (client management, broadcast) -- voltex_net: NetClient (server connection, handshake) +### Phase 8-4: Immediate Mode UI (Editor) +- voltex_editor: FontAtlas (8x12 bitmap ASCII) +- voltex_editor: DrawList, UiContext, UiRenderer +- voltex_editor: Widgets (text, button, slider, checkbox, panel, text_input, scroll_panel) +- voltex_editor: Drag and Drop (begin_drag, drop_target) +- examples/editor_demo ## Crate 구조 ``` crates/ -├── voltex_math — Vec2, Vec3, Vec4, Mat4, AABB, Ray +├── voltex_math — Vec2, Vec3, Vec4, Mat4(+inverse), AABB, Ray ├── voltex_platform — VoltexWindow, InputState, GameTimer -├── voltex_renderer — GPU, Mesh, OBJ, Camera, Material, PBR, Shadow, IBL, Sphere -├── voltex_ecs — Entity, SparseSet, World, Transform, Hierarchy, Scene, WorldTransform -├── voltex_asset — Handle, AssetStorage, Assets -├── voltex_physics — Collider, ContactPoint, BvhTree, RigidBody, detect_collisions, physics_step, raycast -├── voltex_audio — AudioClip, WAV parser, mixing, WASAPI backend, AudioSystem, MixGroup, spatial -├── voltex_ai — NavMesh, A* pathfinding, steering behaviors -├── voltex_net — UDP packets, NetServer, NetClient -├── voltex_script — Lua 5.4 FFI, LuaState, scripting bindings -└── voltex_editor — IMGUI framework, UiRenderer, widgets +├── voltex_renderer — GPU, Mesh, OBJ, glTF, JPG, PNG, Camera, PBR, Shadow(CSM/Point/Spot), IBL(SH), Frustum +├── voltex_ecs — Entity, SparseSet, World, Transform, Hierarchy, Scene(JSON/Binary), Scheduler +├── voltex_asset — Handle, AssetStorage, Assets, AssetLoader, FileWatcher +├── voltex_physics — Collider, GJK/EPA, BVH(refit), RigidBody(angular+sleep), CCD, raycast_all +├── voltex_audio — WAV(16/24/32), OGG/Vorbis, mixing, WASAPI, Doppler, MixGroup, spatial +├── voltex_ai — NavMesh(+builder), A*, Funnel, steering, obstacle avoidance +├── voltex_net — UDP, NetServer/Client, Reliable/Ordered, Snapshot(delta), Interpolation +├── voltex_script — Lua 5.4, LuaState, table interop, coroutine, sandbox, hot reload +└── voltex_editor — IMGUI, text_input, scroll, drag&drop, UiRenderer ``` -## 테스트: 324개 전부 통과 +## 테스트: 485개 전부 통과 -- voltex_asset: 14 -- voltex_audio: 35 (audio_clip 2 + wav 5 + mixing 11 + audio_system 2 + spatial 8 + mix_group 7) -- voltex_ecs: 50 (world 16 + sparse_set 8 + hierarchy 5 + scene 4 + world_transform 4 + entity 4 + transform 2 + scheduler 4 + query filter 3) -- voltex_math: 37 (29 + AABB 6 + Ray 2) -- voltex_physics: 64 (collider 2 + narrow 11 + bvh 5 + collision 7 + rigid_body 3 + integrator 3 + solver 5 + ray 10 + raycast 6 + gjk 12) +- voltex_math: 37 - voltex_platform: 3 -- voltex_ai: 15 (navmesh 4 + pathfinding 5 + steering 6) -- voltex_net: 8 (packet 7 + integration 1) -- voltex_script: 11 (state 8 + bindings 1 + engine_api 2) -- voltex_editor: 10 (font 2 + draw_list 3 + widgets 3 + layout 1 + renderer 1) -- voltex_renderer: 77 (20 + SSGI 3 + RT 3 + bloom 3 + tonemap 4 + png 10 + jpg 11 + json_parser 10 + gltf 8 + deflate 5) +- voltex_ecs: 83 +- voltex_asset: 22 +- voltex_renderer: 102 +- voltex_physics: 96 +- voltex_audio: 42 +- voltex_ai: 24 +- voltex_net: 36 +- voltex_script: 18 +- voltex_editor: 22 -## Examples (12개) +## Examples (12개 + survivor_game) -- triangle — Phase 1 삼각형 -- model_viewer — OBJ 큐브 + Blinn-Phong -- many_cubes — 400 ECS 엔티티 렌더링 -- hierarchy_demo — 태양계 씬 그래프 -- asset_demo — Handle 기반 에셋 관리 -- pbr_demo — metallic/roughness 구체 그리드 -- multi_light_demo — 다중 색상 라이트 -- shadow_demo — Directional Light 그림자 -- ibl_demo — Normal map + IBL -- audio_demo — 사인파 오디오 재생 -- deferred_demo — 디퍼드 렌더링 + 다중 포인트 라이트 -- editor_demo — IMGUI 위젯 데모 - -## 전체 완료! - -스펙 참조: `docs/superpowers/specs/2026-03-24-voltex-engine-design.md` +- triangle, model_viewer, many_cubes, hierarchy_demo, asset_demo +- pbr_demo, multi_light_demo, shadow_demo, ibl_demo +- audio_demo, deferred_demo, editor_demo +- survivor_game (완성 게임) ## 간소화/미뤄진 항목