最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

(分享)我的圖形學學習歷程

2018-04-24 18:19 作者:AICDG  | 我要投稿

從大三開始接觸圖形學到現(xiàn)在,已經(jīng)四年多了。我的職位也經(jīng)歷了算法工程師->前端工程師->無線工程師->游戲引擎程序師的變化。也恰好在這幾年,圖形學界,大家等到了新的圖形API,也見到了VR由盛轉衰,手游興起,國內(nèi)手游市場從百花齊放到又是只剩幾個大佬獨大,最火的引擎從cocos2dx變成了unity。短短數(shù)年就有如此之大的變化,不得不感慨幾句。

17年底,中國游戲收入規(guī)模超2000億,且增長率依舊樂觀

我先想提一句,就是現(xiàn)在這個時代,游戲開發(fā)所需要的圖形學知識,確實是越來越少了。游戲引擎開放,成熟,易用,可靠。unity引擎非常贊,UE4現(xiàn)在勢頭也非常猛。如果目標是游戲公司客戶端開發(fā)崗的話,推薦兩者至少其一理解一下,不要討論c#和c++的優(yōu)劣,反正到時候用的基本是lua。如果目標是游戲開發(fā),那熟練使用引擎,理解業(yè)務比鉆研圖形學收益大得多。

在xlua誕生以前,ulua,slua,nlua這些u3d熱更新框架競爭還是很激烈的

圖形學的一些常見誤區(qū)

  1. 圖形學 != DX/OpenGL/etc.

  2. 圖形學 != 渲染

  3. 學好圖形學 != 能做游戲引擎

  4. 圖形學很難

網(wǎng)上有個段子,程序員三大浪漫。雖然這也是輪子哥眾多黑歷史中的一個,但也證明了計算機圖形學有獨特魅力 —— 就算是傳統(tǒng)軟件程序員,也對CG心有向往。

計算機圖形學,英文Computer Graphics,簡稱CG。CG是一個很大的范疇,在國內(nèi)的話一般是兩個大方向——建模和渲染,渲染又分實時渲染和離線渲染。簡單來說就是三維世界的描述和展示。

當下,實時渲染最常用的兩個API,就是direct3D和openGL了。當然,基于mantle設計的幾個新圖形API——Metal和vulkan增長也是蠻快的。vulkan在安卓上剛剛起步,有待發(fā)展,而Metal在ios上就比重很大了。兩三年前做ios可能還要考慮同時支持openGL ES和Metal,現(xiàn)在的話就打Metal包就可以了。ios平臺,率先完成了去openGL的大業(yè)。

驅(qū)動層支持Command Buffer,以及PSO,是mantle高效的重要原因

我的圖形學學習流程

終于回到標題了,本節(jié)分享一下我的圖形學學習和演進過程。我自己也是剛入門的鶸,所以走了很多彎路。

API篇:相信有無數(shù)人給灌輸一個觀念,就是API不重要,思想才重要。這個觀點沒有錯誤,但是對于新人來說很危險。圖形學是個很工程的學科,知其然,然后探其所以然。不至少會用一個三維API就直接看三磚(PBRT,RTR,AGI),絕對是事倍功半的。

  • webgl —— 我圖形學入門真的是靠webgl入門的,看的就是那本《webgl編程指南》?!秝ebgl編程指南》這本書我也推薦所有想入坑圖形學的人當做入門起手,這本書講圖形管線非常細致。我從webgl入門其實和我剛上大學時候的,HTML5異軍突起,大家都在講移動應用已死,H5就是未來。想想其實挺幸運,webgl入坑可以繞過openGL對于新人的各種坑——openGL到底是c/c++的庫,c/c++的依賴問題對于新人來說都不是個簡單的問題?!督换ナ接嬎銠C圖形學第7版》把教學語言從openGL改為了webGL,也是基于同樣的原因。

  • openGL 3.3 core —— 接下來就離開瀏覽器,回歸桌面了。learnopengl是我學習openGL 3.3 core的主要參考,主要收獲是兩個,一個是延遲渲染,一個是MRT。

