我完成了10000小時(shí)開(kāi)發(fā)3D引擎
為什么要開(kāi)始10000小時(shí)?
我以前看過(guò)一本叫《異類(lèi)》的書(shū),書(shū)的大概意思是:只要學(xué)習(xí)10000小時(shí),任何人都可以成為一個(gè)領(lǐng)域的大師。這里的“學(xué)習(xí)”是指完全專(zhuān)注地精進(jìn)學(xué)習(xí),不做無(wú)用的重復(fù)工作,不待在舒適區(qū),一直在學(xué)習(xí)區(qū)學(xué)習(xí)!
我看完后就一直想驗(yàn)證一下是否屬實(shí)。我在網(wǎng)上搜索了一下關(guān)于“10000小時(shí)實(shí)踐”的情況,結(jié)果發(fā)現(xiàn)還沒(méi)有一個(gè)人真正地、有記錄地完成了10000小時(shí)!只發(fā)現(xiàn)了一個(gè)國(guó)外的同學(xué)實(shí)踐的Dan計(jì)劃(10000小時(shí)打高爾夫球),但是這個(gè)同學(xué)也只堅(jiān)持了6000多小時(shí),然后就停止了。所以說(shuō),他也沒(méi)有真正完成10000小時(shí)!
然后我在豆瓣上發(fā)現(xiàn)了一萬(wàn)小時(shí)夢(mèng)想實(shí)踐法 小組,里面都是實(shí)踐10000小時(shí)的同學(xué)做的記錄。不過(guò)也沒(méi)有一個(gè)人真正的完成了10000小時(shí),甚至連完成1千小時(shí)的同學(xué)都幾乎沒(méi)有!
正好那段時(shí)間,我開(kāi)始學(xué)習(xí)Web3D,具體來(lái)說(shuō)就是學(xué)習(xí)WebGL,并且開(kāi)發(fā)3D引擎。所以某一天我突發(fā)奇想:為什么不在豆瓣小組上打卡呢?既然我一向很有毅力,為什么不證明下我真的能完成10000小時(shí)的挑戰(zhàn)呢?
哈哈!于是我就從2015年8月11日開(kāi)始,在豆瓣小組上開(kāi)始了打卡記錄!很高興的是,我于2022年3月7日,完成了10000小時(shí)!!!一共花了2258天(包括周六周日),平均每天4.4小時(shí)。
我的10000小時(shí)打卡記錄如下:
打造3D引擎,第11000小時(shí)開(kāi)始(已經(jīng)完成了10000小時(shí)!)

一切的開(kāi)始
我在開(kāi)始之前,在學(xué)校里面全職開(kāi)發(fā)了2年的Html5 2D引擎和游戲,主要成果如下:
發(fā)布HTML5 RTS游戲-古代戰(zhàn)爭(zhēng)
炸彈人游戲開(kāi)發(fā)系列
發(fā)布我制作的jQuery貪吃蛇游戲
連連看游戲
動(dòng)作類(lèi)游戲demo
發(fā)布HTML5 2D游戲引擎YEngine2D
提煉游戲引擎系列
通過(guò)校招,去阿里巴巴的釘釘部門(mén)做前端開(kāi)發(fā)
后面我看到了Babylonjs的3d演示demo,讓我重新燃起了對(duì)3D技術(shù)探索的熱情!因?yàn)槲乙呀?jīng)做過(guò)2D了,自然就想做更高端的3D!
于是就開(kāi)始了有趣的Web3D之路。。。。。。
完成第1000小時(shí)
從2015年5月25日 到 2015年12月3日,我完成了1000個(gè)小時(shí),平均每天6小時(shí)
我開(kāi)始從0學(xué)習(xí)WebGL,下面是我的學(xué)習(xí)方法:
1.我找到了《WebGL編程指南》這本書(shū),把大部分demo實(shí)現(xiàn)了一遍;
2.再次第二遍實(shí)現(xiàn)demo,提煉3D引擎的雛形;
3.用提煉的引擎實(shí)現(xiàn)了一個(gè)“自由瀏覽場(chǎng)景”的demo。

完成第1000小時(shí)后,我發(fā)布了開(kāi)源的3D引擎的第一版(v0.1.0),共22k行有效代碼(沒(méi)有算測(cè)試代碼),實(shí)現(xiàn)了模型、morph動(dòng)畫(huà)、arcball相機(jī)、光照、normal map、反射和折射、腳本、陰影、自定義shader、skybox、md2/obj格式轉(zhuǎn)換等功能。
引擎渲染展示如下:


