Commit Graph

155 Commits

Author SHA1 Message Date
shensi.zxd
dd02420acc feat(core): GPU Instancing 自动合批(cherry-pick from galacean/engine#2957)
从 PR https://github.com/galacean/engine/pull/2957 (feat/gpu-instancing)
cherry-pick 69 个 commit 到 fix/shaderlab 分支,压缩为单次提交。

## 核心改动

### 新增文件
- `InstanceBuffer.ts` — UBO-based 实例数据管理,将多个 renderer 的
  worldMatrix/shaderData 打包到一个 UBO 中
- `VertexMergeBatcher.ts` — 替代旧 BatchUtils,统一 2D/3D 合批入口
- `ShaderBlockProperty.ts` — UBO block 属性描述
- `ShaderProgramMap.ts` — 替代旧 ShaderProgramPool,支持 instancing layout 缓存
- `ConstantBufferBindingPoint.ts` — UBO binding point 枚举

### 修改文件
- `MeshRenderer._canBatch/_batch` — 同 mesh+material+macros 自动合批判定
- `SkinnedMeshRenderer` — 标记不可 GPU instance
- `RenderQueue` — 按 material/primitive 排序(替代按距离排序),
  渲染时检测 instanced batch 并通过 InstanceBuffer 一次 draw
- `RenderElement` — 扁平化(移除 SubRenderElement),支持 instancedRenderers 列表
- `ShaderFactory` — UBO 布局计算、instancing GLSL 注入(RENDERER_GPU_INSTANCE macro)
- `ShaderPass` — 编译时检测 GPU instance macro,注入 UBO 声明
- `ShaderProgram` — 存储 instanceLayout
- `Renderer` — 移除 batched 相关字段

### 删除文件
- `BatchUtils.ts` → 替换为 `VertexMergeBatcher.ts`
- `SubRenderElement.ts` → 合并到 `RenderElement.ts`
- `ShaderProgramPool.ts` → 替换为 `ShaderProgramMap.ts`

## cherry-pick 冲突解决记录

fix/shaderlab 分支和 PR 基线 (dev/2.0) 的差异主要在以下文件:

1. **ShaderPass.ts** — fix/shaderlab 使用 `Shader._shaderLab._parseMacros`
   处理 ShaderLab 宏,而 PR 使用 `ShaderMacroProcessor.evaluate`(fix/shaderlab
   上不存在)。解决方式:保留 fix/shaderlab 的宏处理,加入 PR 的 instancing
   UBO 注入逻辑。
2. **Transform.glsl** — fix/shaderlab 已有 `camera_VPMat` 声明,PR 也添加了。
   解决方式:合并两边声明。
3. **UIRenderer.ts** — PR 将 `BatchUtils` 重命名为 `VertexMergeBatcher`,
   `batchFor2D` 重命名为 `batch`。fix/shaderlab 的 UI 包未同步。
   解决方式:手动更新 UI 包的 import 和调用。
4. **GLSLIfdefResolver.ts** — PR 早期 commit 新增此文件,后续 commit 删除。
   cherry-pick 后 ShaderPass.ts 残留了 import。解决方式:删除无用 import。

## 验证结果

CarParking 游戏 DrawCall 从 905 降至 ~80(同 mesh+material 的座椅、轮子等
自动合批)。
2026-04-23 17:26:31 +08:00
hhhhkrx
68a0d57a9a rename limit/limitX/Y/Z to speed/speedX/Y/Z in LimitVelocit… (#2928)
* refactor: rename limit API to speed in LimitVelocityOverLifetimeModule
2026-03-19 17:20:57 +08:00
ChenMo
2a242ef61a refactor: rename Env to AmbientLight, .env to .ambLight (#2919)
* refactor: rename Env/EnvLoader to AmbientLight/AmbientLightLoader
2026-03-12 23:28:04 +08:00
hhhhkrx
3c1103c9c6 migrate ambient env from RGBM to half-float (#2916)
* feat: migrate ambient env from RGBM to half-float
2026-03-10 20:54:40 +08:00
AZhan
67e68ca5d3 fix: doc link (#2850) 2025-09-25 15:29:45 +08:00
hhhhkrx
fff5b233be docs: add specular in PBR (#2848)
* feat: add specular in pbr
2025-09-25 15:22:10 +08:00
AZhan
544f16ebfc feat: update code (#2847) 2025-09-24 20:14:25 +08:00
AZhan
072ce3efca feat: add widget doc (#2830) 2025-09-24 17:17:36 +08:00
hhhhkrx
ca039cc349 Add Screen Space Ambient Occlusion Docs (#2824)
* docs: add screen space ambient occlusion docs
2025-09-24 14:53:15 +08:00
luzhuang
234d6b7b46 Add sweep and overlap doc (#2823)
* docs: add sweep and overlap doc
2025-09-19 16:15:05 +08:00
zhuxudong
8d57c2c6df Refactor shader document (#2833)
* docs: refactor shader document and add shader101 guide
2025-09-19 16:11:48 +08:00
zhuxudong
bb30d5e9a1 Support shader pre compile (#2794)
* refactor: support shader pre compile
2025-09-16 22:39:30 +08:00
eyworldwide
a3d8868aa4 docs: fix texture docs 2025-06-03 14:52:23 +08:00
eyworldwide
830a96b531 docs: update texture docs 2025-06-03 14:37:11 +08:00
zhuxudong
68bc928167 Enhance some texture documents (#2711)
* doc: enhance some texture documents
2025-05-29 16:47:48 +08:00
鹅叔
d0707bf2e6 Merge pull request #2704 from eyworldwide/main
Docs: particle renderer main module
2025-05-28 20:01:12 +08:00
zhuxudong
927bd6c1ec refactor: enhance color document (#2705) 2025-05-28 17:53:53 +08:00
eyworldwide
c60ec02137 docs: particle renderer main module 2025-05-28 16:29:37 +08:00
eyworldwide
b42aab0f19 docs: particle renderer main module 2025-05-28 16:21:06 +08:00
鹅叔
c732b23f99 Merge pull request #2703 from cptbtptpbcptdtptp/doc/flowchart
Docs: fix en flowchart
2025-05-27 20:09:02 +08:00
SwayYan
33cdff9a81 Update particle 1.5 doc (#2702)
* feat: particle 1.5 doc
2025-05-27 18:13:54 +08:00
azhan
c3558520ac fix: en flowchart 2025-05-27 17:21:06 +08:00
Kbscript
8d7e1c0b5d fix: doc syntax 2025-05-27 16:32:24 +08:00
AZhan
daeb250dd3 检查英文版本文档 (#2696)
* fix: english check
2025-05-26 22:20:03 +08:00
luzhuang
054f7daeeb Doc: img2model doc (#2694)
* feat: add img2model doc
2025-05-26 22:19:33 +08:00
AZhan
b856a89d30 fix: english check (#2695) 2025-05-26 18:32:34 +08:00
AZhan
50ec168c0e feat: en doc (#2693) 2025-05-26 17:25:12 +08:00
AZhan
4494d72666 Update renderer doc (#2687)
* feat: update renderer and 2d doc
2025-05-26 16:25:14 +08:00
johanzhu
8d71a91275 Feat: opt spine doc 1.5 (#2684)
* feat: opt spine doc
2025-05-26 15:38:54 +08:00
Bo Kou
23444202a1 feat: update collaborate doc (#2688) 2025-05-26 11:48:31 +08:00
zhuxudong
deb76c389b Add color space document (#2682)
* feat: add color space document
2025-05-23 17:46:18 +08:00
鹅叔
dc1a4793ed Docs: remove playgrounds (#2689)
* fix: doc typo
2025-05-23 17:24:53 +08:00
luzhuang
5825a21dab Doc: physics collision layer (#2685)
* docs: add collision layer doc and opt characterController doc
2025-05-23 13:48:31 +08:00
hhhhkrx
351385e02e feat: update doc (#2681) 2025-05-22 17:40:31 +08:00
hhhhkrx
263efcb9e4 Update antiAliasing docs (#2679)
* refactor: update antiAliasing docs
2025-05-22 17:26:52 +08:00
singlecoder
7185439a63 Doc: add subpackage for export mini wechat game doc (#2680)
* docs: opt subpackage
2025-05-22 15:21:28 +08:00
鹅叔
a6c112859e Refactor: Update docs (#2661)
* refactor: update doc
2025-05-21 17:17:46 +08:00
GuoLei1990
2d71dc95a3 Merge branch 'main' into dev/1.5 2025-04-28 11:27:22 +08:00
SwayYan
66116ba675 Refactor ShaderLab documention (#2611)
* refactor: shaderlab doc
2025-04-18 11:46:46 +08:00
zhuxudong
ae3dc4a655 Color api rename (#2607)
* refactor: color api change
2025-04-09 17:35:59 +08:00
zhuxudong
3441a7690a Enhance post-processing document (#2604)
* refactor: enhance post-processing document
2025-04-07 18:59:25 +08:00
aFang
4adcb25184 Update custom.mdx (#2600)
# Fix custom doc
2025-04-07 10:23:29 +08:00
zhuxudong
3242f8941f [Document] enhance material document (#2546)
* doc: enhance material document
2025-03-31 15:45:10 +08:00
eyworldwide
a0dfd17aab refactor: fix doc cr problems 2025-03-10 17:01:45 +08:00
eyworldwide
1a4b5df182 Merge branch 'main' of github.com:galacean/engine 2025-03-10 16:50:15 +08:00
Bo Kou
a18bfd0dc0 Merge pull request #2583 from feyabibi/feat/audio
feat: add audio documentation for assets, components, and overview in…
2025-03-10 15:44:04 +08:00
feyabibi
44fa4b15dc feat: add audio documentation for assets, components, and overview in English and Chinese 2025-03-10 15:40:13 +08:00
Bo Kou
d3aa1685dd Merge pull request #2582 from feyabibi/feat/audio
feat: add audio functionality with assets and components documentation
2025-03-10 15:17:25 +08:00
feyabibi
b81669c9d8 feat: add audio functionality with assets and components documentation 2025-03-10 15:00:31 +08:00
luzhuang
f6b696583e Doc: opt physics doc (#2551)
* feat: opt physics doc
2025-03-07 16:41:40 +08:00