GLSL - 维基百科,自由的百科全书
文章推薦指數: 80 %
GLSL - OpenGL Shading Language 也稱作GLslang,是一個以C語言為基礎的高階著色語言。
它是由OpenGL ARB 所建立,提供開發者對繪圖管線更多的直接控制,而無需使用汇编 ...
GLSL
维基百科,自由的百科全书
跳到导航
跳到搜索
GLSL-OpenGLShadingLanguage也稱作GLslang,是一個以C語言為基礎的高階著色語言。
它是由OpenGLARB所建立,提供開發者對繪圖管線更多的直接控制,而無需使用汇编语言或硬體規格語言。
目录
1背景
2詳細資料
2.1資料類型
2.2運算子
2.3函式和控制結構
2.4編譯和執行
2.5GLSL頂點著色器的簡單範例
2.6GLSL片斷著色器的簡單範例
2.7工具
3參考文獻
4外部連結
5参见
背景[编辑]
隨著近年來繪圖卡的進步,
已在渲染管線中的頂點(vertex)和片斷(fragment)層次中,加入更具彈性的新功能。
達到在這個層次中,使用片斷和頂點著色器的可編程性。
最初這個功能是以組合語言撰寫著色器來達到的。
組合語言對開發者的使用是不直觀而複雜的。
OpenGLARB建立了OpenGL著色語言,為GPU的程式設計提供更加直觀的方法,當維護開放標準的時候,就有助於帶動OpenGL的歷史。
最初OpenGL1.5是以擴充形式引入,後來OpenGLARB(英语:OpenGLArchitectureReviewBoard)在OpenGL2.0核心中正式納入GLSL。
自1992年建立的OpenGL1.0起,OpenGL2.0是第一個OpenGL的大修改版。
使用GLSL有如下好處:
具有跨平台的相容性,包括Macintosh、Windows和Linux等作業系統。
所有支援OpenGL著色語言的繪圖卡,都可以用來編寫著色器。
允許廠商為特定的繪圖卡產生最佳化的代碼。
詳細資料[编辑]
資料類型[编辑]
OpenGL著色語言規格定義了22個基本資料類型,有些用法與C相同,其它的是繪圖處理器特有的。
void–用於沒有返回值的函式
bool–條件類型,其值可以是真或假
int–帶負號整數
float–浮點數
vec2–2個浮點數組成的向量
vec3–3個浮點數組成的向量
vec4–4個浮點數組成的向量
bvec2–2個布林組成的向量
bvec3–3個布林組成的向量
bvec4–4個布林組成的向量
ivec2–2個整數組成的向量
ivec3–3個整數組成的向量
ivec4–4個整數組成的向量
mat2–浮點數的2X2矩陣
mat3–浮點數的3X3矩陣
mat4–浮點數的4X4矩陣
sampler1D–用來存取一維紋理的句柄(handle)(或:操作,作名詞解。
)
sampler2D–用來存取二維紋理的句柄
sampler3D–用來存取三維紋理的句柄
samplerCube–用來存取立方映射紋理的句柄
sampler1Dshadow–用來存取一維深度紋理的句柄
sampler2Dshadow–用來存取二維深度紋理的句柄
運算子[编辑]
OpenGL著色語言提供類似於C語言的運算子。
給開發者編寫著色器的靈活性。
GLSL包含了C和C++運算子,除了位元運算子和指標以外。
函式和控制結構[编辑]
類似於C語言,GLSL支援迴圈和分支,包括if、else、if/else、for、do-while、break、continue等。
支援使用者定義函式,且各種常用的函式也已內建。
這也就讓繪圖卡製造商,能夠在硬體層次上最佳化這些內建的函式。
許多函式與C語言相同,如exp()以及abs(),其它繪圖編程特有的,如smoothstep()以及texture2D()。
編譯和執行[编辑]
GLSL著色器不是獨立的應用程式;其需要使用OpenGLAPI的應用程式。
C、C++、C#、Delphi和Java皆支援OpenGLAPI,且支援OpenGL著色語言。
GLSL著色器本身只是簡單的字串集,這些字串集會傳送到硬體廠商的驅動程式,並從程式內部的OpenGLAPI進入點編譯。
著色器可從程式內部或讀入純文字檔來即時建立,但必須以字串形式傳送到驅動程式。
用以編譯、連結並傳送參數到GLSL程式的API集,已在三個OpenGL擴展中規定,且即將成為OpenGL2.0(页面存档备份,存于互联网档案馆)核心的一部分。
這些API可在以下擴展中找到:
ARB頂點著色器
ARB片斷著色器
ARB著色器物件
GLSL頂點著色器的簡單範例[编辑]
voidmain(void)
{
gl_Position=ftransform();
}
GLSL片斷著色器的簡單範例[编辑]
voidmain(void)
{
gl_FragColor=vec4(1.0,0.0,0.0,1.0);
}
工具[编辑]
GLSL著色器可以事先建立和測試,現有以下GLSL開發工具:
RenderMonkey(页面存档备份,存于互联网档案馆)-這個軟體是由ATI製作的,提供界面用以建立、編譯和除錯GLSL著色器,和DirectX著色器一樣。
僅能在Windows平台上執行。
GLSLEditorSample-在MacOSX上,它是目前唯一可用的程式,其提供著色器的建立和編譯,但不能除錯。
它是cocoa應用程式,僅能在MacOSX上執行。
Lumina(页面存档备份,存于互联网档案馆)-Lumina是新的GLSL開發工具。
其使用QT界面,可以跨平台。
參考文獻[编辑]
Rost,RandiJ.OpenGLShadingLanguage.1sted.PearsonEducation,Inc,2004.ISBN0-321-19789-5
Kessenich,John,&Baldwin,David,&Rost,Randi.TheOpenGLShadingLanguage.Version1.10.59.3Dlabs,Inc.Ltd.https://web.archive.org/web/20070404171317/http://developer.3dlabs.com/documents/index.htm
外部連結[编辑]
GLSL語言規格,版本1.20(页面存档备份,存于互联网档案馆)
GLSL參考表(页面存档备份,存于互联网档案馆)
OpenGL片斷著色器規格
OpenGL頂點著色器規格
OpenGL程式規格[永久失效連結]
官方OpenGL網站(页面存档备份,存于互联网档案馆)
來自Lighthouse3D的教學和範例(页面存档备份,存于互联网档案馆)
來自NeHeProductions的教學和範例
GLSL開發環境(页面存档备份,存于互联网档案馆)
RenderMonkey著色器開發環境(页面存档备份,存于互联网档案馆)
Geist3D繪圖引擎,內含GLSL編輯器
Lumina跨平台GLSLIDE(页面存档备份,存于互联网档案馆)
参见[编辑]
著色語言
HLSL,高階著色語言
Cg,nVIDIA的著色語言
程式設計
计算机图形学
OpenGL
著色器
查论编程序设计语言按范型过程式
FORTRAN
COBOL
ALGOL60
BASIC
GW-BASIC
PL/I
MUMPS(英语:MUMPS)
ALGOL68
Forth
Pascal
TurboPascal
C
Modula-2
Ada83
occam
Oberon
Go
Zig
面向对象
Simula67
Smalltalk
C++
Objective-C
Eiffel
ObjectPascal
Delphi
Self
CLOS
VisualBasic
Ada95
Java
C#
Vala
Crystal(英语:Crystal(programminglanguage))
多范型
Modula-3
Dylan
Python
Lua
JavaScript
Ruby
REBOL
Red(英语:Red(programminglanguage))
D
Factor
Scala
F#
F*
Haxe
Nim
Rust
Dart
Julia
Swift
Ballerina(英语:Ballerina(programminglanguage))
函数式
LISP
Scheme
CommonLisp
Racket
Clojure
Logo
APL/J
ML
StandardML
OCaml
Erlang
Elixir
Haskell
Curry
SAC
Agda
Idris
Cuneiform
逻辑式
Prolog
Datalog
Mercury
AnsProlog
脚本语言动态语言
SNOBOL
Icon
REXX
Perl
Raku
Tcl/Tk
CLOS
newLISP
Python
Lua
Ruby
PHP
Hack
VBScript
Io
Julia
Shell语言
Unixshell
sh
csh
tcsh
ksh
bash
ash
zsh
sed
AWK
PowerShell
ECMA-262
ECMAScript
JavaScript
JScript
Node.js
CoffeeScript
TypeScript
Elm
PureScript
Reason
特定平台.NET
C#
VisualC#
C++/CLI
VisualC++
F#
PowerShell
VB.NET
SmallBasic
JVM
Java
AspectJ(英语:AspectJ)
JSP
Scala
Clojure
Groovy
Kotlin
特定领域科学计算
Speakeasy(英语:Speakeasy(computationalenvironment))
IDL
GDL
Maxima
Maple
MATLAB
Octave
Scilab
Wolfram
R
SageMath
Julia
GPU计算
GLSL
HLSL
OpenCL
CUDA
Futhark
数据查询
SQL
PL/SQL
T-SQL
SQL/PSM(英语:SQL/PSM)
xBase(英语:xBase)
XPath
XQuery(英语:XQuery)
rasql(英语:rasdaman#RasterQueryLanguage)
GraphQL
可视化
Simulink
LabVIEW
Orange(英语:Orange(software))
KNIME(英语:KNIME)
Scratch
Snap!
传媒设计
SuperCollider
PureData
Processing
ChucK
其它
汇编语言
PostScript
XSLT
WebAssembly
目录
列表
历史
比较(英语:Comparisonofprogramminglanguages)
时间线(英语:Timelineofprogramminglanguages)
规范控制
GND:7673247-2
取自“https://zh.wikipedia.org/w/index.php?title=GLSL&oldid=63264537”
分类:繪圖函式庫三维计算机图形学C語言家族OpenGL著色器語言隐藏分类:自2017年11月带有失效链接的条目条目有永久失效的外部链接包含GND标识符的维基百科条目使用ISBN魔术链接的页面
导航菜单
个人工具
没有登录讨论贡献创建账号登录
命名空间
条目讨论
不转换
不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體
查看
阅读编辑查看历史
更多
搜索
导航
首页分类索引特色内容新闻动态最近更改随机条目资助维基百科
帮助
帮助维基社群方针与指引互助客栈知识问答字词转换IRC即时聊天联络我们关于维基百科
工具
链入页面相关更改上传文件特殊页面固定链接页面信息引用本页维基数据项目
打印/导出
下载为PDF打印页面
其他语言
العربيةČeštinaDeutschEnglishEspañolFrançaisItaliano日本語한국어LatviešuPolskiPortuguêsРусскийSvenskaTürkçeУкраїнська
编辑链接
延伸文章資訊
- 1GLSL - 维基百科,自由的百科全书
GLSL - OpenGL Shading Language 也稱作GLslang,是一個以C語言為基礎的高階著色語言。它是由OpenGL ARB 所建立,提供開發者對繪圖管線更多的直接控制,而...
- 2GLSL_百度百科
GLSL(GL Shading Language)的着色器代碼分成2個部分:Vertex Shader(頂點着色器)和Fragment(片斷着色 ... 它可以得到當前OpenGL 中的狀態,G...
- 3GLSL-to-HLSL 參考- UWP applications | Microsoft Docs
當您將圖形架構從OpenGL ES 2.0 移植到Direct3D 11 以建立通用Windows 平台(UWP) 遊戲時,也必須將OpenGL 著色器語言(GLSL) 程式碼移植到Micros...
- 4Shaders - LearnOpenGL
GLSL. Shaders are written in the C-like language GLSL. GLSL is tailored for use with graphics and...
- 5着色器
着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。 着色器的开头总是要 ...