Files
lity3d/引擎文件说明.md
T
shuiyu1123 9d7773ffcd feat: Lity3D Editor + file guide
- editor.py: tkinter IDE with explorer, code editor, output console
- Toolbar: Run (F5), Stop, Build (F7), Scene management
- 引擎文件说明.md: complete engine architecture documentation
2026-07-13 00:49:00 +08:00

6.5 KiB
Raw Blame History

Lity3D 引擎文件说明

顶层结构

lity3d/
├── Engine/          核心引擎代码(C + MASM汇编)
├── Demo/            示例程序
├── Assets/          3D模型资源
├── EditorCS/        编辑器(C#)
├── build/           编译输出
├── CMakeLists.txt   CMake构建配置
├── build.bat        Windows一键编译
├── README.md        项目说明
├── DESIGN.md        架构设计
└── scene.txt        场景保存文件

Engine/ASM/ — 汇编加速层

引擎的性能热路径用 MASM x64 汇编实现,通过 SSE/AVX2 指令集加速。当汇编不可用时自动降级到纯C版本。

  • math.asm (1013行) — 向量加减乘除、矩阵乘法、四元数旋转,全部用 SIMD 指令
  • math_c_fallback.h (65行) — 数学函数的纯C实现,作为汇编的备选
  • memory.asm (146行) — 对齐内存分配,保证 SIMD 操作需要的16/32/64字节对齐
  • string_ops.asm (253行) — 用SIMD加速的内存拷贝、字符串长度计算、字符串比较
  • profiling.asm (122行) — 用CPU的RDTSC指令做高精度计时,用于性能分析

Engine/Core/ — 引擎核心

  • engine.c/h — 引擎主控。负责初始化所有子系统、运行游戏循环(每帧调update→render)、关闭时清理资源。这是整个引擎的入口
  • timer.c/h — 用Windows的QueryPerformanceCounter做毫秒级计时,计算帧间隔(delta time)
  • logger.c/h — 日志系统。支持INFO/WARN/FATAL三级日志,同时输出到控制台和文件
  • asset_manager.c/h — 资源管理器。统一处理shader/mesh/texture的加载和缓存,避免重复加载

Engine/Window/ — 窗口系统

  • window.c/h — 创建Win32窗口,处理Windows消息循环。把键盘、鼠标、窗口大小变化等事件转发给引擎回调函数

Engine/Rendering/ — D3D11渲染管线

  • graphics_device.c/h — D3D11设备初始化。创建Device、SwapChain、RenderTarget、DepthStencil,管理渲染状态
  • renderer.c/h — 渲染器。设置视口、清屏、管理渲染目标切换
  • shader.c/h — 着色器管理。编译HLSL着色器、设置常量缓冲区、绑定到管线
  • mesh.c/h — 网格系统。支持立方体/球体/平面程序化生成,也支持OBJ文件加载。管理顶点缓冲区和索引缓冲区
  • texture.c/h — 纹理系统。通过WIC加载BMP/PNG/JPEG,也支持生成纯色和棋盘格纹理
  • camera.c/h — 摄像机。透视投影、lookAt矩阵、自由移动和旋转
  • camera_controller.c/h — 摄像机控制器。封装常用的WASD+鼠标操作
  • frustum.c/h — 视锥体裁剪。判断物体是否在摄像机视野内,跳过不可见物体的渲染
  • lighting.c/h — 光照系统。方向光+点光源,Lambert漫反射计算
  • material.c/h — 材质。把shader和纹理组合在一起,定义物体的外观属性

Engine/Scene/ — 场景图

  • scene_graph.c/h — 场景树。节点有父子关系,子节点继承父节点的位移/旋转/缩放
  • scene_render.c/h — 场景渲染。遍历场景树,把每个节点的MeshRenderer提交给渲染器
  • scene_serialize.c/h — 场景序列化。把整个场景树保存成text文件或从文件加载

Engine/Input/ — 输入系统

  • input.c/h — 键盘/鼠标/手柄输入。跟踪按键状态,支持轮询(GetAsyncKeyState)和事件回调两种模式

Engine/Audio/ — 音频系统

  • audio.c/h — XAudio2音频引擎。动态加载DLL(兼容Win7~11),加载WAV文件,播放/暂停/音量控制

Engine/Physics/ — 物理系统

  • physics.c/h — 简易物理。AABB碰撞检测、球体碰撞、重力模拟、速度积分

Engine/ECS/ — 实体组件系统

  • world.c/h — ECS世界。实体=组件的容器,系统批量处理同类组件

Engine/UI/ — 用户界面

  • ui.c/h — 2D UI渲染。按钮、标签、面板等基础控件,用D3D11的2D投影绘制

Engine/Editor/ — 内置编辑器

  • editor.c/h — 编辑器主逻辑
  • editor_2d.c/h — 2D编辑模式(俯视图)
  • uilayer.c/h — 编辑器UI层
  • bitmap_font.c/h — 位图字体渲染
  • glyph_atlas.c/h — 字体图集生成

Engine/VisualScript/ — 积木式可视化编程

这是引擎最复杂的模块之一,实现了类似Scratch的积木编程系统:

  • block_core.c/h — 积木核心数据结构(输入/输出端口、连接线)
  • block_types.c/h — 30+种积木类型定义(移动、旋转、条件、循环等)
  • block_executor.c/h — 积木执行器。解析积木图,按连接顺序执行逻辑
  • block_serializer.c/h — 积木序列化。把积木图保存为.ly文件或从文件加载
  • block_workspace.c/h — 积木工作区。管理所有积木的位置和连接关系
  • block_renderer.c/h — 积木渲染。在屏幕上绘制积木方块和贝塞尔连线
  • block_interaction.c/h — 积木交互。拖拽移动、连线创建、端口连接
  • block_palette.c/h — 积木面板。侧边栏显示可用积木列表
  • block_editor.c/h — 积木编辑器主控

Engine/Scripting/ — 脚本系统

  • lity.py — LityPy。Python脚本库,用Python语法写游戏逻辑
  • lua_engine.c/h — Lua脚本引擎桩(预留接口)

Engine/Asset/ — 资源定义

  • mesh.h — Mesh结构体定义(顶点数组、索引数组、顶点缓冲区)
  • texture.h — Texture结构体定义(宽高、像素数据、SRV)

Engine/include/ — 对外接口

  • engine_api.h — C/C++便利封装。暴露汇编函数给C代码,提供运算符重载

Demo/ — 示例程序

文件 说明
main.c 场景Demo(方块+球体+地面+光照)
lity_explorer.c 3D开放世界探索(村庄+树木+第三人称)
cube_dodge.c 躲避游戏(障碍物+碰撞+计分)
game_test.c 纯D3D11渲染测试(无Engine依赖)
raw3d_test.c 引擎3D渲染验证(彩色面)
scene_test.c 场景图测试
light_test.c 光照系统测试
input_test.c 输入系统测试
obj_viewer.c OBJ模型查看器(鼠标旋转)
ly_interpreter.c .ly积木文件解释器
editor_main.c 编辑器入口
open_world_demo.c 开放世界demo

EditorCS/ — 编辑器

C# 编写的可视化积木编辑器,用Dear ImGui + D3D11实现。

Assets/ — 模型资源

  • cube.obj — 简单立方体OBJ模型
  • pyramid.obj — 金字塔OBJ模型