跳至內容

GLSL

出自Taiwan Tongues 台語維基
於 2025年8月22日 (五) 18:29 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

GLSL-OpenGL Shading Language嘛叫做GLslang,是一个以 C 語言為基礎的懸階著色語言。伊是由 OpenGL ARB 所建立,提供開發者對繪圖管線閣較濟的直接控制,無需要使用結合編語言抑是硬體規格語言。

背景

隨著近年來繪圖卡的進步, 已經佇渲染管線頂懸的頂點(vertex)佮片斷(fragment)層次中,加入更加有伸勼空間的新功能。 達到佇這个層次內底,使用這片斷和頂點著色器的可編程性。

上頭仔這个功能是用組合語言編寫色器來達到的。組合語言對開發者的使用是無直觀複雜的。OpenGL ARB 建立了 OpenGL 對色語言,為 GPU 的程式設計提供閣較直觀的方法,做維護開放標準的時陣,對帶動就有幫贊 OpenGL 的歷史。

上代先 OpenGL 一爿五是以擴充形式引入,後來 OpenGL ARB 佇咧 OpenGL 二鋪零核心中正式納入 GLSL。自一九九二年建立的 OpenGL 一孵空起來,OpenGL 二嬸空是頭一个 OpenGL 的大修改版。

使用 GLSL 有如下好處:

  • 具上無仝款台內底的相容性,包括講 Macintosh、Windows 和 Linux 等作業系統。
  • 所有支援 OpenGL 對色語言的繪圖卡,攏會當用來編寫著色器。
  • 允准廠商做特定的繪圖卡產生最佳化的代碼。

詳細資料

資料類型

OpenGL 著色語言規格定義二十二个基本的資料類型,有一寡用法佮 C 相仝,其他的是繪圖處理器特有的。

  • void–用於無倒轉值的函式
  • bool–條件類型,其值會當是真抑是假
  • int–帶負號整數
  • float–浮點數
  • vec 二–兩个浮點數組成的向量
  • vec 三–三个浮點數組成的向量
  • vec 四–四个浮點數組成的向量
  • bvec 二–兩个布林組的向量
  • bvec 三–三个布林組的向量
  • bvec 四–四个布林組的向量
  • ivec 二–兩个整數組成的向量
  • ivec 三–三个整數組成的向量
  • ivec 四–四个整數組成的向量
  • mat 二–浮點數的二 X 二矩陣
  • mat 三–三點數的 X 三矩陣
  • mat 四–浮點數的四 X 四矩陣
  • sampler 一 D–用來存取一維紋理的句柄(handle)(抑是:操作,作名詞解。)
  • sampler 二 D–用來存取二維紋理的句柄
  • sampler 三 D–用來存取三維紋理的句柄
  • samplerCube–用來存取立方影射花草的句柄
  • sampler 一 Dshadow–用來存取一維深度紋理的句柄
  • sampler 二 Dshadow–用來存取二維深度紋理的句柄

運算子

OpenGL 對色語言提供類似 C 語言的運算子。予開發者編寫著色器的靈活性。GLSL 包括著矣 C 和 C + + 運算子,除了位元運算子佮指標以外。

函式佮控制結構

類似 C 語言,GLSL 支援迴圈佮分支,包括講 if、else、if / else、for、do-while、break、continue 等。

支援使用者定義函式,而且各種常用的函式也已經內建。這也就予繪圖卡製造商,會當佇硬體層次上最佳化遮的內建的函式。真濟函式和 C 語言相仝,如 exp ( ) 以及 abs ( ),其他繪圖編程特有的,如 smoothstep ( ) 以及 texture 二 D ( )。

編譯佮執行

GLSL 對色器毋是獨立的應用程式;其實愛使用 OpenGL API 的應用程式。C、C + +、C #、Delphi 和 Java 攏支援 OpenGL API,而且支援 OpenGL 對色語言。

GLSL 色器本身只是簡單的字串集,遮的字串集會傳送到硬體廠商的驅動程式,並且對程式內部的 OpenGL API 進入點編譯。對色器會當對程式內底抑是讀入純文字檔來即時建立,但是必須用字串形式傳送到驅動程式。

用落去編譯、連結並傳送參數到 GLSL 程式的 API 集,已經佇咧三个 OpenGL 擴展中規定,而且得欲成做 OpenGL 二鋪零核心的一部份。這是 API 會當下擴展內底揣著:

  • ARB 上點著色器
  • ARB 斷去色器
  • ARB 著色器物件

GLSL 上點著色器的簡單範例

GLSL 片斷著色器的簡單範例

工具

GLSL 著色器會當先建立和測試,這馬有以下 GLSL 開發工具:

  • RenderMonkey-這个軟體是由 ATI 製作的,提供界面用的來建立、編譯佮除錯 GLSL 著色器,和 DirectX 色器仝款。干焦會當佇 Windows 平台上執行。
  • GLSLEditorSample-佇咧 Mac OS X 上,伊是目前唯一可用的程式,其實提供著色水的建立佮編譯,但是袂使除毋著。伊是 cocoa 應用程式,干焦會當佇 Mac OS X 上執行。
  • Lumina-Lumina 是新的 GLSL 開發工具。其使用 QT 界面,會當迒平台。

參考文獻

  • Rost , Randi J . _ OpenGL Shading Language _ . 一 st ed . Pearson Education , Inc , 兩千空四 . ISBN 空九三百二十一撨一知九千七百八十九九石五
  • Kessenich , John , & Baldwin , David , & Rost , Randi . _ The OpenGL Shading Language _ . Version 一孵一空 . 五十九 . 三 Dlabs , Inc . Ltd . https : / / web . archive . org / web / 二十五空七百空四抹空四百一十七刣一千三百一十七 / http : / / developer . 三 dlabs . com / documents / index . htm

外部連結

  • GLSL 語言規格,版本一爿二空
  • GLSL 參考表
  • OpenGL 片斷著色器的規格
  • OpenGL 上點著色器規格
  • OpenGL 程式規格
  • 官方 OpenGL 網站
  • 來自 Lighthouse 三 D 的教學佮範例
  • 來自 NeHe Productions 的教學佮範例
  • GLSL 開發環境
  • RenderMonkey 對色器開發環境
  • Geist 三 D 繪圖 ia̋n-jín,內含 GLSL 編輯器
  • Lumina 跨平台 GLSL IDE

參見

  • 對色語言
  • HLSL,懸坎仔色語言
  • Cg,nVIDIA 的著色語言
  • 程式設計
  • 計算機圖形學
  • OpenGL
  • 著色器