HEngine
  • 引擎编译
  • 未来工作
  • 使用文档
    • 代码规范
    • Shader规范
    • config 配置
  • Python脚本系统
    • 技术分析
    • 使用api
  • Cpp脚本系统
    • 技术分析
  • 技术文档 & 心得体会
    • 数学
      • 坐标系、UV与深度范围
      • 行主序 与 列主序
    • 路径管理
    • 构建系统
    • 自定义资源格式
    • UI
      • undo/redo
      • 分辨率处理
    • ECS 系统
    • 插件系统
    • 数学库
    • Ref Counted
    • 音频
    • ChatGPT
    • Mesh、Vertex 等组织关系
    • 编辑器热更新方案
    • Profile
    • NLP
    • RenderDoc
    • CodeGen与反射系统
    • 安装包
    • 物理引擎
      • PhysX集成
      • Bullet集成
    • 动画
  • 图形后端
    • 坐标系差异
    • Feature差异
    • RHI 封装
    • Shader与Constant Buffer
    • DX12
    • Vulkan
    • Render Graph
    • 渲染整体架构
  • 图形Feature
    • 毛发
    • 鼠标拾取
    • 实例化渲染
  • Shader
    • Shader 交叉编译
    • Shader Toy
    • Shader 热更新
    • PBR
  • 打包
    • 打包
  • Bug 记录 & 解决过程
    • 闪退记录汇总
    • 导入图片显示混乱
    • D3D下glfw+imgui失效
  • 其他资料
    • 总结集合
Powered by GitBook
On this page
  • 主要目标
  • 其他工作
  • 遥远的未来
  • Done

未来工作

主要目标

  1. 编辑器下 ctrl z 回退功能

  2. 编辑器面板的反射,可以自动解析shader的变量进行控制调整

  3. 委托与事件系统的重构

  4. 基于物理的鼠标拾取

  5. 2d直线的绘画,可以绘制摄像机camera的frustum

  6. dx11 & OpenGL render graph

  7. 基于1,fbx(OpenFBX?https://github.com/nem0/OpenFBX)obj(tinyobjloader?https://github.com/tinyobjloader/tinyobjloader),https://github.com/ufbx/ufbx 干掉assimp库。(或者先转成gltf?) https://github.com/facebookincubator/FBX2glTF https://github.com/godotengine/FBX2glTF https://github.com/CesiumGS/obj2gltf https://github.com/KhronosGroup/glTF-Blender-IO https://github.com/KhronosGroup/COLLADA2GLTF

  8. shader 交叉编译

  9. 使用 PhysX5 替换 bullet:https://github.com/NVIDIA-Omniverse/PhysX ;https://github.com/RavEngine/RavEngine https://developer.nvidia.com/physx-sdk https://nvidia-omniverse.github.io/PhysX/physx/5.1.2/docs/BuildingWithPhysX.html https://github.com/BDFFZI/BDXKEngine

  10. 脚本层可以控制物理组件和音效等

其他工作

  1. 编辑器下贴图资源的丝滑加载卸载(参考https://github.com/dfranx/ImFileDialog

  2. 完善引擎脚本层,从py脚本可以inspector到编辑器的SceneHierarchyPanel,规则待定

  3. 干掉magic_enum,改为Enum的反射

  4. 重构Mesh、Material结构,例如弄个Geometry单独存cpu端mesh数据,geometry内部有aabb包围盒成员,参考:https://github.com/flwmxd/LuxGI

  5. 基于7:有了aabb包围盒后,将渲染层的鼠标拾取改为物理拾取;CPU端的视锥体剔除

  6. 场景结点,可以将子对象挂载到父对象,transform 有父子关系(可参考https://github.com/jpvanoosten/LearningDirectX12/blob/main/DX12Lib/inc/dx12lib/SceneNode.h

  7. 替换 stb_image,换用 FreeImage 去加载纹理;使用自定义贴图格式(.htex)进行纹理压缩(.dds),可用 ISPCTextureCompressor 库(https://github.com/GameTechDev/ISPCTextureCompressor)也可以直接用 DirectXTex 库(https://github.com/microsoft/DirectXTex/wiki/Compress)

  8. 使用 recast 作为导航网格:https://github.com/recastnavigation/recastnavigation

  9. 纹理压缩:https://github.com/GameTechDev/ISPCTextureCompressor

  10. 图片加载库:https://github.com/OpenImageIO/oiio

  11. 环境光贴图、后处理等 Scene Setting 也应该要序列化到场景文件中。

  12. Job System:https://github.com/RichieSams/FiberTaskingLib

遥远的未来

  1. 服务端:考虑 https://kbengine.github.io/cn/

  2. 多平台:Android、macos...

Done

重构python系统,思考解释器用引擎内部放的 py3.dll 之类的,项目结构固定脚本和Libs放在Scripts文件夹下

引擎自定义资源格式(目前主要准备参考 gltf 2.0 格式) 加载可以参考:https://github.com/syoyo/tinygltf/blob/release/tiny_gltf.h 做好了 mesh 的格式,skeleton 还没做

视口加入坐标轴

编辑器Content Browser的右键删除功能(次要)、Show in Explorer功能(主要)

Previous引擎编译Next代码规范

Last updated 1 year ago

UE5的编辑器,左下角有坐标轴