Commit Graph
47 Commits
Author SHA1 Message Date
西风逍遥游 3c21fe396a Merge pull request #312 from EVEngine/codex/pixelworld-noita-tech-route
feat(pixelworld): add deterministic Noita-style simulation stack
2026-08-31 23:01:41 +08:00
sunxfancy e58999aeae docs(graphics): document shader reload bindings 2026-08-31 17:55:58 +08:00
西风逍遥游 8ccfd5ecbe feat(pixelworld): add deterministic Noita-style simulation stack 2026-08-31 17:55:05 +08:00
西风逍遥游 796a492306 docs(graphics): document virtual texture bindings 2026-08-31 09:34:41 +08:00
西风逍遥游 79415f69d3 Merge branch 'dev' into codex/classic-rendering-chain 2026-08-31 08:45:15 +08:00
西风逍遥游 64d7e3b709 docs(graphics): restore reflection binding index 2026-08-31 00:50:33 +08:00
西风逍遥游 3072d6fa07 feat(avatar): add layered equipment rendering 2026-08-30 23:44:09 +08:00
西风逍遥游 ee53bc1922 docs(graphics): list tint observation bindings explicitly 2026-08-30 21:32:08 +08:00
西风逍遥游 67ff5d320e feat(devtools): add evidence-gated agent game development workflow 2026-08-30 21:32:08 +08:00
西风逍遥游 85ee6d2e4b Merge pull request #295 from EVEngine/codex/reduce-ci-conflict-hotspots
build: reduce shared manifest conflict hotspots
2026-08-30 21:29:05 +08:00
西风逍遥游 fbd6ef14b6 build: reduce shared manifest conflict hotspots 2026-08-30 16:00:46 +08:00
西风逍遥游 ab081e0853 docs: document UV painting bindings 2026-08-30 10:37:42 +08:00
西风逍遥游 8832b56d54 Merge pull request #283 from EVEngine/codex/procgen-dungeon-assets
feat(procgen): add configurable dressed dungeon generation
2026-08-29 02:35:34 +08:00
sunxfancy 3a80a1febe fix(ci): harden dungeon generation across profiles 2026-08-28 21:56:17 +08:00
西风逍遥游 c70245c9e4 feat(graphics): add stateless drawText API 2026-08-28 20:45:42 +08:00
西风逍遥游 3c6292e0d1 docs: document procedural terrain bindings 2026-08-26 07:40:20 +08:00
西风逍遥游 53303b520d Merge remote-tracking branch 'origin/dev' into codex/unity-editor 2026-08-25 11:22:50 +08:00
西风逍遥游 aec857d8ac Merge pull request #235 from EVEngine/codex/bush-fog-volumes
feat(graphics): add procedural bush fog volume example
2026-08-25 11:19:11 +08:00
西风逍遥游 b33e4e58b9 feat(editor): add composable workspace SDK example 2026-08-25 06:09:09 +08:00
西风逍遥游 99b08f31a6 feat(graphics): add procedural bush fog volume example 2026-08-25 02:05:49 +08:00
西风逍遥游 e2d6937191 refactor: remove redundant compatibility code 2026-08-24 23:41:33 +08:00
西风逍遥游 fb8390e006 Merge pull request #220 from EVEngine/codex/card-presentation-3d-api
feat(card): add presentation bridge APIs
2026-08-24 18:32:31 +08:00
西风逍遥游 29e3669fcf Merge pull request #219 from EVEngine/codex/transparency-rendering
feat(graphics): unify transparent rendering
2026-08-24 18:32:18 +08:00
西风逍遥游 82f841bda1 docs: cover card presentation bindings 2026-08-24 17:10:21 +08:00
西风逍遥游 7b8aad6c51 docs: document transparency bindings 2026-08-24 17:05:48 +08:00
西风逍遥游 611fb81736 fix(ci): document atmosphere bindings and tests 2026-08-24 16:01:49 +08:00
西风逍遥游 8b972b6a59 Merge remote-tracking branch 'origin/dev' into codex/sprite-animation-production-api
# Conflicts:
#	src/modules/graphics/Graphics.cpp
2026-08-24 13:47:29 +08:00
西风逍遥游 b44a66e095 docs: list new sprite animation bindings 2026-08-24 13:45:04 +08:00
西风逍遥游 d8536263f8 Merge pull request #215 from EVEngine/codex/weather-daynight-living-sky 2026-08-24 13:26:59 +08:00
西风逍遥游 6887ae6d91 feat(animation): add production sprite sequence workflow 2026-08-24 12:39:59 +08:00
西风逍遥游 6d2147f051 docs(graphics): document rotated texture binding 2026-08-24 10:45:41 +08:00
西风逍遥游 8723501487 docs: document weather integration bindings 2026-08-24 10:33:27 +08:00
sunxfancy 4e53fc7c1f docs(graphics): document volumetric cloud bindings 2026-08-23 16:38:54 +08:00
西风逍遥游 c65daede2e feat(animation): script-playable skeletal animation via AnimSkin writeback
AnimSkin can now write CPU-skinning results back to the render mesh so skeletal animation actually plays from scripts:
- capture bind normals at fromModel and skin them per pose (updateSkinnedNormals / getSkinnedNormals, cofactor inverse-transpose + normalize)
- packed getSkinnedPositions() array getter, matching AnimLattice's script pattern
- one-call applyToMesh(gfx, mesh, pose): skin positions+normals then in-place gpu.updateMeshVertices
- Renderable3D.getMesh() script binding so createRenderable meshes are reachable
- Mesh::gpuVertexCount so getVertexCount() is correct for non-morph meshes (both backends)
- tests: packed positions == skinPositionsTo, normals follow pose and stay unit length, applyToMesh render test with in-place updates
- docs: animation/graphics user guides + design spec
2026-08-23 14:24:11 +08:00
西风逍遥游 7437224c90 api(graphics): align C++/script names, validate sampler strings, document error contracts
- Add RGBA-float drawSolidRect/drawTexturedRect overloads so the C++ names
  match the script-facing API (script already bound those names).