娛樂大師顯卡跑分,利用延遲渲染可以支持巨量的動態(tài)光源
  • openGL 4.x —— 主要參考的就是openGL4 shading language cooked第一版第二版兩版。我當時的主力開發(fā)機是mac,mac只支持openGL 4.1,額外支持openGL 4.2的texstorage。所以mac的話最好兩版比照著看,用win和Linux的話直接看第二版就好了。推薦書籍除了之前的還有openGL development cookbook和紅寶書第8版(今年第9版漢化也有了),我并沒有把紅寶書地8版看完,只看了其中的計算著色器部分

  • vulkan —— 看vulkan主要就算三本書,vulkan programming guide,learning vulkan,vulkan cookbook。那個時候vulkan的窗口封裝庫,比如glfw、sdl、qt都沒有,需要自己寫win32、x11/wayland窗體再用wsi起上下文,還是非常原始非常惡心的。現(xiàn)在這些庫都成熟了,新手學起來會方便很多。推薦一下 https://vulkan-tutorial.com/,基于glfw的。

  • openGL ES 3.0 —— 有了之前的基礎,這個就很簡單了。openGL ES 3.0和openGL 3.3基本一模一樣,這個對新手的一個砍是EGL,因為gles就沒有很好的跨平臺窗體封裝了,自己調(diào)用EGL/EAGL和native系統(tǒng)結合很必要。主要參考書兩本,openGL ES 3.0 programming guide,還有openGL ES 3.0 cookbook。

  • directx11 —— 對,我DX11是vulkan之后看的。使用的sharpDX,所以c#稍微入了點門,HLSL能看懂一些了。看的書是Direct3D Rendering Cookbook,并不是更著名的DX龍書。

DX11渲染流水線,openGL 4.3才實現(xiàn)渲染/計算雙queue family,RTX/DRX又新加一個列簇四種shader
  • metal —— 這個我也是最近才研究的。因為metal相關的資料真的少,metal programming guide,這本差不多是市面上的唯一了。這本書對于圖形部分收獲很小,但是MPS做GPGPU,還有MPS實現(xiàn)CNN,都是意想不到的收獲。

技能樹篇:略

就業(yè)方向

在國內(nèi),圖形學差不多是兩大方向,一個是游戲(我的師兄們基本都做游戲了),另一個是是去建筑、設計、景觀園藝相關的公司(CAD,我的師姐們很多是這個方向)。

 國內(nèi)的游戲引擎崗位現(xiàn)狀和前景

國內(nèi)的游戲引擎崗位,和很多人想的(自研)游戲引擎開發(fā),可能有些差距?,F(xiàn)在,就我個人看到的情況,是越來越多的公司開始放棄自研引擎轉投unity和unreal這種更強大更完善的游戲引擎。自研引擎脫離業(yè)務,更像一個技術練兵的玩具。不過也要承認,自研引擎即便性能很好,想在客戶端和美術那推行阻力也很大(原因懂的都懂)。

雖然沒有自研的需求,但是不代表不需要引擎這個崗位。引擎崗依舊是游戲公司中重要的位置。主分兩個方向,GE和TA。

GE招聘需求

GE —— 游戲引擎程序,在國內(nèi)主要負責游戲引擎的二次開發(fā),在現(xiàn)在主要是unity和unreal engine 4為主。負責內(nèi)容包括但不限如下:

  1. 游戲功能腳本化,就是將游戲引擎的功能封裝,給客戶端用。使用腳本語言劃分業(yè)務層和核心層,同時還能給程序提供熱更新的能力(因為某家應用發(fā)布機制限制)?,F(xiàn)在業(yè)內(nèi)以lua為主,不過網(wǎng)易和騰訊內(nèi)部也有些部門使用python。我個人認為python很有前景,swig/pybind11這樣的輪子也很好用。

  2. 接入第三方SDK和庫。第三方SDK,舉幾個例子,微信、支付寶的支付接口,各個平臺的平臺SDK,第三方埋點統(tǒng)計,還有硬件的SDK(安卓專屬大坑,主要工作就是手工喚醒CPU大核)。外部庫,舉個例子,比如fmod/criware/wwise/Resonance這樣的高級音頻模塊,lz4-HC壓縮等。

  3. 修改引擎的bug。拿我負責過的一個功能舉例,UE4在cook資源時只能cook LDR或者HDR一種資源,但是期望是在低端安卓機上使用LDR,在高端機上使用HDR。這時候就要修改UE4資源cook的邏輯,強行讓他同時cook LDR&HDR兩種格式的資源。

  4. 優(yōu)化。

