Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
OpenGL Shading Language - Wikipedia, wolna encyklopedia

OpenGL Shading Language

Z Wikipedii

OpenGL Shading Language (GLSL, glslang) - język, który służy do pisania programów cieniujących (określenie to nie oddaje obecnie rzeczywistej funkcjonalności tych programów - ma charakter historyczny) dla biblioteki OpenGL, definiujących przekształcenia geometryczne wierzchołków i operacje na fragmentach - tzw. shaderów.

Spis treści

[edytuj] Funkcjonalność

Każdy wierzchołek, oprócz swoich współrzędnych, może posiadać szereg przypisanych atrybutów. Część z nich, jak np. kolor, jest zdefiniowana bezpośrednio w specyfikacji OpenGL, lecz możliwe jest także dodawanie własnych typów w zależności od potrzeb. Wszystkie wierzchołki w ramach danego prymitywu graficznego muszą mieć identyczny zestaw atrybutów.

Fragmenty to struktury danych reprezentujące pojedyncze piksele na ekranie[1], które posiadają zinterpolowane liniowo wartości wszystkich atrybutów wierzchołków, na podstawie których zostały zrasteryzowane. Wartości te służą do wyznaczenia ostatecznego koloru danego piksela, oraz jeśli pozwala na to format danych bufora ramki (ang. framebuffer) i stan potoku graficznego, także kanału alfa, głębokości (bufor Z) lub innych parametrów.

Rasteryzacja jest procesem rzutowania geometrii przestrzennej na hipotetyczną płaszczyznę reprezentującą bufor ramki. W jej wyniku powstaje rodzaj tablicy fragmentów o wymiarach odpowiadających buforowi, które są poddawane dalszej obróbce w celu ustalenia ostatecznych parametrów dla pikseli przeznaczonych do zapisania. Wyliczone wartości przed ostatecznym zapisem mogą być poddane dodatkowym testom (np. głębokości - czy nie przesłania go bliższy piksel znajdujący się już w buforze, szablonu - czy znajduje się w wyciętym obszarze, itp.) a także mieszane (ang. blending) z dotychczasowymi wartościami w buforze.

Rodzaj rzutowania (perspektywiczne czy równoległe) oraz jego sposób (wypełnione wielokąty czy siatka geometrii), wykonywane testy i ew. sposób mieszania zależą od stanu potoku graficznego.

Występują dwa rodzaje shaderów vertex shader i fragment shader, które opisują operacje odpowiednio dla geometrii i fragmentów. Programy te wykonywane są przez 2 jednostki w potoku graficznym zwane vertex processor i fragment processor, które mogą się ze sobą komunikować, przy czym komunikacja ta przebiega tylko w jednym kierunku z vertex procesora do fragment procesora. Wynika to ze sposobu funkcjonowania potoku graficznego, w którym najpierw dokonywane są wszystkie operacje geometryczne, tak aby otrzymać model do rasteryzacji, a następnie po jej wykonaniu przeprowadza się operacje na zrasteryzowanych fragmentach. Ze względu na odmienny charakter operacji wykonywanych przez vertex i fragment processor, shadery pisane dla każdego z nich różnią się nieznacznie dialektem, tzn. poza podstawowymi konstrukcjami językowymi, które są wspólne w obydwu przypadkach, istnieje część operacji, które są charakterystyczne tylko dla określonej jednostki.

[edytuj] Wersje i specyfikacje języka

GLSL został wprowadzonym do OpenGL-a przez komitet standaryzacyjny ARB, odpowiedzialny za rozwój tej biblioteki, w wersji 1.5 jako rozszerzenie, a od wersji 2.0, po drobnych modyfikacjach, jest częścią podstawowego API.

Ponieważ język ten zastępuje dużą część dotychczasowej funkcjonalności OpenGL, wprowadzając dużo bardziej elastyczny model programowalnego potoku graficznego, zaleca się aby nowe aplikacje pisać w oparciu o niego, a dotychczasowe funkcje z tego zakresu, traktować jako warstwę wstecznej kompatybilności w stosunku do wersji 1.x.

O wyraźnym ukierunkowaniu na nowy sposób pisania programów, może świadczyć specyfikacja OpenGL ES 2.0, która zrywa wsteczną kompatybilność z serią 1.x, zastępując dotychczasową realizację operacji na wierzchołkach i fragmentach językiem glslang.

[edytuj] Przypisy

  1. W przyszłych implementacjach przewidywane jest odwzorowanie nie na piksele ale na próbki, czyli na punkty wewnątrz pojedynczego piksela wykorzystywane w procesie antyaliasingu.

[edytuj] Zobacz też

Wikibooks
Zobacz podręcznik na Wikibooks:
OpenGL Shading Language

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com