Polymer
Polymer是一个用于空间交互和实时渲染的研究框架,目前针对C++14和Windows上的桌面级OpenGL。它旨在探索AR/VR原型设计工具作为引擎核心概念。它受到了诸如NVIDIA的Falcor、Google的Lullaby和Microsoft的Mixed Reality Toolkit等项目的启发。虽然Polymer的主要焦点是沉浸式媒体,但该引擎还包含了对图形研究和通用工具及实用程序开发有用的功能。
特性
- 基于物理的、gamma校正的前向渲染器,支持MSAA
- 数据驱动的实体-组件架构,带有自定义RTTI
- 现代OpenGL的轻量级、面向对象的封装
- 支持热重载的资产,包括GLSL着色器
- 常见几何和纹理格式的资产导入
- 带有json场景序列化的桌面场景编辑器应用
- OpenVR集成
架构
Polymer设计为静态库集合。lib-polymer
是一个基础库,包含游戏开发者熟悉的常见数据结构和算法。lib-engine
依赖于lib-polymer
,引入了实体-组件系统和基于物理的渲染管线。lib-engine
还提供了运行时资产管理解决方案。最后,lib-model-io
包含导入、导出和优化常见几何格式(目前支持obj、ply和fbx)的代码。
未来,渲染代码将移至lib-graphics
,并具有能够针对多种图形后端(如Metal和Vulkan)的抽象渲染硬件接口。
构建
Polymer需要最新版本的Windows 10和支持OpenGL 4.5上下文的图形驱动程序。该仓库维护了Visual Studio 2017的项目文件。大多数依赖项以源代码形式包含,不使用子模块。
先决条件
构建项目需要Windows SDK。您可以在此处下载。
使用FBX 2017 SDK受环境变量控制(SYSTEM_HAS_FBX_SDK
应设置为评估为相同的标记,SYSTEM_HAS_FBX_SDK
);提取的FBX SDK本身必须位于polymer\lib-model-io\third-party\fbxsdk
。您可以从此处下载FBX SDK。
构建项目
在Microsoft Visual Studio 2017中打开解决方案文件并构建它。
注意: 如果构建失败并显示消息_未找到Windows SDK版本10.0.16299.0_,且您已正确安装Windows SDK,您可能需要在每个项目属性中更改Windows SDK版本,并选择您安装的版本。
示例和文档
Polymer的API正在变化中。samples/
目录中汇集了越来越多的示例项目,用于演示Polymer的各种库和功能。大多数项目都依赖于lib-polymer
和lib-engine
,尽管许多项目并不使用lib-engine
中除GLFW窗口创建和事件处理之外的功能。少数测试项目验证了关键内部系统的正确性,但也作为缺乏正式文档的函数或对象的临时参考。
贡献
Polymer处于早期开发阶段,欢迎有经验和无经验的开源贡献者参与。GitHub问题队列是了解即将推出功能的范围和优先级的好地方。对于大型拉取请求和功能实现,最好在开始工作之前与项目维护人员确认。
许可证
Polymer根据BSD 3条款许可证发布。作为一个框架/引擎,Polymer融合了来自各种来源的想法、代码和第三方库。许可证和归属完全记录在COPYING
文件中。
引用
如果您在导致出版或公开演示的项目中使用Polymer,我们感谢您的引用。BibTex条目为:
@Polymer{Diakopoulos19,
author = {Dimitri Diakopoulos],
title = {Polymer: A Prototyping Framework for Spatial Computing},
year = {2019},
month = {01},
url = {https://github.com/ddiakopoulos/polymer/},
note = {\url{https://github.com/ddiakopoulos/polymer/}}
}