很久沒來這了,也一直想寫點東西,可惜沒時間寫。昨天突然想到點東西,想寫下來。
說說3D編程的4個境界吧,由於我個人水平和見識有限,以及時間比較倉促,說的不對不好,還請諒解和指正。
第一階段:初學者階段。
這個階段主要是熟悉3D圖形學的基本原理,和基本api的使用。
特別是對於空間的變換,矩陣的原理要有非常清楚的認識。
能夠用簡單的資源,做一個簡單的demo,基本上就是達到了。
這個階段比較簡單,基本上每個人都可以達到,學習方法也很簡單,就是看書,看demo,寫代碼。
時間周期大概1年。
第二階段:進階階段
過了第一個階段,一般人會走兩條路。一種人會選擇直接學引擎,開發遊戲。另一種人,會選擇先學情境管理和進階渲染。
這個視每個人的目標和愛好不同有所不一樣。
做好demo後,就會想著怎麼讓效果更好,於是就學了很多進階渲染,比如陰影,法線貼圖,HDR,反射折射等。
做了很多效果後,發現效率低下,於是就寫一些情境管理方案。
能夠基本實現情境管理和一些進階效果,基本上這個階段就到達了。
國內大部分3D程式在這個階段。
這個階段要痛點,自學達到需要一些毅力。如果你在公司裡做,有人指導,也有測試資源,那會容易很多。
這個階段的瓶頸在於沒有經曆過非常複雜的情境和效果,對於3D認識還是比較孤立的。不過已經打下了良好的基礎了。
這個階段應該也都開始熟悉一款引擎了。
時間周期每個人差別很大,1-2年左右。
第三階段:3D成熟階段
當第二階段學得很好的時候,就會覺得自己像個高手了。有的人開始自己設計開發3D引擎了。
當發現,自己設計的情境管理和渲染都很不錯的時候,可是效率還是不盡如人意。
當效果複雜,每幀都需要多遍渲染情境的時候,就發現了,原來還是做了很多重複的事情,以及佔用了很多重複的資源和頻寬等。
這個時候會靜下心來,好好想想情境系統和邏輯該怎麼設計才能效率最高,沒有重複計算。
瞭解硬體的資源管理方式,結合自己的需求,解決資源的不當佔用和頻寬的隨意浪費的情況。
深入熟悉硬體,徹底瞭解顯卡流水線的特性,充分利用流水線的特性進行最佳化,這個時候對dx/opgl api也已經非常熟悉了,甚至一個枚舉參數都瞭解它背後的意義。對於圖形的debug,也非常熟練了,一般的渲染問題很快就解決了。
這個時候應該知道根據不同的遊戲類型構建不同的情境系統了,即使是設計wow,crysis這種情境也可以,知道該怎麼設計材質系統,以及effect 架構了。
這個階段是最煎熬的階段,也是最開心的階段。
成長情況更是差別巨大,環境應該是至關重要。
大部分引擎其實在效率上都沒完全達到這個程度。
時間周期1年以上,上不封頂,很多人估計都到不了這個層次。如果人夠聰明,基礎夠好,環境也好,1年就夠了。
這個階段的一個特徵,圖形已經很簡單了,不想再說啥了。
第四階段:達人階段
第三和第四階段也許沒有明顯分界線。但有點是肯定不同的。
第三個階段還是花很多時間在學習摸索,到第四個階段,就是在尋求解決方案了。
更關注創作了。也許他覺得市面上沒有讓他非常滿意的引擎,至少很難找到適合中國國情的引擎。
也許他會帶著一幫小弟一起做引擎,也許是做遊戲。
這個階段技術已經不是唯一追求的目的了,還有很多很多其他的方面他會關注。
因為他的目的是讓整個社會承認他的價值,明白一點只有技術是不夠的。
這個階段特徵我也不是很清楚,無法一概而論,國內我只見過幾個人達到或者超越了這個階段。
看看自己是屬於第幾階段的。
以後有空再補充,先上班了。
補充:
第二階段和第三階段,是由明顯的分界線的。
要從第二階段過渡到第三階段,必須要寫引擎,或者修改引擎來達到自己希望的目的。
本質上講,第二階段是學習各個技術,第三階段是整合。就像武術裡,第二階段有點像在館子裡練招數,第三階段就是在外面和真人實戰。
第三階段會讓你有很多頓悟,環境好,身邊高手多,自己基礎好,悟性高,一年是可以達到的。