Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

Shader

Z Wikipedii, wolnej encyklopedii
Wikipedia:Weryfikowalność
Ten artykuł od 2021-03 wymagazweryfikowania podanych informacji.
Należy podać wiarygodne źródła w formieprzypisów bibliograficznych.
Część lub nawet wszystkie informacje w artykule mogą być nieprawdziwe. Jako pozbawione źródeł mogą zostać zakwestionowane i usunięte.
Sprawdź w źródłach:Encyklopedia PWN •Google Books • Google Scholar •BazHum •BazTech •RCIN • Internet Archive (texts /inlibrary)
Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się wdyskusji tego artykułu.
Po wyeliminowaniu niedoskonałości należy usunąć szablon{{Dopracować}} z tego artykułu.

Shader – krótkiprogram komputerowy, często napisany w specjalnymjęzyku programowania (shader language), który wgrafice trójwymiarowej opisuje właściwościpikseli orazwierzchołków. Technologia ta zastąpiła stosowaną wcześniej wkartach graficznych jednostkęT&L.

Cieniowanie pozwala na znacznie bardziej skomplikowane modelowanie oświetlenia imateriału na obiekcie niż standardowe modeleoświetlenia iteksturowanie. Jest jednak dużo bardziejwymagające obliczeniowo i dlatego dopiero od wprowadzenia bibliotekAPIDirectX 8 (rok 2000) sprzętowa obsługa cieniowania pojawiła się wśród możliwościkart graficznychkomputerów osobistych. Wcześniej cieniowanie stosowane było tylko w niektórych fotorealistycznychrendererach (np.Renderman), gdzie grafika nie jest jednak generowana wczasie rzeczywistym.

W stosunku do standardowych modeli oświetlenia, stosowanych do generowania grafiki w czasie rzeczywistym, cieniowanie umożliwia uwzględnienie między innymi:

Rodzaje cieniowania

[edytuj |edytuj kod]

Obecnie, z uwagi na wymagania bibliotekDirectX w wersji 10, zniknął podział panujący dotychczas naPixel Shader iVertex Shader. Obliczenia, jakimi te odrębne jednostki się zajmowały, są teraz wykonywane przez jednolite jednostki obliczeniowe, które są dynamicznie przydzielane do odpowiedniego typu zadań, w zależności od bieżącej potrzeby. Rozwiązanie takie zostało nazwane przezATIStream Processors, a przeznVidięUnified Shaders.

Biblioteki graficzneDirect3D iOpenGL używają trzech typów cieniowania:

Vertex Shader

[edytuj |edytuj kod]

Cieniowanie wierzchołkowe – uruchamiane jest raz dla poszczególnych przetwarzanych wierzchołków. Jego zadaniem jest transformacja położenia wierzchołka wwirtualnej przestrzeni 3D na współrzędne 2D naekranie. Cieniowanie wierzchołkowe może operować na takich własnościach wierzchołków jak położenie, kolor i współrzędne tekstur, ale nie może tworzyć nowych wierzchołków. Wyjście cieniowania wierzchołkowego jest wejściem dla następnego etapu w potoku, jakim jest albo cieniowanie geometryczne (jeśli jest obecne), alborasteryzacja.

Geometry Shader

[edytuj |edytuj kod]

Cieniowanie geometryczne – pozwala na dodawanie lub usuwanie wierzchołków zsiatki 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 dlaCPU. 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,Fragment Shader

[edytuj |edytuj kod]

Cieniowanie pikseli – jest jednostką odpowiadającą za wyliczanie kolorupikseli. Direct3D używa terminupixel shader, a OpenGL –fragment shader. Piksele na wejście tego etapu cieniowania są pobierane z rasteryzatora, który wypełnia wielokąty przesyłane zpotoku graficznego. Cieniowanie pikseli jest najczęściej używane do oświetlenia sceny i innych powiązanych efektów, np.bump-mappingu lub kolorowania.

Poniższa tabela przedstawia, które wersje jednostek cieniowania odpowiadają poszczególnym wersjom bibliotek DirectX.

WersjaDirectXPixel ShaderVertex ShaderCompute Shader
8.01.0, 1.11.0brak
8.11.2, 1.3, 1.41.1brak
9.02.02.0brak
9.0a2_A, 2_B2.xbrak
9.0c3.03.0brak
10.04.04.04.0
10.14.14.14.1
115.05.05.0
125.15.15.1

Przetwarzanie równoległe

[edytuj |edytuj kod]

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. Wymaga to więc zastosowaniaprzetwarzania równoległego. NajnowszeGPU mają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(inne języki),OpenCL iDirectCompute (część DirectX zarządzająca jednostkami obliczeniowymi ogólnego zastosowania, czyliCompute Shader).

Języki cieniowania

[edytuj |edytuj kod]

Do współczesnych języków cieniowania należą:

Zobacz też

[edytuj |edytuj kod]
Zobacz hasłoshader w Wikisłowniku

Linki zewnętrzne

[edytuj |edytuj kod]
  • Publikacja nVidii o CUDA,środowisku programistycznym i kompilatorze języka programowania do pisania aplikacji uruchamianych na jednostkach shaderowych w kartach graficznych(ang.)
Źródło: „https://pl.wikipedia.org/w/index.php?title=Shader&oldid=72450648
Kategorie:
Ukryte kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp