可以開始用 Vulkan 寫 3D 程式了!Vulkan 1.0 正式推出

在去年 GDC2015 的時候,Khronos 就已經發表了將使用新的 3D 圖形 API「Vulkan 」來取代現有的 OpenGL 了~在當時也有提過了,OpenGL 和 Vulkan 上會是完全不相容的 API。(參考《Khronos GDC 2015 新消息:Vulkan 與 OpenCL 2.1》)

只是在發表了之後,其實這段期間都沒什麼大消息,而一般的開發者由於欠缺開發環境,也沒有辦法真的開始寫 Vulkan 的程式…

不過在前幾天,Khronos 終於正式釋出 Vulkan 1.0 的規格了~而同時,桌面電腦的三大圖形晶片廠 NVIDIA、AMD、Intel 也都推出了支援 Vulkan 的驅動程式了!再加上 LunarG 的 Vulkan SDK 也已經可以下載了,所以這也代表一般開發者已經可以開始試著玩 Vulkan 了~

下面就是一些主要的連結:

閱讀更多»

Khronos 發布 3D 場景、模型用的格式:glTF

基本上,目前在 3D 電腦圖學這個領域裡面,並沒有一個真正通用的檔案格式;以 3D 模型來說,格式可以說是有千百種,包括了常見的 OBJ、STL、X3D…等等,各家都有個家的規格。而這一點,也導致了在開發程式、以及檔案交換上的困難。

雖然 Khronos 之前也有訂製「COLLADA」這個標準(官網),但是他並沒有針對傳輸以及讀取做最佳化,所以對目前的 WebGL 來說或許已經不太適用了。(也很久沒更新了…)

而為了解決這個問題,Khronos 推出一個新的標準、glTF(GL Transmission Format),希望可以成為「JPEG for 3D」;而他的設計目標,就是希望可以提供一個有效率、並可以方便傳輸的檔案格式、定義,讓程式開發者,可以方便地儲存、讀取 3D 的場景設定、以及模型。

官方的公告是《Khronos Finalizes glTF 1.0 Specification for Efficient, Interoperable Transmission of 3D Scenes and Models》,官網則是:

https://www.khronos.org/gltf/

閱讀更多»

K4W v2 C++ Part 6:使用 OpenGL 繪製場景

之前在《簡單的深度讀取方法》、《使用 OpenCV 顯示深度影像》、《讀取彩色影像與紅外線影像》和《讀取人體位置(Body Index)》這幾篇文章,已經大概解釋過了怎麼去讀取 Kinect for Windows v2 的影像資料了。

而在《簡單的去背程式》一文,則是有大概介紹過 ICoordinateMapper 這個介面,說明怎麼透過他提供的函式,來做不同座標系統的轉換了。不過當時 Heresy 只有說明「彩色空間座標系統」(Color Space)和「深度空間座標系統」(Depth Space)做說明而已,針對「攝影機空間座標系統」(Camera Space) ,基本上是草草帶過。

接下來這篇,就來比較認真一點地介紹攝影機空間座標系統、並把 Kinect 的資料、透過 OpenGL 用 3D 的形式畫出來吧~

閱讀更多»

Khronos 發布 OpenGL 4.5

官方新聞是《Khronos Group Announces Key Advances in OpenGL Ecosystem》,內容主要就是這次 Khronos 在 SIGGRAPH 上針對相關環境所做的發表。

在 OpenGL 的部分,這次是把 OpenGL 的版本更新到 4.5、並放出了相關的規格;他的更新內容,主要包括了:

  • Direct State Access (DSA) – object accessors enable state to be queried and modified without binding objects to contexts, for increased application and middleware efficiency and flexibility;

  • Flush Control – applications can control flushing of pending commands before context switching – enabling high-performance multithreaded applications;

  • Robustness – providing a secure platform for applications such as WebGL browsers, including preventing a GPU reset affecting any other running applications;

  • OpenGL ES 3.1 API and shader compatibility – to enable the easy development and execution of the latest OpenGL ES applications on desktop systems;

  • DX11 emulation features – for easier porting of applications between OpenGL and Direct3D.