- Add string-based setTextureSampler(Texture*, filter, mipmap, aniso, lodBias)
  overload with strict magic-string validation (unknown filter/mipmap now
  throws instead of silently falling back to linear); keep
  setTextureSamplerParams as a deprecated alias. Script binding now targets
  the overload with an explicit cast.
- Document error contracts: DataModule encode/decode (new[] ownership +
  throws), Filesystem setSource/mount/unmount (false on recoverable failure,
  no throw), ModelData getMesh vs numeric getters (nullptr vs throw), plus a
  two-state error-semantics section in API-CONVENTIONS.md.
- Tests: TextureSampler string validation (valid + deprecated alias + typo
  throws), headless test now exercises the RGBA-float overloads.
2026-08-22 02:30:12 +08:00
西风逍遥游 6adfc8086c feat(graphics): implement hardware MSAA support for 3D scene color pass
- Added functionality to enable hardware MSAA (2x, 4x, 8x) for the 3D scene color pass, enhancing edge quality for 3D models and voxels.
- Introduced `setMsaaSamples` and `getMsaaSamples` methods in the Graphics API to control MSAA sample count.
- Updated RenderControl to include MSAA as a feature, with default settings for enabling/disabling.
- Modified the rendering pipeline to accommodate MSAA, including adjustments to render passes and framebuffers.
- Enhanced documentation and tests to cover new MSAA functionality and ensure stability across various scenarios.
2026-08-14 10:15:07 +08:00
西风逍遥游 2e32afd71b feat(graphics): enhance rendering capabilities with 3D pipeline and ambient occlusion
- Added a new 3D rendering pipeline section in the documentation, detailing initialization, VKBuilder, and asynchronous frame handling.
- Updated the Ambient Occlusion module to support depth-based sampling, allowing for improved visual fidelity in 3D scenes.
- Introduced new shader functionalities for ambient occlusion and global illumination, enhancing the overall rendering quality.
- Updated GBuffer to include hardware depth texture for more accurate depth sampling in 3D rendering.
- Enhanced the RenderControl to manage new features for ambient occlusion and global illumination, ensuring they are enabled by default.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-08-13 10:01:04 +08:00
西风逍遥游andCursor Agent 544779079f Add Material, RenderControl, and sampleable G-buffer for post effects (#43)
Introduce a compilable render feature control (shadow/gbuffer/forward/hair),
package shading into Material+ModelPart attachable to Renderable3D, and fill
sampleable linear-depth/normal (optional albedo) G-buffer targets while
keeping forward HW z-testing and CSM shadows.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-12 20:25:41 +08:00
西风逍遥游andCursor Agent 2aabe03720 Add hair/fur card rendering with Kajiya-Kay anisotropic shader (#42)
Introduce mesh3d_hair GLSL shaders with alpha-blended Vulkan pipeline
(no back-face cull, depth write disabled). Expose gfx.newHairShader(),
Renderable3D.setHair() for a back-to-front transparent pass in
RenderSystem3D, plus HairShader helpers and unit tests.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-12 18:35:47 +08:00
西风逍遥游andCursor Agent 59b2ebabf1 feat(graphics): parallax occlusion mapping (POM) for mesh3d (#35)
Add height-map driven POM on the default mesh3d / mesh3d_clustered PBR
path so brick/stone materials get fake depth without tessellation.

- GLSL: parallax_map.glsl (adaptive steep march + linear refinement)
- API: Renderable3D::setHeightTexture / setParallax; scale=0 keeps old UVs
- Descriptor binding for height sampler; UBO parallax vec4 appended
- Docs + CPU math tests + GPU pixel-diff coverage

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-12 18:33:03 +08:00
西风逍遥游andCursor Agent ece8ff8281 feat(graphics): mipmap、各向异性过滤与 LOD 支持 (#27)
* feat(graphics): add mipmap, anisotropic filtering, and mesh LOD

Enable texture LOD sampling with CPU-generated mip chains, sampler
anisotropy (when supported), and LOD bias via TextureCreateInfo /
TextureSampler. Cubemaps generate mips by default for IBL textureLod.
Renderable3D gains distance-based geometric LOD selection.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(graphics): avoid X11 None clash; link sndio on Linux

Rename MipmapMode::None to Disabled (X11 defines None), fix ComponentRef
usage in setMeshLod, and link libsndio for OpenAL on Linux builds.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(build): link sndio only when available on Linux

Unconditional -lsndio broke GitHub Actions Linux CI where libsndio is
not installed. Detect the library with find_library instead.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci: retrigger Linux check after optional sndio fix

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-11 19:50:31 +08:00
西风逍遥游andCursor Agent f00ca29713 feat(graphics): 屏幕空间环境光遮蔽 SSAO / HBAO / GTAO (#29)
* feat(graphics): add screen-space ambient occlusion (SSAO/HBAO/GTAO)

Implement AmbientOcclusion with quality presets, bilateral blur, and
darkening overlay, following the Volumetric post-process pattern.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(ao): avoid REQUIRE on unique_ptr (zeroerr print)

Match Volumetric tests: assert the raw pointer before wrapping.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-11 18:59:33 +08:00
西风逍遥游andCursor Agent 1fe6934c0a feat(graphics): texture cell bombing 消除平铺重复纹理 (#30)
* feat(graphics): texture cell bombing to break tiling

Add UV-space cell bombing on the default mesh3d / clustered PBR paths:
per-cell random offset and rotation blended across a 2x2 neighborhood
(with textureGrad for stable mips). Opt-in via Renderable3D::setTexCellBomb
(strength 0 keeps prior behavior). Includes GLSL helper, SPIR-V embeds,
CPU reference header, docs, and smoke tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(graphics): rotate UVs in cell bombing; harden GPU test

Rotate UVs about each cell center (not just translate) so periodic
textures actually break tiling. Use the known-good UV cube + repeating
motif in the pixel smoke test.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-11 17:01:48 +08:00
西风逍遥游andCursor Agent 3543a7343d feat(graphics): classic anti-aliasing (FXAA / SMAA / SSAA / NFAA) (#28)
* feat(graphics): add classic image-space anti-aliasing

Implement AntiAliasing (FXAA, SMAA-lite, SSAA resolve, NFAA) as a
Volumetric-style post API with quality presets, embedded SPIR-V shaders,
Squirrel bindings, tests, and docs.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(aa): fix zeroerr REQUIRE(a && b) ambiguity

Split combined pointer checks so Expression decomposition does not
conflict with built-in operator&&.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-11 17:00:25 +08:00
西风逍遥游andCursor Agent 8aa8e35d34 feat(graphics): 体积光 + Ray March + 体积雾 (#19)
* feat(graphics): 屏幕空间体积光(尘雾 God Rays)

在 graphics 模块增加 Volumetric API:径向模糊光柱 + 尘/雾,
质量档 low/medium/high;Drawable.castOcclusion 对齐阴影语义的遮挡绘制。

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(graphics): 体积光 Ray March 二期 + 扩展测试

合并 main;新增 raymarch 模式(线性深度积分 + 屏空间遮挡近似 CSM),
补充 mode/质量/drawOccluders2D/ray march 等测试(11 用例)。

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(graphics): 体积雾(高度/距离 Beer-Lambert)

新增 setMode("fog") / applyFog:线性深度上积分高度指数雾与距离 ramp,
输出非预乘 RGB+alpha 以适配 SrcAlpha 混合。合并 main(gpgpu ECS)后补齐
cmake 源扫描,并扩展 volumetric 单测(15/15)。

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(test): GraphicsSmoke missing-texture 不再竞态 setupWriteDirectory

Mac CI 并行跑 clearAndPresentWindow 时共用 Filesystem identity,
ThrowsOnMissing 里多余的 bootstrap 会失败。缺文件抛错只需 PhysFS open,
并给写目录 bootstrap 使用独立 identity。

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-10 23:15:51 +08:00
西风逍遥游andCursor Agent d603219164 feat: complete 2D/3D pick, overlap, and collision query APIs (#11)
Add Math geometry tests for 2D/3D picking and overlaps, Physics
rayCast/queryAABB/testPoint, and Camera2D/3D screen pick helpers,
with script bindings, docs, and unit tests.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-10 07:42:09 +08:00
西风逍遥游 28f778d2c4 docs: review every user module chapter 2026-08-09 21:41:58 +08:00