Shader: Różnice pomiędzy wersjami

Dodane 172 bajty ,  4 lata temu
m
drobne merytoryczne, drobne redakcyjne, poprawa linków
[wersja przejrzana][wersja przejrzana]
m (drobne merytoryczne, drobne redakcyjne, poprawa linków)
m (drobne merytoryczne, drobne redakcyjne, poprawa linków)
'''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:
'''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 lub, Fragment 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.
 
 
== 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. OznaczaWymaga to więc zastosowania [[przetwarzanieObliczenia równoległe|przetwarzania równoległego]]. Najnowsze [[Procesor graficzny|GPU]] mają [[ArchitekturaProcesor wielordzeniowawielordzeniowy|architekturę wielordzeniową]], specjalnie dostosowaną do tego rodzaju przetwarzania. Jest zatem możliwe używanie GPU nie tylko do obliczeń graficznych, ale także do obliczeń ogólnych (naukowych, inżynierskich, itd.), co nosi nazwę [[GPGPU]]. Przykładowymi środowiskami programistycznymi do takich ogólnych obliczeń są: [[CUDA]], [[BrookGPU]], [[OpenCL]] i [[OpenCLDirectCompute]].
 
== Języki cieniowania ==
WspółczesneDo językiwspółczesnych języków cieniowania należą:
* [[RenderMan Shading Language|RSL]] - RenderMan Shading Language (fragment standardu [[RenderMan Interface Specification|RiSpec]]),
* [[Vector EXpression|VEX]] - Vector Expression (bliski językowi RSL, język renderera Side Effects Mantra),
* [[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]] - Open Shading Language (standard opracowany przez firmę [[Sony Pictures Imageworks]] na licencji BSD).
 
== Zobacz też ==
 
* [[teselacja]]
 
== Linki zewnętrzne ==