閱讀更多»

OpenGL: Approaching Zero Driver Overhead

這篇的原出處是 NVIDIA 官方部落格的《NVIDIA, AMD, Intel Explain How OpenGL Can Unlock 15x Performance Gains》,內容基本上是今年 GDC(Game Developer Conference)時,由 AMD 的 Graham Sellers、Intel 的 Tim Foley 和 NVIDIA 的 Cass Everitt 與 John McDonald,一起說明要如何在撰寫 OpenGL 程式的時候,盡量減少驅動程式的 overhead、進而達到加速的效果。

內容,基本上就是類似之前也貼過的《如何加強 OpenGL 的繪圖效率》一文(由 nVIDIA 同樣兩位所提供)類似,都是希望可以讓 3D 顯示的程式能夠更好地發揮顯示卡的效能。

下面就是《OpenGL: Approaching Zero Driver Overhead》這份投影片,有興趣也可以到 slideshare 上觀看

閱讀更多»

如何加強 OpenGL 的繪圖效率

這篇文章是參考 Geeks3D 的《How to Increase the Number of Draw Calls in OpenGL》一文。

會有這篇文章,主要是因為 AMD 在日前推出了名為「AMD Mantle」(官網)的新的繪圖 API,他和一般普遍使用 Direct 3D、OpenGL 這類跨硬體的 API 不同的地方在於,AMD Mantle 是針對自家的 Radeon GPU 做設計的,所以在自家的顯示卡上,會有更好的效能(draw call 數目)!(參考《AMD Mantle: First Interesting Slides and Details, Target: 100K Draw Calls per Frame》)

而由於它號稱的效能增進相當地顯著,就有人提出來,其實透過 NVIDIA 的 OpenGL Extension,也可以到達類似的效能增進!NVIDIA 的這份投影片標題是《Beyond porting》,作者是 NVIDIA 的 John McDonald 和 Cass Everitt 在 slide share 上可以看到(連結),內容重點,就是「新的 OpenGL 如何減少驅動程式的 overhead」(How modern OpenGL can radically reduce driver overhead)下面就是投影片的內容:

閱讀更多»

SIGGRAPH 2014 OpenGL 程式開發簡介

這是 ACMSIGGRAPH 放在 YouTube 上的教學影片、《SIGGRAPH University – "An Introduction to OpenGL Programming" 》。他基本上是 SIGGRAPH 2013 上面的一個課程,在介紹 OpenGL 的程式架構、以及該怎麼寫 OpenGL 的程式,長度超過三個小時。

Heresy 自己也還沒看完,不過如果要學習/複習 OpenGL 的程式的話,應該算是個不錯的影片~

閱讀更多»

Dolphin 眼中的各家顯示晶片廠商

Heresy 是在 Geeks 3D 看到《Dolphin Emulator: Graphics Drivers Hall of Shame》這篇文章的,而其引用的,則是任天堂遊戲機模擬器、Dolphin Emulator 的《Dolphin Emulator and OpenGL drivers – Hall of Fame/Shame》一文。

基本上,Dolphin Emulator 是一款模擬任天堂的 Wii 以及 GameCube 這兩款遊戲機的開放原始碼、跨平台的模擬器,他在維基百科上也有相關的條目(參考)。而《Dolphin Emulator and OpenGL drivers – Hall of Fame/Shame》這篇文章,則是其開發團隊,針對他們將 Dolphin 的 OpenGL 後臺重新改寫、使其支援 OpenGL ES 3.0 的經驗分享;他們基本上,是針對開發時面對到的問題,來針對各家顯示晶片廠商對於 OpenGL / OpenGL ES 3.0 的支援做評價,某種程度上,應該也代表了這些顯示晶片廠商對於開放社群的友善度了~

閱讀更多»