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

2023-07-29,,

介绍

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

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

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

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

本系列是它的重写版

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

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

为什么本系列只写引擎?

因为大部分人更关心引擎

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

本系列特色

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

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引擎和编辑器”系列博文

从0开发3D引擎(一):开篇的相关教程结束。

《从0开发3D引擎(一):开篇.doc》

下载本文的Word格式文档,以方便收藏与打印。