如何學習計算機圖形學?
本人有數學和C++基礎,目前在某遊戲公司工作,想從代碼的角度來學習計算機圖形學,打算從事遊戲引擎等相關開發,希望各位乎友指導從入門到深入到進階的學習方式,以及相關參考書籍。
我推薦如下學習順序:
1,「玩」卡渲。呵呵,自造的傻詞兒。就是通過OpenGL或者Direct3D來驅動顯卡渲染圖形及場景。不用什麼都懂,先玩起來。玩得越開心越不容易放棄。
學OGL:http://ogldev.atspace.co.uk
學D3D:用「龍書」吧。
2,做軟渲。包括光線跟蹤和柵格化兩種。建議先以柵格化為主。做完後你就一下子明白了很多玩卡渲時不理解的地方。
邊做軟渲的同時,邊把「虎書」讀了。
補充:評論里有人問做軟渲的思路是什麼?簡單一句話,你玩「1」的時候應該已經基於一小批api做了一個可以出圖的程序了吧?現在你自己把這批api的功能實現一遍,做到「1」的程序源碼基本不改,重新編譯連接一下能出同樣的圖即可。(基本不改意味著shader恐怕得重新寫一下)
3,玩圖形引擎。Unity或者UE,以使用者的身份徹底玩通一個。邊玩邊想想它的背後可能的實現方法。
4,接下來有兩個方向。
一個方向是研究高級實時渲染技術。重新回到「1」或者「2」裡面,把常見的高級效果研究和實現一遍。別的我不知道,只知道GPU Gems裡面有很多好東西,有不少都挺燒腦的,非常值得研究。
另一個方向是研究一個現成的圖形引擎源碼。找到UE的源碼,忍痛研究一遍。成功後你就可以實現自己的圖形引擎了(雖然這樣做不一定有意義)。還有一個民間高手寫的圖形引擎「KlayGE」也可以研究。(評論里有人質疑我把恭大神說成民間高手。是我用詞不當了抱歉~不過也不至於對他那麼虔誠吧^^)
如果沒有女朋友,則「4」的兩個方向可以先後都搞一遍!也可以同時搞。其實大部分GPU Gems的文檔,上下班路上就可以看。像SSAO這種級別的,上班或下班一路就可以看懂。(按一個小時路程算)
---------------------
基本上過了「2」你就算入門了。
過了「3」就差不多可以求職了。
而過了「4」……我就沒資格回答你圖形學方面的問題了。
謝邀。
蟹腰,
知乎上面已經有很多類似的問題,也有很多乾貨滿滿的答案。
相關主題:
系統的學習計算機圖形學,有哪些不同階段的書籍的推薦? - Milo Yip 的回答 - 知乎
因為題主說了是遊戲公司,所以還有這一篇:
遊戲程序員的學習之路(中文版) - 知乎專欄
我自己覺得這本很不錯
《互動式計算機圖形學:基於OpenGL著色器的自頂向下方法》
較新的版本是
《互動式計算機圖形學:基於WebGL的自頂向下方法》
1,《計算機圖形學》
2,《opengl紅寶書》
3,《opengl遊戲開發》
4,osg源碼,ogre源碼,ue4源碼(其實我並沒有看過ue4源碼)
5,unity
然後把前4個忘個精光
謝邀,順便總結一下自己學習圖形學的資料吧。
推薦這本《3D遊戲編程大師技巧 (豆瓣)》,
這本書中文版將近1000頁,英文版將近2000頁,雖然厚,但是物超所值,編排合理,語言幽默,知識講解還通俗易懂,真心喜歡,最近還在二刷。缺點是內容老舊,講的是軟渲染,跟不上時代發展,有大神說看這書只適合去硬體公司。
所以,要跟上時代的發展,就要學習OpenGL或者DirectX中的一個了,而我選了OpenGL。強烈推薦Youtube視頻:https://www.youtube.com/watch?v=6-9XFm7XAT8t=475s ,SIGGRAPH出的3小時的OpenGL入門視頻,入門首選。
入門之後,強烈推薦 http://learnopengl.com 這個網站鞏固進階OpenGL的知識,
這個Number1可不是吹的,最後的實戰是帶你做一個超級無敵炫酷好玩的打磚塊遊戲,作者真是太用心了。
學過的目前就這麼多了,結束~
延伸閱讀請看這個:
Unstoppable Dream(遊戲開發資料推薦) - 知乎專欄更多相關內容:我的知乎導航 - 知乎專欄
milo大大有一篇完整的攻略請移步去看。遊戲程序員的學習之路(中文版) - 知乎專欄 (這裡雖然是遊戲程序員,但是渲染部分技能基本都跟圖形學強相關。)
不過我說正經的,真的想好好學,理論上正確的途徑是高考考浙江大學-&>報計算機科學專業計算機圖形學方向-&>讀計算機圖形學研究生,進國家重點實驗室-&>讀計算機圖形學博士。這樣會有最學術最權威的人幫你規劃好一切按部就班學習努力就行了。
我斷斷續續地學習圖形學有一段時間了。主要是感興趣於shader在遊戲中的應用。剛開始想學習時最頭疼的一點是「如何入門」。學習過程中漸漸有了些自己的看法
看到這個問題,想說下:
書,不建議初學者讀。書良莠不齊,講得好的書不多。而即便是好書,書的不少理論也比較晦澀,有不少的數學公式什麼的,初學者難看懂
個人建議初學者學習路徑:
第一階段 找個opengl系列教程跟著學一輪
讓自己對渲染管線什麼的有個大致概念
推薦的教程:
- opengl-tutorial (教程有中文版):Home
- Learn OpenGL, extensive tutorial resource for learning Modern OpenGL
第二階段 找自己感興趣的特效,看看別人源碼,思考其實現
比如,你看到網上遊戲中使用到的屏幕模糊效果,覺得有意思,就找下blur相關源碼看看
推薦網站
http://shadertoy.com
3D遊戲大師編程技巧。這本書就是講軟體光柵化及渲染的,整本書淺顯易懂,豐富有趣,把圖形學底層的概念和演算法講的很直觀透徹。
然後再看DirectX SDK或者龍書,有了上面一步做基礎,再看這些東西就不會感覺那麼突兀。
然後把DirectX里的那些sample 研究研究,改一改,看看改過之後會有什麼問題或者效果。
最後再看那些特效的實現,什麼各種光線,各種陰影,各種。。。。。。
先看武林秘籍的目錄:Real-Time Rendering
推薦閱讀:
※如何看待電影《爵跡》於3月28日曝光的渲染序列及其技術水平?
※計算機中的圖片為什麼都是矩形的?顯示圓形也只能周圍透明?
※是什麼限制了遊戲或實時圖形, 以至於遠景如山脈, 天空都是紙片貼圖?
※為什麼Unreal 4引擎能輕易實時渲染出vray要花半天才能渲染出的場景?