完成第2000小時(shí)
從2015年12月4日 到 2016年5月31日,我完成了1000個(gè)小時(shí),平均每天5.9小時(shí)
這段時(shí)間的主要工作如下:
- 引擎發(fā)布到v0.5.7版本,新增了lod、水、地形、過(guò)程紋理、八叉樹(shù)、UI、picking、碰撞和物理、gltf等功能
- 經(jīng)典書(shū)看了共8本書(shū)
《Design by Contract 原則與實(shí)踐》
《Game Programming Patterns》
《編程珠璣》
《OpenGL Insights》
《WebGL Insights》
《游戲引擎架構(gòu)》
《失控》
《富爸爸》系列
引擎渲染展示如下:


完成第2000小時(shí)后,通過(guò)朋友主動(dòng)推薦,我得到了再次去阿里巴巴的天貓部門(mén)開(kāi)發(fā)3D引擎的工作機(jī)會(huì)!
完成第3000小時(shí)
從2016年6月1日 到 2017年3月20日,我完成了1000個(gè)小時(shí),平均每天3.3小時(shí)
這段時(shí)間的主要工作如下:
- 引擎發(fā)布到v0.9.0版本,新增了室外場(chǎng)景增強(qiáng)、Billboard、骨骼動(dòng)畫(huà)、性能優(yōu)化等功能
- leetcode算法題刷了90道題
- 在天貓工作了一段時(shí)間,應(yīng)用我開(kāi)發(fā)的引擎做了一個(gè)pc端多人聯(lián)網(wǎng)的小的項(xiàng)目和一個(gè)移動(dòng)端ar的項(xiàng)目
- 后面離職回家,開(kāi)始重寫(xiě)引擎,完成了v1.0.0-alpha1版本
v0.9.0引擎渲染展示如下:

完成第4000小時(shí)
從2017年3月21日 到 2017年9月25日,我完成了1000個(gè)小時(shí),平均每天5.4小時(shí)
這段時(shí)間開(kāi)始和小浩一起,開(kāi)始Wonder項(xiàng)目(相當(dāng)于Web版的Unity)的開(kāi)發(fā)!
這段時(shí)間主要工作如下:
- 引擎發(fā)布到v1.0.0-alpha5,由面向?qū)ο蠓妒綇氐椎剞D(zhuǎn)換為函數(shù)式編程范式,實(shí)現(xiàn)了多線程渲染、支持webgl2、面向數(shù)據(jù)data oriented、defer shading等特性
- 開(kāi)始開(kāi)發(fā)編輯器,發(fā)布到v0.2.0
編輯器界面展示如下:

完成第5000小時(shí)
從2017年9月26日 到 2018年3月21日,我完成了1000個(gè)小時(shí),平均每天6小時(shí)
這段時(shí)間主要工作如下:
- 引擎發(fā)布到v1.0.0-alpha17,再一次徹底重寫(xiě),使用reason語(yǔ)言替換typescript語(yǔ)言!性能大幅提升,增加了e2e測(cè)試,使用job架構(gòu)和微服務(wù)架構(gòu)
- 編輯器發(fā)布到v0.8.0
完成第6000小時(shí)
從2018年3月22日 到 2018年9月8日,我完成了1000個(gè)小時(shí),平均每天6小時(shí)
這段時(shí)間主要工作如下:
- 引擎發(fā)布到v1.0.0-alpha23,新增了多線程渲染、紋理、scene graph、事件、arcball相機(jī)、imgui等功能
- 編輯器發(fā)布到v0.12.0,正在實(shí)現(xiàn)導(dǎo)入導(dǎo)出功能
完成第7000小時(shí)
從2018年9月9日 到 2019年3月24日,我完成了1000個(gè)小時(shí),平均每天5.1小時(shí)
我們?cè)?019年3月11日發(fā)布了Wonder 1.0版本,主要打通了編輯器的核心流程,包括:
- 組件化的gameObject
- 編輯和運(yùn)行場(chǎng)景
- 資產(chǎn)管理
- 導(dǎo)入導(dǎo)出和發(fā)布
相關(guān)鏈接為:
Wonder 1.0正式版發(fā)布-----WebGL 3D引擎和編輯器
這段時(shí)間主要工作如下:
-
引擎發(fā)布到v1.0.0,主要特性為:
- 多線程渲染
- ECS架構(gòu)
- Job管道
- 紋理
- 方向光和點(diǎn)光源
- 加載模型和場(chǎng)景
- 流加載
- imgui
- 事件
- instance
-
編輯器發(fā)布到v1.0.0,主要特性為:
- pwa
- 場(chǎng)景管理
- 編輯和運(yùn)行場(chǎng)景
- transform gizmo
- 快捷鍵
- Redo/Undo
- 輸出消息
- 資產(chǎn)管理
- 導(dǎo)入導(dǎo)出
- 發(fā)布本地包
Wonder v1.0展示如下:

