OpenGL Shading Language/Wprowadzenie
Programowalne jednostki graficzne pojawiły się już parę lat temu.
Język Cieniowania GLSL
[edytuj]Język Cieniowania (ang. Shading Language) w grafice komputerowej jest wysokiego poziomu językiem według którego właściwości wyrenderowanego materiału mogą zostać opisane.
Może to obejmować :
- złożone opisy absorpcji światła i rozproszenia,
- mapowania tekstur,
- odbicia i refrakcję,
- cieniowanie,
- przemieszczenie powierzchni
- efekty post-produkcyjne.
Ta książka opisuje OpenGL Shading Language (GLSL lub jak na oficjalnej stronie OpenGL — OGLSL, glslang). Istnieją też inne interfejsy oferujące shadery, takie jak DirectX lub język Cg nVidii. Wbudowany do OpenGL język GLSL (od wersji 2.0, wcześniejsze mogą korzystać z glslang poprzez rozszerzenia) oferuje jednak ogromną przewagę nad konkurencją. OpenGL jest dostępny na niemalże wszystkie platformy systemowe, więc siłą rzeczy OpenGL Shading Language także dziedziczy tę własność. Czymś takim nie może się pochwalić środowisko DirectX 9 z językiem HLSL, który pełni w nim podobną rolę, choć nie jest tak bezpośrednio zintegrowany (shadery HLSL są kompilowane zewnętrznie i dołączane do programu w postaci binarnej).
Zależność między Opengl i GlSL : [1]
OpenGL Version | GLSL Version | #version tag |
---|---|---|
1.2 | none | none |
2.0 | 1.10.59 | 110 |
2.1 | 1.20.8 | 120 |
3.0 | 1.30.10 | 130 |
3.1 | 1.40.08 | 140 |
3.2 | 1.50.11 | 150 |
3.3 | 3.30.6 | 330 |
4.0 | 4.00.9 | 400 |
4.1 | 4.10.6 | 410 |
4.2 | 4.20.6 | 420 |
4.3 | 4.30.6 | 430 |
Implementacje
[edytuj]Pierwszą komercyjną implementacją Języka Cieniowania był Renderman firmy Pixar.
Shader
[edytuj]Pojedynczy program napisany w takowym języku nazywany jest shaderem. W trakcie renderowania sceny shadery są używane do ustalenia wyglądu każdego (lub wybranego) obiektu.
Typy shaderów
[edytuj]Istnieją dwa typy shaderów. Pierwszy odpowiedzialny jest za modyfikację wierzchołków (ang. vertex), drugi natomiast zmienia parametry fragmentów (zrasteryzowanych pikseli, wraz z odpowiadającymi im interpolowanymi wartościami atrybutów). Oba zostaną opisane w odpowiednich sekcjach.
- ↑ [http://antongerdelan.net/opengl/shaders.html OpenGL 4 Shaders Anton Gerdelan. 24 June 2014]