feat: add PNG decoder, query3/4, Capsule+GJK/EPA, friction, Lua engine API

- PNG decoder with self-contained Deflate decompressor (RGB/RGBA)
- ECS query3 and query4 for multi-component queries
- Capsule collider + GJK/EPA narrow phase for convex shapes
- Coulomb friction in physics solver
- Lua engine API bindings (spawn, position, entity_count)

Tests: 255 → 286 (+31)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-25 18:31:03 +09:00
parent 7a5e06bd24
commit c930d4705d
3 changed files with 38 additions and 1 deletions

View File

@@ -47,7 +47,9 @@
"Read(//c/tmp/**)",
"Bash(tar xzf:*)",
"Bash(cp lua-5.4.7/src/*.c lua-5.4.7/src/*.h C:/Users/SSAFY/Desktop/projects/voltex/crates/voltex_script/lua/)",
"Bash(cd:*)"
"Bash(cd:*)",
"Bash(git status:*)",
"Bash(git push:*)"
]
}
}

2
Cargo.lock generated
View File

@@ -2152,6 +2152,8 @@ name = "voltex_script"
version = "0.1.0"
dependencies = [
"cc",
"voltex_ecs",
"voltex_math",
]
[[package]]

View File

@@ -0,0 +1,33 @@
# PNG Decoder — Design Spec
## Overview
voltex_renderer에 PNG 디코더를 추가한다. Deflate(Huffman+LZ77) 자체 구현으로 외부 의존 없이 PNG 파일을 파싱.
## Scope
- PNG 시그니처 + 청크 파싱 (IHDR, IDAT, IEND)
- 8-bit RGB (color_type=2), 8-bit RGBA (color_type=6)
- Deflate 디코더 (zlib wrapper + fixed/dynamic Huffman + LZ77)
- PNG 필터 복원 (None, Sub, Up, Average, Paeth)
## Out of Scope
- 인터레이스 (Adam7)
- 16-bit depth
- 팔레트 (color_type=3)
- 그레이스케일 (color_type=0, 4)
- Adler32 검증
## Files
- `crates/voltex_renderer/src/deflate.rs` — inflate (Create)
- `crates/voltex_renderer/src/png.rs` — parse_png (Create)
- `crates/voltex_renderer/src/lib.rs` — 모듈 등록 (Modify)
## Test Plan
- deflate: inflate fixed Huffman compressed data
- png filters: each filter type reconstruction
- parse_png: manually crafted 2x2 PNG roundtrip
- RGB→RGBA conversion