Metal Shadeing Language(1)

一.簡介:

Metal 著色語言是一個用來編寫3D圖形渲染邏輯和并行計算核心邏輯的編程語言,編寫Metal框架的APP需要使用Metal 著色語言程序.
Metal 著色語言 與 Metal 框架配合使用,Metal 框架管理Metal著色語言的運行和可選編譯選項.Metal 著色器語言使用clangLLVM,編譯器對于在GPU上的代碼執行效率有更好的控制.

1.1 Metal 語言

Metal 著色語言的使用包括圖形渲染和并行運算.Metal著色語言基于C++設計,開發者可以用它來編寫在GPU上執行的圖形渲染邏輯代碼和通用并行計算邏輯代碼. 因為是基于C++設計,開發者會覺得非常的熟悉,從而更加便于使用.因為圖形渲染和并行運算是都是使用Metal著色語言,所以這允許把這2種任務結合在一起完成.

1.2 如何來使用此文章

如果大家想要使用Metal框架,有必要使用并且閱讀此文章.因為他們需要使用Metal著色語言編寫運行在GPU上的圖像渲染和并行計算邏輯.

  • Metal and C++ 我們會講Metal 與C++的異同
  • Metal數據類型 Metal著色語言的數據類型,包括向量,矩陣,緩存,紋理,采樣器.還有類型對齊以及類型轉換
  • Metal 運算符
  • 方法,變量,修飾符 :如何描述方法,變量如何聲明,如何使用 屬性修飾符,以及限制修飾符
  • Metal的標準庫. 如何使用Metal內建方法的使用

二. Metal 與 C++ 11.0

Metal 這門語言是基于C++ 11.0標準設計的.它在C++基礎是行多了一些拓展和限制.下面我們可以簡單介紹介紹Metal著色語言與C++11.0 相比之下的修改和限制.

2.1 Overloading 重載

  • Metal 語言支持重載,如果C++11.0,包括方法重載規則,可以包括參數的地址空間描述符.Metal著色語言中的標識為圖形渲染入口函數或是并行計算入口函數的不可以被重載.

2.2 Templates 模塊

  • Metal 著色語言支持的模板如圖C++11.0 一樣.

2.3 Preprocessing Directives 預編譯指令

Metal 和 C++11.0 一樣支持預編譯指令

2.4 Restrictions 限制

如下的C++11.0特性在Metal 著色語言中是不支持的;

  • Lambda表達式
  • 遞歸函數調用
  • 動態轉換操作符
  • 類型識別
  • 對象創建(new)和釋放(delloc)操作符
  • 操作符 noexcept
  • goto跳轉
  • 變量存儲修飾符registerthread_local
  • 虛函數修飾符
  • 派生類
  • 異常處理

C++ 的標準庫不可以在Metal 著色語言中使用, Metal 著色語言使用自己的標準庫.這個后期課程會詳細講解.

  • Metal著色語言是有對于指針的使用限制
  • Metal圖形和并行計算函數用到的入參如果是指針必須使用地址空間修飾符(device,threadgroup,constant)
  • 不支持函數指針
  • Metal函數名不能命名為main函數

2.5 Metal Pixel Coordinate System Metal 像素坐標系統

在Metal中,紋理,幀緩存中的像素使用的坐標系統的原點定義在左上角.

持續更新!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容