Shader: Różnice pomiędzy wersjami
[wersja przejrzana] | [wersja przejrzana] |
Usunięta treść Dodana treść
m drobne merytoryczne, drobne redakcyjne, poprawa linków |
m drobne merytoryczne, drobne redakcyjne, poprawa linków |
||
Linia 1:
'''Shader''' – krótki [[Oprogramowanie|program]] komputerowy, często napisany w specjalnym języku programowania (''shader language''), który w [[Grafika 3D|grafice trójwymiarowej]] opisuje właściwości [[piksel]]i oraz [[Wierzchołek (grafika 3D)|wierzchołków]]. Technologia ta zastąpiła stosowaną wcześniej w [[Karta graficzna|kartach graficznych]] jednostkę [[Transform and Lighting|T&L]].
'''Cieniowanie''' pozwala na znacznie bardziej skomplikowane modelowanie oświetlenia i [[Materiał (grafika 3D)|materiału]] na obiekcie niż standardowe modele [[Oświetlenie (grafika komputerowa)|oświetlenia]] i [[teksturowanie]]. Jest jednak dużo bardziej [[Moc obliczeniowa|wymagające obliczeniowo]] i dlatego dopiero od wprowadzenia bibliotek [[Interfejs programowania aplikacji|API]] [[DirectX]] 8 (rok 2000) sprzętowa obsługa cieniowania pojawiła się wśród możliwości [[karta graficzna|kart graficznych]] [[Komputer osobisty|komputerów osobistych]]. Wcześniej cieniowanie stosowane było tylko w niektórych fotorealistycznych [[Renderowanie|rendererach]] (np. [[Renderman]]), gdzie grafika nie jest jednak generowana w [[Czas rzeczywisty|czasie rzeczywistym]].
W stosunku do standardowych modeli oświetlenia, stosowanych do generowania grafiki w czasie rzeczywistym, cieniowanie umożliwia uwzględnienie między innymi:
Linia 21:
'''Cieniowanie geometryczne''' – pozwala na dodawanie lub usuwanie wierzchołków z [[Siatka (grafika 3D)|siatki wierzchołków]] (ang. ''mesh''). Może być używane do proceduralnego tworzenia obiektów geometrycznych albo do dodawania objętościowych detali istniejących siatek wierzchołków. Te operacje mogłyby być zbyt kosztowne obliczeniowo dla [[Procesor|CPU]]. Direct3D 10 i OpenGL 3.1 mają już zawarte wsparcie dla tego typu cieniowania. Jeśli cieniowanie geometryczne jest używane, to wtedy jego wyjście jest przekazywane na wejście rasteryzatora.
=== Pixel Shader
'''Cieniowanie pikseli''' – jest jednostką odpowiadającą za wyliczanie koloru [[piksel]]i. Direct3D używa terminu ''pixel shader'', a OpenGL – ''fragment shader''. Piksele na wejście tego etapu cieniowania są pobierane z rasteryzatora, który wypełnia wielokąty przesyłane z potoku graficznego. Cieniowanie pikseli jest najczęściej używane do oświetlenia sceny i innych powiązanych efektów, np. [[Mapowanie wypukłości|bump-mappingu]] lub kolorowania.
Linia 49:
== Przetwarzanie równoległe ==
Cieniowanie jest wykorzystywane do zaaplikowania przekształceń na dużym zbiorze elementów jednocześnie, np. na każdym pikselu ekranu albo dla każdego wierzchołka modelu.
== Języki cieniowania ==
* [[RenderMan Shading Language|RSL]]
* [[Vector EXpression|VEX]]
* [[OpenGL Shading Language|GLSL]] – OpenGL Shading Language (fragment standardu OpenGL),
* HLSL – High Level Shading Language (język cieniowania biblioteki DirectX),
* [[Cg (język programowania)|Cg]] – C for graphics (opracowany przez firmę nVidia),
* [[Open Shading Language|OSL]]
== Zobacz też ==
* [[teselacja]]
== Linki zewnętrzne ==
|