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 OpenGLOGLSL, 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.

  1. [http://antongerdelan.net/opengl/shaders.html OpenGL 4 Shaders Anton Gerdelan. 24 June 2014]