完成第8000小時(shí)
從2019年3月25日 到 2019年10月3日,以及從2020年3月13日 到 2020年6月25日,我完成了1000個(gè)小時(shí),平均每天3.7小時(shí)
我從2019年10月3日開(kāi)始,暫停了Wonder的開(kāi)發(fā),開(kāi)始學(xué)習(xí)WebGPU并寫(xiě)了相關(guān)的系列文章,還寫(xiě)了3D引擎開(kāi)發(fā)的系列文章
文章的相關(guān)鏈接為:
WebGPU學(xué)習(xí)系列
從0開(kāi)發(fā)3D引擎
后面于2020年3月13日停止寫(xiě)文章,開(kāi)始學(xué)習(xí)光線追蹤
這段時(shí)間主要工作如下:
- 引擎發(fā)布了1.1版本,新增了腳本、AssetBundle等功能
- 引擎完成了1.2版本的開(kāi)發(fā),新增了skybox、imgui擴(kuò)展等功能
- 編輯器發(fā)布了1.1版本
- 開(kāi)始了學(xué)習(xí)光線追蹤,實(shí)現(xiàn)了WebGPU+Ray Tracing Demo,相關(guān)介紹為:
WebGPU+光線追蹤Ray Tracing 開(kāi)發(fā)三個(gè)月總結(jié)
Wonder v1.1展示如下:

WebGPU+Ray Tracing Demo展示如下:

完成第9000小時(shí)
從2020年6月26日 到 2021年3月15日,我完成了1000個(gè)小時(shí),平均每天3.8小時(shí)
這段時(shí)間中,我參加了一個(gè)創(chuàng)業(yè)團(tuán)隊(duì),負(fù)責(zé)樂(lè)高模型的3D渲染;
然后,我重寫(xiě)了引擎,開(kāi)發(fā)離線渲染器;
最后,我開(kāi)設(shè)了光線追蹤/離線渲染相關(guān)的課程
這段時(shí)間主要工作如下:
- 協(xié)助前端工程師,開(kāi)發(fā)3D網(wǎng)站
- 實(shí)現(xiàn)樂(lè)高模型的ldr數(shù)據(jù)的3D渲染
- 重寫(xiě)Wonder引擎,開(kāi)發(fā)離線渲染器,發(fā)布到了v2.0.0-alpha.6版本,實(shí)現(xiàn)了基于RTX顯卡的光追管線的基礎(chǔ)路徑追蹤渲染,支持了gltf模型
- 接了個(gè)做聊天IM富應(yīng)用的活,開(kāi)發(fā)了一些模塊
- 直播了光線追蹤相關(guān)的免費(fèi)的10節(jié)課程,課程鏈接為:
光線追蹤圖形學(xué)課程 - 開(kāi)設(shè)“ 路徑追蹤渲染器零基礎(chǔ)實(shí)戰(zhàn)開(kāi)發(fā)基礎(chǔ)班”,開(kāi)始付費(fèi)的直播課程,已直播到第二十二節(jié)課(上)。現(xiàn)在課程已經(jīng)免費(fèi)發(fā)布在b站上了:
路徑追蹤渲染器零基礎(chǔ)實(shí)戰(zhàn)開(kāi)發(fā)基礎(chǔ)班
離線渲染的效果如下:

課程:

