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
  1. 技术文档 & 心得体会
  2. 物理引擎

PhysX集成

https://github.com/NVIDIA-Omniverse/PhysX

已经开源 5.x 的 CPU 版本了。我们可以在这里下载然后直接编译,之后以二进制方式集成。

但是我希望源码集成,扫了一圈cmake发现很难做到,需要如 externals、cmakemodules、NvidiaBuildOptions 之类的乱七八糟的文件,这个仓库又根本没有。

最后发现这些文件又在老的仓库里:

https://github.com/NVIDIAGameWorks/PhysX

很是麻烦,但是我们可以参考成熟现有引擎的做法,比如这个库:

https://github.com/RavEngine/PhysX-Complete

最后我们发现,PhysX 在 Windows 平台似乎只能用 MSVC,不能支持 Clang-cl。原因是它有些 SSE 指令是写死的,主要是在 physx\include\foundation\windows 这块,是和操作系统绑定起来的,Windows中所有SSE指令都是直接 .m128_f32[0] 这样的形式,并没有再封装一层。这就导致 clang-cl 会报错,clang-cl 应该直接像数组一样用,它不能像 .m128_f32 这样访问。

https://github.com/emscripten-core/emscripten/issues/4279

https://learn.microsoft.com/zh-cn/gaming/gdk/_content/gc/tools-pc/visualstudio/gr-vs-clang

英伟达官方也承认并没有鸟clang-cl,报错也不奇怪:

https://github.com/NVIDIAGameWorks/PhysX/issues/218

但是我们发现这是需要启动 SIMD 才会出现的,在 PhysX 里会被宏 PX_SIMD_DISABLED 包裹起来。因此我们可以尝试在 Debug 的时候开启 PX_SIMD_DISABLED 以禁用 SIMD,从而可以使用 Clang-cl,在发布的时候关闭 PX_SIMD_DISABLED 并指定用 MSVC 去编译。

Previous物理引擎NextBullet集成

Last updated 1 year ago