• <noscript id="yywya"><kbd id="yywya"></kbd></noscript>

  •   謎一樣的GPU

      手機,現在已經是人手一部甚至兩部了,餐廳酒吧、地鐵巴士、馬路街邊隨處可見的低頭族大家早就見慣不怪,在飯桌上如果你發現沒有人低頭看手機的話反而會懷疑自己是不是到了外星球。

      吸引人們對手機目不轉睛的自然是它顯示的內容, 相對于個人電腦剛剛問世時候只能呈現有限的文字以及低分辨率的畫面而言,現在的智能手機已經可以在巴掌大的屏幕上做到高達 3840×2160 的分辨率,能呈現非常豐富的畫面元素 

      臺式機和智能手機雖然存在較大的性能分野,但是兩者間一直在互相借鑒,例如操作系統界面都采用了硬件三維加速來強化用戶體驗:豐富元素的表現力以及實現界面的視覺擴展(例如窗口的旋轉切換),而實現這些三維硬件加速的正是許多手機、電腦文章報道中的 GPU,比如說Qualcomm(高通)的Adreno、蘋果的PowerVR、ARM的Mali。

      因為應用上的相似性,移動端的GPU和臺式機GPU發展最近這幾年幾乎都是齊頭并進,理論上如果將移動端的GPU放大后也是可以拿到臺式機上使用的。  

      (NVIDIA推出的NV10)

      GPU的全稱是 Graphics Processing Unit,也即是圖形處理單元的意思。這個概念的最早確定是NVIDIA(英偉達)公司在1999年發布型號為 GeForce (代號NV10)的三維芯片時首次提出,當時的定義是:

      三角形變換能力達到每秒一千萬個三角形以上的三維芯片。

      時至今日,當年NVIDIA提出的GPU定義相信已經很少人記得,GPU這個名詞因為微軟DirectX 7采用而普及,此后 NVIDIA、微軟、ATI(后來的 AMD)、Intel以及幾乎整個相關行業、媒體大量采用而成為大家非常熟悉的名詞,不管是臺式機、服務器、工作站還是游戲機、移動設備,它已經是無處不在。

      相較于GPU的定義,GPU 到底是怎么一回事,它是如何實現三維渲染以及為何后來可以勝任非圖形計算,知道的人就更少了,本文嘗試在這方面做一些簡單的介紹。

      GPU到底是如何實現三維渲染呢?

      要了解GPU是如何進行渲染操作其實并不難,宏觀角度來可以將其簡化為下面的樣子:

      應用程序-》幾何處理-》光柵處理

      在圖形處理中,應用程序執行的相關操作包括了碰撞偵測、全局加速算法、動畫處理、物理模擬等。  

      幾何處理就是對圖元進行處理,所謂圖元是指點、線、面這類幾何體,而光柵化則是將確定了位置、大小和光照的幾何體映射到屏幕空間柵格化后的處理,例如像素著色、貼圖、混合。

      在沒有圖形芯片(顯卡)之前,幾何處理、光柵處理都是由 CPU 或者 FPU(浮點單元)、SIMD (單指令多數據)單元協助來完成,隨著芯片技術的進步,其中的幾何處理、光柵處理開始逐步放到專門的芯片上執行,之后這些專用芯片又被集成到一塊,逐漸形成了現在的 GPU。移動處理器同樣經歷PC這一過程,比如說高通最早的處理器MSM7225/7625就沒有集成GPU ,甚至是2D處理都是交由CPU完成。  

      (智能手機與PC一樣,經歷過無GPU時代)

      應用程序把需要進行三維渲染或者計算的數據和指令遞交給 GPU,由GPU來執行幾何處理以及光柵處理,這樣的處理方式被稱作流水線(pipeline)。

      采用流水線的方式可以將工作拆分為若干個處理環節,也就是所謂的工位(stage)或者功能階段,這些工位本身也可以繼續拆分成若干部分,也可以實現(部分的)并行化。

      幾何處理階段需要做些什么啥呢?

      幾何處理階段執行的是頂點、多邊形級別的處理。這一步可以拆解為 5 個工位或者說 5 個步驟:

      &bull;對模型及視圖進行變換(transform)

      &bull;頂點著色

      &bull;投影

      &bull;裁剪

      &bull;屏幕映射

      模型及視圖的變換

      模型變換

      由于每個模型都有自己的坐標,因此在成為屏幕上的畫面對象之前,模型需要變換為多個空間或者坐標系。

      作為對象的模型空間(Model Space,或者叫模型自空間)的坐標被稱作模型坐標,在經過坐標變換后,模型就會處于世界坐標或者世界空間(World Space)里,也就是確定了該模型在場景中的方向、位置。 

      我們允許在場景中存在多個模型的拷貝(被稱作引用),這些大小一樣的引用可以在同一個場景中有不同的位置、方向。


  • <noscript id="yywya"><kbd id="yywya"></kbd></noscript>
  • 东京热 下载