求實時渲染基本演算法好書推薦?

想從事實時渲染方向,圖形學初學者,數學,英語,演算法和數據結構等基礎還算紮實,現在是《real time rendering》剛開始讀,剛學完opengl es,按@張靜推薦的那本OpenGL es 3.0書學習的,知道大部分api怎麼用了,但對背後的演算法不甚了解,現在想系統的學習一下圖形學的基本演算法(渲染管線從頭到尾),打好基礎,求前輩推薦一下好的書籍,英文,中文都可以,最好技術上比較新。

補充:深以為讀本好書要比讀幾本爛書要節約時間,比較喜歡看知乎的大牛推薦的書。


Scratchapixel

我看到這個網站後,感動得要哭!這一個網站就夠了!!好好珍惜吧!

想學opengl, 就用這個網站OpenGL Step by Step。非常贊!老外好無私!

想學DX,就看『Practical Rendering and Computation with Direct3D 11』。 這本書把pipeline講得非常清晰。這是我見過最好的一本DX的書。 (小八卦,real-time rendering的作者曾把這書當禮物送給我同事)


如果你能讀《RTR3》,就先把它讀完一遍再說吧,屆時希望能發一份簡歷給我。

相關問題:系統的學習計算機圖形學,有哪些不同階段的書籍的推薦? - Milo Yip 的回答


來補充幾本書,可能跟實時渲染關係不大,比較偏數學一點

Modern Mathematics and Applications in Computer Graphics and Vision by Hongyu Guo

翻了下目錄,市面上能找到的圖形學方向的書,數學講的比較深入的一本。建議有本科數學基礎的人來讀比較好。

Computer Animation: Algorithms and Techniques by Rick Parent

也是翻了一下目錄,準備近期讀的一本書

Fluid Simulation for Computer Graphics by Robert Bridson

模擬方向的上乘作品

MIT 18.330 Numerical Analysis

http://homerreid.dyndns.org/teaching/18.330/

觀點非常現代化的一門數值分析課

Home

OpenGL Tutorial。這個在線教程手把手,相當詳細。

Computer Animation Information Page

Computer Animation資源合集,不過比較老