調(diào)試渲染復雜度

TA —— 技術美術,更加萬中無一的人才。雖然A轉T有眾多的優(yōu)勢,但是其實業(yè)內(nèi)的情況是99%的TA都是T轉A(數(shù)據(jù)來源于騰訊的一位高級技術美術口中)。TA要求又能做美術,又能寫代碼,必須精通引擎和各種CAD工具,普通美術日常邊邊角角的功能TA都應該會用。培養(yǎng)一位TA的成本是很高的?,F(xiàn)在獨立游戲圈有很多TA大神在單干。

TA招聘需求

至于游戲引擎的前景,只看國內(nèi),預計一兩年之內(nèi)可能會有個小爆發(fā)。因為看現(xiàn)在形勢,手機的性能基本可以了,而unity的效果優(yōu)化成本過大(unity2018著重處理的問題),分析的話19年開始,ue4手游會開始大幅增長,因為ue4的難度,業(yè)內(nèi)會短時間增加對GE和TA的需求。

GE新手速成建議

下面是從最功利的角度,給想要入行GE的同學看的準備。

  1. 一門編譯型語言。比如c++/java/go/rust/c#/swift等,話用猛漢瓦魯多里對新手的一句建議,有偏好用偏好,沒偏好用盾斧。如同python是AI的盾斧,js是web全棧的盾斧,c++就是圖形學里的盾斧。c++的話,可以看c++ essential入門,看c++ primer進階??吹臅r候一定要做課后題,這是忠告。

  2. 一門腳本語言。推薦js/python。我沒推薦lua,因為我覺得lua的生態(tài)不是很好??梢暬_本語言,比如ue4的blueprint,unity的bolt或者Google的blocky都很有意思,不過就是寫起來高效讀起來臥槽,讀別人代碼生不如死。

  3. 熟悉一個圖形API??紤]到現(xiàn)有所有的DX12,vulkan,metal教程都是建立在你已經(jīng)有DX11/openGL的基礎上寫的,因此DX11和openGL就是入門的最佳選擇。DX11的話,你不可能不和win32 api打交道。如果不想研究win32編程,那么openGL差不多是唯一選擇了。幾乎所有語言都有openGL封裝,所以不用考慮語言偏好的問題??紤]到國內(nèi)手游為主的情況,vulkan和metal如果有條件也還是看看,vulkan的話非常啰嗦,metal簡潔很多,但是成本是有的(iPhone/iPad + mac)。

  4. 熟悉PBR。直接推薦Physically Based Shader Development for Unity 2017。表面著色,CookTorrance BRDF,microfacet theory等概念講得都很清楚。

  5. 英文。我推薦英文的主要原因,是很多中文書我讀不懂。

  6. 學歷。雖然無論各個企業(yè)的HR怎么說自己只認能力不認學歷,但是其實學歷還是客觀存在的。在GE非常明顯,如果說HR只認985211,那GE這只認TOP幾的虛擬現(xiàn)實/圖形學相關專業(yè)。

  7. 項目。GitHub還有個人blog,越裝逼越好。

結語

感覺已經(jīng)長篇大論了不少,廢話很多,望大家見諒。在圖形學和游戲引擎,scene graph,shader等方面有問題或者希望看的也可以直接留言討論。

(分享)我的圖形學學習歷程的評論 (共 條)

分享到微博請遵守國家法律
来凤县| 股票| 平塘县| 东港市| 法库县| 开远市| 宁安市| 平陆县| 犍为县| 鸡西市| 安庆市| 祁连县| 石城县| 彭泽县| 绥德县| 盐池县| 元阳县| 乾安县| 樟树市| 来安县| 阳原县| 秦安县| 佛山市| 育儿| 自治县| 德惠市| 二连浩特市| 望谟县| 昌都县| 鸡东县| 关岭| 高州市| 家居| 朔州市| 视频| 贺兰县| 巴林左旗| 南华县| 正阳县| 宁国市| 南溪县|