完成第10000小時(shí)
從2021年3月16日 到 2022年3月7日,我完成了1000個(gè)小時(shí),平均每天2.8小時(shí)
這段時(shí)間中,我開(kāi)始了技術(shù)顧問(wèn)的兼職工作;
并且作為技術(shù)合伙人創(chuàng)業(yè):開(kāi)發(fā)WebGPU引擎,并拿到了1000萬(wàn)的天使輪融資(不過(guò)后面我因?yàn)槠谕环顺隽耍?br>
我也給兩家公司做了技術(shù)培訓(xùn)
我開(kāi)始開(kāi)發(fā)新的開(kāi)源項(xiàng)目:Meta3D
Meta3D是一個(gè)開(kāi)放的、完全可擴(kuò)展的框架,用來(lái)開(kāi)發(fā)Web3D引擎和編輯器!
這段時(shí)間主要工作如下:
- 完成了 “ 路徑追蹤渲染器零基礎(chǔ)實(shí)戰(zhàn)開(kāi)發(fā)基礎(chǔ)班” 課程的所有直播
- 完成了1個(gè)技術(shù)咨詢(xún) :提供“Web3D編輯器架構(gòu)”的設(shè)計(jì)方案
- 完成了1個(gè)技術(shù)顧問(wèn)的第一階段的任務(wù):指導(dǎo)Web3D引擎開(kāi)發(fā)
- 完成了為兩家公司提供技術(shù)培訓(xùn)
- 完成了1個(gè)Web3D應(yīng)用的Demo開(kāi)發(fā) :流暢且無(wú)縫地切換和展示3D場(chǎng)景
- 作為技術(shù)合伙人創(chuàng)業(yè):開(kāi)發(fā)WebGPU引擎,并拿到了1000萬(wàn)的天使輪融資
- 開(kāi)始了1個(gè)新的技術(shù)顧問(wèn):指導(dǎo)Web3D編輯器開(kāi)發(fā)
- 開(kāi)始了從Wonder中發(fā)展而來(lái)的新的開(kāi)源項(xiàng)目:Meta3D
- 開(kāi)始了直播編程:直播開(kāi)發(fā)Meta3D的過(guò)程,直播錄像在b站上:
直播寫(xiě)3D引擎和編輯
我收獲了什么?
在這段時(shí)間中,我達(dá)成了下面的成就:
- 在引擎和編輯器項(xiàng)目中,提交了7000多次commit,測(cè)試覆蓋率95%
- 完全重寫(xiě)了引擎4次以上,完全重寫(xiě)編輯器1次
- 發(fā)布了Wonder:WebGL 3D引擎和編輯器,相當(dāng)于Web版的Unity
- 真正地和他人一起從0開(kāi)發(fā)一個(gè)項(xiàng)目,遵循敏捷開(kāi)發(fā),負(fù)責(zé)嚴(yán)格的代碼審核
- 去過(guò)公司上班,開(kāi)發(fā)3D引擎
- 經(jīng)歷了作為技術(shù)合伙人的創(chuàng)業(yè):開(kāi)發(fā)3D引擎
- 開(kāi)始了在網(wǎng)上進(jìn)行3D相關(guān)的課程培訓(xùn)、直播編程
- 開(kāi)始了3D相關(guān)的技術(shù)咨詢(xún)、技術(shù)顧問(wèn)、接活、技術(shù)培訓(xùn)
- 從0開(kāi)始,打造了700多人的QQ群
- 發(fā)布了48篇文章(包括光線追蹤、WebGPU、開(kāi)發(fā)引擎等系列文章),80小時(shí)+的課程
總結(jié)
感謝大家的閱讀~
綜上所述,我用我的親身實(shí)踐,證明了每個(gè)人都可以完成10000小時(shí)!我就是一個(gè)例子
根據(jù)我的經(jīng)驗(yàn),我在一天中能夠?qū)W習(xí)的最長(zhǎng)時(shí)間為11個(gè)小時(shí);我最高效率的時(shí)間是在我與小浩閉關(guān)封閉式開(kāi)發(fā)的時(shí)候:連續(xù)一個(gè)月,每天平均9小時(shí)開(kāi)發(fā)
目前,我正在開(kāi)發(fā)Meta3D,并且在網(wǎng)上直播開(kāi)發(fā)的過(guò)程,希望讓“Web3D編輯器或引擎”開(kāi)發(fā)變得輕而易舉!
大家可以?huà)叽a加QQ群,關(guān)注Meta3D的直播編程,交流Web3D、引擎開(kāi)發(fā)、編輯器開(kāi)發(fā)、WebGPU、光線追蹤相關(guān)技術(shù):

關(guān)于作者
楊元超,專(zhuān)注于Web3D、引擎、編輯器、WebGPU、WebGL、光線追蹤,歡迎與我交流~
我的知乎
我的b站
我的免費(fèi)知識(shí)星球
我的博客
我的郵箱:395976266@qq.com
附上之前我總結(jié)過(guò)的學(xué)習(xí)經(jīng)歷,大家可以看下:
8年,從2D到3D,我的學(xué)習(xí)之路
浙公網(wǎng)安備 33010602011771號(hào)