除了前面推薦的Scratchapixel和Real time rendering第三版之外,我再推薦另外一個比較適合初學者的學習資料。就是斯坦福的計算機圖形學課程CS148(http://web.stanford.edu/class/cs148/lectures.html),裡面會由淺入深地介紹圖形學的演算法,包括課後的小作業(提供Github上的base code)、延伸性的補充資料和SIGGRAPH文章,可以讓初學者從寫一個小的圖形演算法程序去掌握基本的概念和演算法,同時可以根據自己的喜好繼續深入某個主題了解更深入前沿的演算法和技術。

對於渲染管線,很多講OpenGL和D3D的書都會涉及,但深入到細節的資料卻很少,因為這涉及到GPU的架構細節,對學習者的要求比較高,除了需要掌握基本的圖形演算法外,還需要對硬體電路、硬體架構具有一定的基礎。這方面的資料我推薦斯坦福的實時圖形架構的課程CS448A(http://www.graphics.stanford.edu/courses/cs448a-01-fall/),課程的作者是Kurt Akeley,

前SGI的CTO(如果對顯卡的發展歷史比較清楚的人會知道SGI是一家什麼樣的公司,並且據我所知目前NVIDIA當中很多架構的大牛包括前CTO都是出自SGI),OpenGL第一版的設計者之一,NVIDIA Cg shading language的設計者之一(Cg是NV最早提出的shader語言,即目前GLSL和HLSL的前身,大家都知道是NV第一個提出了GPU的概念)。雖然課程中講到的圖形架構跟目前最新的NV Pascal/Volta以及AMD的Vega架構距離比較遠,但此課程仍然是學習者想了解GPU硬體架構的一個不錯的基礎材料。

最後推薦的是Mesa,一個開源的OpenGL 3D graphics library。相信很多使用OpenGL和D3D的人只知道把vertex data,draw command,image,surface傳給OpenGL/D3D driver就好了,但其實driver裡面很可能有很多性能上的優化,對於想把圖形渲染性能做到極致的人可能會對這個感興趣。

另外,大家都知道Vulkan將會成為OpenGL之後新一代API,Vulkan的好處是提供了low latency的API,缺點是API非常接近底層硬體,因此,對於GPU硬體不是非常熟悉的程序員可能會碰到比較多的困難。而了解3D graphics library將會對學習者了解底層硬體的使用和編程會有很多幫助。

希望這個從圖形渲染演算法到driver再到GPU硬體的data flow,能幫助大家了解在遊戲中看到的美輪美奐的場景是如何一步步經過處理顯示出來的!:)


如果讀書是為了從事實時渲染,可能是一邊讀書,一邊實踐更好一些。讀directx的sdk和相關的sample,然後自己寫一些demo,再進一步帶著問題去讀書,逐漸積累熱情(不是一開始的激情那種),知識和實踐技能


去看Milo 大神的豆瓣書單。我當初還是一個小白的時候不小心搜到了Milo大神的豆瓣書單(還專門註冊了個豆瓣賬號去關注Milo大神豆瓣),選了幾本看就進了豬廠了。

如果你英語夠好的話,配合opengl wiki,按照教程比如 learn-opengl網站或者opengl-tutorial網站,把它每個例子搞懂。 看完了wiki和這些教程,我覺得你說的「渲染管線沒有全局的理解」的問題應該解決了。最重要的是要自己寫Demo,一味的看書我覺得不太行。

如果你對矩陣為什麼能變換空間,什麼基啊,這些基礎數學不太能理解。建議你去看麻省理工的線性代數公開課,那個老教授對線性空間,基向量,矩陣的秩之間的關係闡述的比較清晰易懂。 相比國內的很多線性代數上來就一堆的定義定理,然後還不知道到底是學了啥要好多了。哦,還有買本那個《3D遊戲與計算機圖形學中的數學方法》來看,順便做手冊。

上面基礎打牢了,如果你對高級圖形技術感興趣,大概就要看Real Time Rendering 3, Physically based rendering, GPU Pro, GPU Gems,Level of Details for 3d graphics, Computational Geometry Algorithms and Applications,甚至去看SIGGraph論文吧。建議選擇一個方向或者兩個方向去鑽一下,比如光照啊,陰影啊,全局光照啊,Mesh簡化啊,參數曲面啊。模擬就算了吧,如果不打算搞學術的話。深入了,唉,其實搞到最後全是數學,實際上最後又回去補數學了。


打雜狗一個,只推薦自己喜歡的書,順便提一下對其他人提到的書的看法。

題主問圖形學基本演算法,那我第一反應是數學。首先最基礎的是矩陣乘法,最主流的光柵渲染器都是基於這個實現的,然後什麼標架變換,什麼四元數,什麼曲線什麼曲面。。。

高端一點的就是各種光照,都是各種物理公式,然後各種近似各種正著反著地往裡套,其實也是數學。

演算法也有,比如八叉樹之類的應該算演算法,但實際運用還是脫不開數學。

所以我推薦數學書: Mathematics for 3D GameProgrammingandComputerGraphics.

我不敢說「入門看這書夠了」,也不能保證你一上來看這本書一定能看懂。但是如果你能深入學下去的話,這本書一定是本不錯的參考書。

很多書大而全,比如Real-Time Rendering,但如果你真正遇到了問題,它未必能解決。比如你問它常見的透視投影變換矩陣怎麼來的,它不會給你講,比如你對紋理坐標差值的透視矯正有疑惑,它也不會給你講。

而這些都是爛大街的演算法。

甚至因為是爛大街的演算法,很多書都不講。但你遇到了問題你可以從數學書里查。尤其你提到3D API「背後的演算法」。

這種問題的回答里通常會有人提到Introduction to 3D Game Programming: With Directx 11這一系列的書……如果你本來就擅長寫代碼那看這本書入門妥妥的。同理還有openGL紅寶書(那本書開頭幾章講了一些固定管線的知識很讓我不滿)。不過既然你「知道大部分api怎麼用了」,那麼看這類書就沒意義了。

有人提到《3D遊戲編程大師技巧》,那本書用的API太舊,我不知道對題主來說合不合適。但是那本書里的數學部分可以和Mathematics for 3D GameProgrammingandComputerGraphics放在一起當數學參考書。


如果不是大牛,知乎上有關圖形學的問題基本上看Milo Yip就足夠了,水平高,熱於且善於分享。我仔細看過的圖形學書籍(系統的學習計算機圖形學,有哪些不同階段的書籍的推薦? - Milo Yip 的回答中列的書或多或少都看過)中,感覺基礎階段最好的是《Fundamentals of Computer Graphics, Third Edition (豆瓣)》,實踐的話《Interactive Computer Graphics: A Top-Down Approach with OpenGL》也不錯。RTR仔細通讀前四章,後面的一邊實踐一邊慢慢讀吧,否則像我這種不夠堅強的人就很難愉快地讀完。圖形學的書基本可以分三類:

1. 偏重理論類;

2. 偏重實踐類;

3. 精粹類;

第1類精讀,第2類快速通讀,第3類選讀。具體哪些屬於哪一類就不詳細對應了,相信題主看過目錄就能對上,也可以看看亞馬遜(.com,不是.cn)上的書評。

如果不糾結語言和API版本的話,倒是可以考慮用WebGL來實踐,感覺比用OGL/D3D方便。Three.js這類基於WebGL的引擎對於圖形學的學習來說可能比基於Cpp的那些引擎更輕量,更容易專註於shader的編寫。


對覺得PBRT太厚的同學補充一本:Advanced global illumination

流體:Fluid simulation for computer graphics

剛體:

沒讀到過非常全面的書,所以寫三個

http://www.pixar.com/companyinfo/research/pbm2001/pdf/notesg.pdf

http://image.diku.dk/kenny/download/erleben.05.thesis.pdf

Realtime collision detection


《3D遊戲編程大師技巧》有中譯本,照著寫一遍下來就入門了。


http://www.learnopengles.com/


看下這個 http://www.songho.ca/opengl/index.html,再 手寫個z buffer 掃描線演算法,再看看opengl api,再看看glsl,就圖形學入門了。

接下來看rtr, gpu gem之類的,裡面有好多酷酷的東西。有空再看開源繪製引擎代碼,如ogre及插件的代碼。

如果在學校,可以關注下siggraph文章

這樣對圖形學基本心中有數,知道方向。


大牛大神推薦的書很多都很難讀,個人推薦一本很適合初學入門的:

互動式計算機圖形學——基於opengl著色器的自頂向下的方法(第六版)

最新的第七版是基於WebGL的,第六版是OpenGL,有免費英文版PDF下載。

這本書的特點就是好讀,沒有複雜的概念,全是基礎,對於圖形學外行入門是很好的。

我就覺得這是本神作。


還以為沒人提,拉到底看見了最後一位的@匿名用戶 提到了。渲染方面的經典,略偏重理論,但是所有內容均有源代碼(偽代碼)。 @Milo Yip 在系統的學習計算機圖形學,有哪些不同階段的書籍的推薦? - Milo Yip 的回答里亦有提到。若有志於深入研究圖形學領域不要錯過

PBRT:

Physically Based Rendering: From Theory to Implementation


讀什麼opengl啊。搞實時渲染也肯定先讀pbrt啊。


https://www.zhihu.com/question/34831048/answer/156074357


從頭到尾翻過的大書,簡單而且系統,可以當參考書也可以從頭看到尾


學Opengl,明顯應該看nehe啊,看完應該說就能入門了


讀了opengl es 3.0的話,還是要具體實踐一下的,可以按照下面的步驟:

1 畫立方體

2 帶diffuse貼圖的立方體

3 加入一個方向光,計算diffuse,specular

4 加入一個平面,實現陰影

既然這本是好書,就讀精吧,這本書里後面的高級主題的Per-fragment lighting 和 shadows using a depth texture,你自己要是都實現了,再去看rtr3吧。

書中的代碼都在git上可以參考

https://github.com/danginsburg/opengles3-book

或者參考power vr的sdk也可以


我們那個時候是啥來著, 紅寶書

網頁是啥來著, NEHA的GL教程之類的

我居然還記得


綠色的。翻一翻知道圖形學有哪些

然後根據興趣去做個具體的東西。


1CGB3D computer graphics / 3rd editionWatt, Alan HAddison-Wesley, 2000

2OPGBOpenGL programming guide: the offical guide to learning OpenGL, version 1.4 / Op ...Shreiner, DavidAddison-Wesley, 2004

3ICGWOBInteractive computer graphics: a top-down approach using OpenGL / 5th editionAngel, EdwardAddison-Wesley, 2009

教你一個辦法 查找xxxxxxxxx學校+Graphics 然後拉到最下一般會有講師推薦讀物


我跟題主一樣都是剛接觸圖形編程,不過我看的是DirectX。個人覺得DirectX11還是不錯的,技術也算先進,而且今年微軟又要推出新一代的Dx,功能更強大。入門的《Introduction to 3D Game Programming: With Directx 11》/*經過高人指點後修改成這本書*/ 挺仔細的。手上還有本《3D遊戲引擎設計》,這本書難度就不小了,但是內容很全面深入,相信對圖形編程大有幫助。網上也有很多不錯的系列教程,也值得學習。另外一個就是Dx自帶的例子。


推薦閱讀:

如何判定一點是否在給定頂點的不規則封閉區域內?
WPF 使用 OpenGL 4.5 繪圖太卡?
渲染的時候是不是頂點數目越少越好?
WebGL 和 OpenGL ES 有什麼區別?
WebGL 是否需要以 OpenGL 為學習基礎?

TAG:OpenGL | 計算機圖形學 |