从0开发3D引擎(一):开篇

介绍

大家好,本系列带你踏上Web 3D编程之旅~

本系列是实战类型,从0开始带领读者写出“良好架构、良好扩展性、最小功能集合(MVP)” 的3D引擎。

本系列的素材来自我们的产品:Wonder-WebGL 3D引擎和编辑器 的整个开发过程。

与我的“用函数式编程,从0开发3D引擎和编辑器”系列博文的区别:

  • 本系列是它的重写版

  • 本系列是实战类型,而它是经验总结类型

  • 本系列只写引擎,而它既写引擎又写编辑器

为什么本系列只写引擎?

  • 因为大部分人更关心引擎

  • 为了加快写作速度,省略需要较多篇幅的编辑器

本系列特色

1.完全从0开始,强调实战

扫描二维码关注公众号,回复: 8396785 查看本文章

2.保持精简,只实现最小功能,重点强调架构扩展

3.完全、彻底地使用函数式编程

现在3D领域使用函数式编程的资料很少,主流还是使用面向对象。
我以前也是用面向对象,不过自从我开始接触函数式编程,就拥抱了它。
希望能通过本系列,向读者展示函数式编程的魅力,扩展读者的视野和思维。

能给你带来什么收益?

1.手把手教你如何从0开发3D引擎
2.学习函数式编程及其在3D领域的应用
3.学习3D编程中基础的功能实现,如纹理、光照、模型等
4.学习引擎的设计和架构,如Data Oriented、多线程等

本系列技术选型

  • 使用Reason语言(函数式编程语言,可编译为Javascript)

Reason的相关评价详见:
如何评价 reasonml ?
如何评价 Facebook 推出的编程语言 Reason?

  • 使用WebGL 1作为底层API

引擎的特色

  • 函数式编程

  • 使用“函数式反应式编程”(FRP)实现异步

  • 多线程渲染

  • Data Oriented

  • 契约检查

  • 基于job的可扩展的渲染管道

  • 流加载

引擎支持的运行环境

重点支持桌面端浏览器(引擎的多线程渲染等功能只能在桌面端开启):

  • Chrome
  • Firefox
  • 360 browser(v10.0及以上)
  • qq browser(v10.4及以上)

也能够支持移动端浏览器:

  • 微信浏览器(安卓4.4及以上、ios 8及以上)

内容规划

本系列分成六个部分:

第一部分:准备(没有开始写)

主要内容:

  • 准备预备知识
  • 搭建开发环境
  • 搭建测试环境

第二部分:基础(没有开始写)

主要内容:

  • 学习函数式编程

  • 学习函数式反应式编程

  • 学习Reason

第三部分:搭建雏形(没有开始写)

主要内容:

  • 编写最小的3D程序

  • 从中提炼引擎

  • 改进引擎架构

第四部分:增加功能(没有开始写)

主要内容:

  • 增加基础功能

  • 加入Scene Graph

第五部分:增强扩展性(没有开始写)

主要内容:

  • 加入脚本组件

  • 加入自定义材质

  • 加入其它可能的扩展,如ui扩展等

第六部分:应用(没有开始写)

主要内容:

  • 通过引擎支持的扩展,加入实际应用需要的功能(如picking等)

  • 实现几个完整的3D应用

参考资料

Wonder-WebGL 3D引擎和编辑器
“用函数式编程,从0开发3D引擎和编辑器”系列博文

猜你喜欢

转载自www.cnblogs.com/chaogex/p/12133853.html