Hlavní stránka Hardware Grafické karty Technika 3D: Úvod do Pixel Shaderů
Technika 3D: Úvod do Pixel Shaderů
autor: Vrtal David , publikováno 9.4.2003
Technika 3D: Úvod do Pixel Shaderů
Připravujeme pro vás seriál článků, který vám poodhalí taje a možnosti mnohokrát skloňovaných pixel a vertex shaderů. Začínáme úvodem do problematiky pixel shaderů - mocného nástroje na výrobu úžasných grafických efektů. {mospagebreak title=Stručný úvod}

V dnešní době došlo k masivnímu rozšíření počítačů do všech oblastí lidské činnosti. Setkáváme se s nimi nejen při komerčním použití, ale i ve většině domácností. Každý počítač se skládá z několika hardwarových komponent, přičemž některé jsou pro výkon počítače důležité více a některé méně. Jednou z nejdůležitějších komponent je grafická karta. Její správná volba se dá provést podle několika kritérií. Jedná se například o to k jakému účelu se bude počítač používat, kolik jsme ochotni do něj investovat, zda kupujeme sestavu předem sestavenou nebo zda si počítač stavíme sami, atd. Mnozí z uživatelů však vůbec netuší z jakých částí se jejich grafická karta vůbec skládá, k jakému účelu se dají její jednotlivé části použít a jakým stylem s těmito částmi herní a softwaroví vývojáři pracují.

V architektuře grafické karty se nyní, kromě grafického čipu a pamětí, nacházejí dvě programovatelné jednotky nazvané vertex a pixel shadery. Běžný i trochu technicky zdatnější uživatel však vůbec nemá ponětí, že jeho grafická karta něco takového obsahuje a pokud ano, tak neví jaký je jejich účel a použití. Účelem tohoto článku je seznámit vás trochu blíže s účelem první z těchto dvou částí grafické karty, takzvaných pixel shaderů. Jejich umístění v architektuře grafického čipu je patrné z obrázku.

Technika 3D: Úvod do Pixel Shaderů

Blokové schéma grafického čipu

Chtěl bych, aby jste po přečtení tohoto článku měli alespoň základní tušení o co u této technologie jde a proč se jí dnes při technické specifikaci nových grafických čipů věnuje taková pozornost. Chci vás upozornit, že se v tomto případě nejedná o přehnané působení marketingových oddělení výrobců a distributorů grafických karet, ale že tato jednotka má opravdu veliký význam pro nasazení grafické karty v různých typech aplikací. Efekty, kterých lze použitím pixel shaderů dosáhnout jsou vidět na obrázcích.

 Technika 3D: Úvod do Pixel Shaderů

Ukázka možností pixel shaderů verze 2.0 v 3Dmark 03

{mospagebreak title=Základní popis funkcí pixel shaderů }

Pixel shader je jedna ze základních částí architektury grafického čipu. Jedná se o jednotku, která je plně programovatelná. Posupný vývoj přinesl několik generací této jednotky. Jednotlivými generacemi se zabývám v samostatném odstavci uvedeném níže. S jednotlivými generacemi se zvyšuje počet instrukcí, které můžeme pro tuto jednotku použít. Na diagramu vidíte paralelní uspořádání pipeline struktury aritmeticko logické jednotky pixel shaderu, takzvané ALU.

 Technika 3D: Úvod do Pixel Shaderů

Paralelní uspořádání pipeline struktury aritmeticko logické jednotky

Pokud se na diagram podíváme podrobněji, jistě si všimnete toho, že na blokovém schématu jsou opravdu patrné dvě paralelně uspořádané větve. Větev na levé straně je na obrázku označená jako Vector pipe. Jedná se o vektorovou pipeline, která pracuje a operuje čistě s vektorovými daty. Vektorová data jsou často nazývána jako data barev. Z toho důvodu obsahují tři barevné kanály RGB, kde R (red) znamená barevný kanál pro červenou barvu, G (green) znamená barevný kanál pro zelenou barvu a B (blue) znamená barevný kanál pro modrou barvu. Větev na pravé straně je v diagramu označena jako Alpha pipe. Jedná se o skalární pipeline, která operuje s jednoduchými datovými hodnotami alfa. Tyto hodnoty najdete na diagramu pod označením A (alfa). Jedná se o takzvaný alfa kanál.

Nyní si podrobně popíšeme jednotlivé části nacházející na diagramu.

  1. Vstupní registry -na obrázku jsou označeny jako input register(s) . Jedná se o vstupní data obsahující informace o RGBA signálu.

  2. Komponenta pro kopírování -na obrázku je označena jako component copy . Jedná se o zdrojový selektor registru, který kopíruje data z jednoho kanálu do ostatních kanálů. Tato operace se běžně nazývá swizzling.

  3. Modifikování dat -na obrázku označeno jako modify data . Jedná se o takzvané zdrojové modifikátory registrů. Tyto modifikátory se používají ke změně hodnot čtených ze zdrojových registrů předtím, než dojde k běhu instrukcí. Modifikátory mohou být použity k nastavení rozsahu dat v registrech připravovaných pro instrukci. Mohou být použity pouze pro aritmetické instrukce. Nelze je použít pro instrukce adresující textury.

  4. Prováděcí instrukce -na obrázku je označena jako execute instruction . Používá se pro provádění aritmetických a texturově adresovaných operací s daty o pixelech. Pipes určené pro barevný kanal nebo pro alpha kanál nemohou běžet se stejnými instrukcemi ani nemohou používat stejné zdrojové registry.

  5. Modifikování výsledku -v diagramu je označeno jako modify result . Je prováděno pomocí takzvaných instrukčních modifikátorů. Tyto modifikátory slouží ke změně výstupních dat instrukcí ještě předtím, než jsou zapsány do výstupních registrů. Mohou být použity pro násobení nebo dělení výsledků faktorem dva a dále pro sevření výsledku nacházejícího se mezi nulou a jedničkou. Instrukční modifikátory jsou aplikovány až po běhu instrukce, ale před tím než je výsledek zapsán do cílového registru. Můžeme použít instrukční modifikátor tří typů. Jejich seznam je uveden níže.

    • Modifikátor pro násobení -po načtení dat z registrů násobí tato vstupní data faktorem dva.

    • Modifikátor pro dělení -po načtení dat z registrů dělí tato vstupní data faktorem dva.

    • Saturační modifikátor -slouží k sevření rozsahu hodnot v registrech nacházejících se mezi nulou a jedničkou.



  6. Maskování -v článku nazvané jako masking . Pro tuto operaci se používají takzvané masky pro zápis do registru. Jejich účelem je kontrolovat, které komponenty cílového registru byly zapsány pomocí instrukcí. Dále kontrolují, které kanály (red , green, blue, alpha) byly v cílovém registru zaktualizovány.

  7. Výstupní registr -v diagramu označený jako output register . Nachází se na konci shaderu. Obsahuje v sobě informace o konečné barvě.
{mospagebreak title=Popis jednotlivých generací pixel shaderů}

Za období po které se pixel shadery objevují jako standardní součást grafickýh karet se vyvinuly již tři generace. Každá z generací obsahuje ještě nějaké vývojové stupně. Přehled všech generací pixel shaderů včetně jejich popisu je uveden v následujícím seznamu.

  • Pixel shadery generace 1.X (Radeon 8500/GeForce 3)

    • První vývojový stupeň 1.1
    • Druhý vývojový stupeň 1.2
    • Třetí vývojový stupeň 1.3
    • Čtvrtý vývojový stupeň 1.4
  • Pixel Shadery generace 2.X (Radeon 9500/9700)
  • Pixel shadery generace 2.X Extended (GeForce FX)
  • Pixel shadery generace 3.X (R400)

V dalším textu se povádíme na rozdíly mezi jednotlivými generacemi pixel shaderů. Budu se věnovat pouze základním změnám, neboť Podrobnější popis by byl již nad rámec tohoto článku.

První generace označená 1.X

Nejdříve se podíváme na první generaci pixel shaderů označovanou jako 1.X. V následujícím krátkém seznamu si uvedeme maximální počty použitelných instrukcí. Typickckým představitelem karet s pixel shadery verze 1.1-1.2 jsou grafické karty s čipy Geforce 3, Geforce 3 Ti 200, Geforce 3 Ti 500 a Radeon 7500. Pixel shadery 1.3 používají grafické karty s čipy Geforce 4 Ti 4200, Geforce 4 Ti 4400, Geforce 4 Ti 4600, Geforce 4 Ti 4800 a Geforce 4 Ti 4800 SE. Pixel shadery 1.4 používá například grafická karta Radeon 8500.

  • Verze 1.1 - 8 instrukcí.

  • Verze 1.2 - 12 instrukcí.

  • Verze 1.3 - 12 instrukcí.

  • Verze 1.4 - 14 instrukcí.

V této verzi byla vytvořena celá řada nových instrukcí. Jedná se o tyto skupiny instrukcí:

  1. Instrukce pro nastavování-def, ps.

  2. Aritmetické instrukce-add, cmp, cnd, dp3, dp4, lrp, mad, mov, mul, nop, sub.

  3. Makra-exp, frc, log, m3x2, m3x3, m3x4, m4x3, m4x4.

  4. Texturové instrukce-tex, texbem, texbeml, texcoord, texcrd, texdepth, texdp3, texdp3tex, texkill, texld, texm3x2depth, texm3x2pad, texm3x2tex, texm3x3, texm3x3pad, texm3x3tex, texm3x3spec, texm3x3vspec, texreg2ar, texreg2gb, texreg2rgb.

Dále byly přidány nové registry: constant, temporary, texture, color.

A nakonec byly přidány nové modifikátory: instruction modifiers, register modifiers, source register selectors, register write masks.

Technika 3D: Úvod do Pixel Shaderů

Druhá generace označená 2.X

V této verzi došlo k podstatným změnám. Byly vytvořeny nové typy instrukcí a některé staré typy byly naprosto zrušeny. Maximální počet instrukcí v této verzi je 96. Z toho může být 64 instrukcí aritmetických a 32 instrukcí texturových. Podrobný výpis změn v instrukcích je uveden v následujícím seznamu. Tuto verzi pixel shaderů používají grafické karty Radeon 9700 a Radeon 9700 Pro.

  1. Instrukce pro nastavování-žádné změny.

  2. Aritmetické instrukce-žádné změny.

  3. Makra-žádné změny.

  4. Texturové instrukce

    • Byly odstraněny instrukce-tex, texbem, texbeml, texcoord, texcrd, texdepth, texdp3, texdp3tex, texm3x2depth, texm3x2pad, texm3x2tex, texm3x3, texm3x3pad, texm3x3tex, texm3x3spec, texm3x3vspec, texreg2ar, texreg2gb, texreg2rgb.

    • Byly přidány instrukce-texldb, texldp.

Dále byly přidány nové registry: constant float, sampler, output color, output depth.

A nakonec byly přidány nové modifikátory: negate, partial precision, saturate.

Technika 3D: Úvod do Pixel Shaderů

Druhá generace rozšířená označená 2.X Extended

V této verzi došlo k podstaným změnám v oblasti instrukcí. Byly vytvořeny nové kategorie instrukcí, které se nenacházejí v předchozích verzích. Minimální počet instrukcí v této verzi je 96. Maximální počet instrukcí v této verzi je 512. Podrobný výpis změn v instrukcích je uveden v následujícím seznamu. Tuto specifikaci používají grafické karty Geforce FX 5800 a Geforce FX 5800 Ultra.

  1. Instrukce pro nastavování - žádné změny.

  2. Aritmetické instrukce - žádné změny.

  3. Makra - žádné změny.

  4. Instrukce pro kontrolu statického toku - call, callnz, else, end, endif, endloop, endrep, if, label,loop, rep, ret.

  5. Instrukce pro kontrolu dynamického toku - break, breakc, ifc
     
  6. Gradientní instrukce - dsx, dsy.

  7. Texturové instrukce  -texldd.

  8. Predikace - setp instruction, p# register.

Dále byly přidány nové registry: constant integer, constant Boolean, loop counter, predicate.

A nakonec byly přidány nové modifikátory: arbitrary swizzle.

Technika 3D: Úvod do Pixel Shaderů

Třetí generace označená 3.X

V této verzi nedošlo k žádným podstatným změnám v oblasti instrukcí. Nebyly vytvořeny žádné nové kategorie instrukcí. Pouze došlo k rozšíření použitelného počtu instrukcí. Minimální počet instrukcí v této verzi je 512. Maximální počet instrukcí v této verzi je 32 768. Tato specifikace existuje zatím pouze ve vývojové podobě a zatím není obsažena v žádném hardwaru (plánuje se do R400). Vývojáři zatím mají možnost se specifikací pracovat a blíže se s ní seznamovat. Až dojde k jejímu začlenění do grafických karet, budou schopni pružně reagovat na nový hardware a vytvářet pro něj aplikace plně využívající přínosy této nové specifikace. Podrobný výpis změn v instrukcích je uveden v následujícím seznamu.

  1. Instrukce pro nastavování - žádné změny.

  2. Aritmetické instrukce - žádné změny

  3. Makra - žádné změny.

  4. Instrukce pro kontrolu statického toku - žádné změny.

  5. Instrukce pro kontrolu dynamického toku - žádné změny
     
  6. Gradientní instrukce - žádné změny.

  7. Texturové instrukce - žádné změny.

  8. Predikace - žádné změny.

Registry: beze změny.

A nakonec modifikátory: opět beze změny.

Závěr

Účelem tohoto článku bylo seznámit především běžné uživatele s tím co je to pixel shader. Doufám, že i pokročilí uživatelé si článek rádi přečtou a že z něj budou moci načerpat přínosné informace. Myslím si, že takovýchto článků není na českém intermetu mnoho a proto tedy doufám, že jsem alespoň trochu přispěl k rozšíření obzorů českých uživatelů internetu.

 
Komentáře k článku
RSS
Pouze registrovaní uživatelé mohou přidat komentář!
9.4.2003 07:25:49   0.0.0.xxx 10
No jo, dobry. Jen by me tak zajimalo, co jsou to ty pixel shadery? Dozvedel jsem se kde jsou umisteny v nejakem konkretnim gpu a spoustu jmen instrukci. Shledl jsem par hezkych obrazku ktere vygenerovala cela grafika a ne jenom pixel shadery - i kdyz mozna se pletu. Porad totiz nevim co ze to vlastne delaji
9.4.2003 07:30:20   0.0.0.xxx 00
To som nevedel, ze Radeon 7500 podporuje pixel shadery 1.2. To by potom malo na nom íst spustit nature v 3DMark 2001. Ja si myslím ze pixel shadery sú u ATI podporované az od 8500 vyssie.
9.4.2003 07:52:17   0.0.0.xxx 00

Pěkný článek, ale opravdu z něj není jasné, na čem se pixel shadery podílí. (např. http://meshuggah.4fo.de/ShaderIntro.htm">http://meshuggah.4fo.de/ShaderIntro.htm) To by chtělo upřesnit a navíc porovnat obraz s využitím pixel shaderů a bez nich. Dále bych upřesnil jejich fyzické umístění, na začátku je napsáno, že existují vedle gpu a pamětí, dále je uváděno, že jsou základním prvkem architektury gpu - o tom by se také dalo polemizovat, jsou součástí GF3, Radeounu7500 a výše, starší grafiky tedy nefungují? :-)


Článek na toto téma je fajn, uvítal bych další, rozvíjející tuto tématiku (klidně seriál) - třeba už od toho, jak se tvoří 3d scéna a první 3d akcelerátory, až po novější a novější technologie do dneška. Okořenit to dalšímí "fíčurkami" - jak (zjednodušeně) dostat televizi do PC, jak funguje přehrávání filmů (na úrovni grafiky, o kompresi by to bylo na další seriál), co je to hydravision, příp nview a tak dále.

9.4.2003 08:17:45   0.0.0.xxx 10
Jak uz bylo napsano- clanek nevysvetluje co to jsou pixelshadery- Co se diky nim da dosahnout? Jak gk pracuje bez nich a s nimi?
A ohodnoceni clanku- "pro experty" je uplne mimo... (jak pise i sam autor)
9.4.2003 08:26:34   0.0.0.xxx 10
V zaveru pisete "Ucelem clanku bylo seznamit bezne uzivatele s pixel shadery". No teda sorry, ale tohle muzete myslet vazne pouze v pripade, ze se jedna o prvni cast nejake rozsahlejsi serie. Moc rad bych totiz vedel, co si ti "bezni" uzivatele z tohoto clanku odnesou. Nikde v celem textu jsem nenasel srozumitelne vysvetleni toho, k cemu vlastne ty shadery jsou. Akorat prelozene anglicke nazvy komponentu s blokoveho diagramu a rozdily mezi verzemi shaderu reprezentovane jinymi instrukcemi a pocty registru. Hromada vyrazu jako "vektor", "instrukce", "registr"; dost me taky pobavila veta "Tato operace se běžně nazývá swizzling". Vazne si myslite, ze tito uzivatele vubec budou vedet, co tyto vyrazy znamenaji ? Tento clanek by se dal shrnout do jedne vety: Pixel a Vertex shadery slouzi k celoobrazovkove modifikaci 3D sceny umoznene programovatelnymi efekty. Zbyvajici informace jsou beznym uzivatelum naprosto k nicemu a pokrocili si je uz davno nasli nekde jinde... A pokud se tu jedna o cast rozsahlejsiho clanku, tak potom nechapu ten zaver a taky to, proc se tu vlastne srovnavaji jednotlive verze shaderu. To bych ocekaval snad az nekde v posledni casti, tady bych se zameril na pokud mozno srozumitelne vysvetleni funkce teto soucasti graficke karty a ne na ohaneni se vektory, RGB, alfa kanaly apod.
9.4.2003 09:46:09   0.0.0.xxx 00
Chapu, ze clanek je zameren predevsim na "hraci" karty, ale nebylo by od veci zminit graficke karty, ktere maji pixel/vertex shadery plne programovatelne, tj. nejsou omezeny na urcitou verzi, ale v pripade potreby je lze kdykoliv rozsirit.
9.4.2003 11:11:43   0.0.0.xxx 00
Ocenuji snahu autora ale bohuzel jsem normalni uzivatel a tak pro mne tento clanek nema vyznam. Vubec nevim k cmeu by se mi ty informace mohli hodit a bohuzel se mi z toho clanku ani nepodarilo vycist jak tedy ty pexel Shadery ovlivnuji grafiku. Co vlastne vylepsuji? Asi je to moje chyba ale mohlo to byt napsano srozumitelneji. Jinak ale pro pokrocile uzivatele a odporniky jiste prinosna zalezitost. Mejte se.
9.4.2003 12:13:25   0.0.0.xxx 00

Shadery jsou jak bylo správně řečeno jednotky grafické karty, které zpracovávají jednoduché "programy". Tyto kartě říkají, jak naložit s grafickými daty (geometrie, světla -> barvy, textury, atd.). Oproti standartní(DirectX7) neboli "fixed-function" pipeline mají výhodu, že se právě dají programovat (v určitých mezích, daných právě verzí shaderů).


Příkladem pro pixel-shader budiž třeba multi-texturing. Zde si můžete napsat postup, jakým způsobem se textury do sebe namíchají. K dispozici jsou různé matematické operace, které můžete pospojovat a dosáhnout tak kýženého efektu. V původní "fixed" pipeline jsou k dispozici pouze předdefinované operace a některé speciální efekty se jimi dosahují poměrně komplikovaně. Pro pixel-shadery stačí napsat "jen" správný program.


Pozn. Snažil jsem se to shrnout jen tak "v kostce". Ti, co programují 3D aplikace nejspíš vědí, o čem mluvím a laikům to snad možná něco nastínilo, doufám:-))

9.4.2003 12:18:21   0.0.0.xxx 10
Chtěl bych se omluvit za nedorozumění ke kterým v mém článku došlo. Byl to teprve můj první článek a zatím nemám zkušenosti s takovýmito reakcemi čtěnářů. Díky, za tvojí kritickou připomínku, budu se snažit, aby následující články byly kvalitnější a vezmu si z toho ponaučení.
Zdraví autor článku.
9.4.2003 12:25:25   0.0.0.xxx 00
Moc vám děkuji za vaše kritické připomínky. Je vidět, že na náš server přicházejí opravdu čtenáři, kteří mají zájem dozvědět se podstatné informace o problematice, která je zajímá. Můj článke není asi úplně korektní a je v něm mnoho tématických chyb. Je to způsobeno asi tím, že je to můj první článek a já zatím nemám zkušenosti s reakcemi čtenářů. Budu se snažit, aby následující články, které vám na pctuning nápíši, se více přibližovali běžným uživatelům a aby byly více srozumitelnější. K tomu mi také poslouží vaše reakce, protože jsou pro mne podnětné a já zjistím co je špatně a na čem mohu příště zapracovat.
Zdravím všechny čtenářa a doufám, že nám zachovají svou přízeň. Hlavně díky vám můžeme provoz kvalitní časopis.
Autor článku.
9.4.2003 12:30:15   0.0.0.xxx 00
K tvé rozhořčené reakci bych napsal asi toto. Ano, záměrem je napsat rozsáhlejší seriál. Je to z toho důvodu, že na českém internetu se o této problematice moc nedočtete. Sem tam se objeví nějaké kusé informace v recenzích a sem tam někdo napíše nějaký kratší článek. Budu se snažit vtvořit seriál, který by se věnoval této problematice trochu podrobněji a který by čtenářům všech znalostních kategorií tuto problematiku přiblížil.
Autor článku.
9.4.2003 13:39:01   0.0.0.xxx 00
Opravdu souhlasím, že ve článku je popsána struktura Pixel Shaderů , ale jak se projevují v grafice už nikde psáno není.
9.4.2003 13:46:14   0.0.0.xxx 00
Hezké shrnutí od tebe jsme se dozvěděli to samé co ze článku. Že se dají Pixes Shadery programovat, že ovlivňují geometrii, barvy atd. Ale jak? Co dělají?
9.4.2003 13:54:37   0.0.0.xxx 00
Hele, nevíte nekdo proč je ten obrázek (3DMark 03) tak hrozne žltej??? Na mojej R9700 to tak žlté nini.
9.4.2003 15:49:02   0.0.0.xxx 00
Pokud chcete videt efekty, ktere pixel a vertex shadery umoznuji, staci si spustit 3D mark 2001 nebo 2003, kde jsou na toto specificka dema. Velmi pekne demo naleznete tez zde: http://www.daionet.gr.jp/~masa/rthdribl/index.html (je ale pekelne narocne )
9.4.2003 16:48:59   0.0.0.xxx 00
Přesně takový článek (seriál) mi na PCT chyběl. Při zpozorování titulku jsem zajásal, že se konečně dozvím, co to vlastně přesně je.
Po přečtení má radost ale trochu vystřízlivěla. Velmi bych ocenil např. srovnání nějakých velmi primitivních scén (třeba autorem naprogramovaných) s názorně ukázaným efektem pixel shaderu (šipkou apod.) a poznamenáním rozdílů. Také by mě zajímalo, co vlastě musí autoři 3D scény do aplikace zakomponovat. Model, textury apod. si představí každý, ale tohle už je těžší...

Samozřejmně chápu, že komplexní článek je zaměřen trochu výše, než na "běžné uživatele" a vyžaduje více času a zanlostí...
9.4.2003 17:07:01   0.0.0.xxx 00
Aké Vertex Pixel shadery podporuje UT 2003?
9.4.2003 18:52:06   0.0.0.xxx 00
UT03 sam osebe plnu podporu Shaderov nema ! Ono je to takto : UT03 vyuziva len klasický T&L ako maju karty GF2, R 7500 atd... to jest prvej G.
Ovesm ak mas kartu ktora ako R8500, GF3, GF4 atd... robi tuto pracu cez Shadery...to jest ovela rychlejsie.
takze podporuje vsedky do 1.4

Ak ma dakto pochybnosti. Tu je dokaz : Ak by UT2003 ci U2 boli cisto DX8.1 hry nespustil by si ich na starsich DX7 kartach. Ale ide....

Prva naozaj FULL DX8.1 hra zo vsetkymi featurkami bude az Doom3
9.4.2003 18:53:59   0.0.0.xxx 00
Inac je ten clanok spica
9.4.2003 19:34:02   0.0.0.xxx 00
Určitě to je dobrý nápad, přiblížit nové technologie ve 3D hardware, které se navíc dají pěkně předvést. Bohužel z tohoto článku jsem na rozpacích. Kdybych věděl co jsou to pixel shadery (jakože to nevím), tak bych určitě nerozebíral to, kde je implementovaná jaká verze a jaká sada instrukcí přibyla nebo ubyla. Napsal bych, co vlastně dělají, proč je výhodné je mít na kartě a nepočítat to třeba na CPU, a přidal nějaké praktické ukázky bez a s. Skoro mi to přijde, že autor žádný pixel shader ještě ani nenapsal.
10.4.2003 00:59:53   0.0.0.xxx 00
ci verziu 1.2, to asi nie lebo je to vlastne pretaktovana verzia stareho radeona, ale 1.1 resp 1.0 podporuje urcite.
10.4.2003 08:11:23   0.0.0.xxx 00
Taky si myslím, že autor nemá s programování PS zkušenosti, protože sehnat takového člověka a zaplatit jej určitě není jednoduché...
Článek sípše vychází jako počtení pro lidi, kteří o pixel shaderech ještě ani neslyšeli, nebo jen okrajově.
Ono s dokumentací z netu a pár obrázky z 3D Marku udělá tohle kdokoli
10.4.2003 16:43:35   0.0.0.xxx 00
Takže jak je psáno na stránkách NVidie. Pixel Shading je práce se světelnými efekty na úrovni pixelů. A právě pomocí pixel shaderů implementovaných v GPU lze "libovolně" programovat a vylepšovat tyto světelné efekty pro dosažení co nejrealističtější scény. Zjednodušeně řečeno Pixel Shadery = práce s osvětelním objektů. Poměrně krátké a pro lajka snadno pochopitelné vysvětlení. Snad takové bude i v příštích článcích.
10.4.2003 17:28:07   0.0.0.xxx 00
Snazim se programovat v D3D a urcite bych zacal nejprve vertex shadery, ktere byly driv a ktere jsou snadneji pochopitelne (ty uz jsem pochopil)

Jde o to, ze VS pracuje na urovni vertexu (vrcholu). Snad vsichni z vas vi, ze kazdy objekt ve "hre" je v podobe poskladanych trojuhleniku (polygonu). V kazdem vrcholu trojuhelnika se nachazi VERTEX. Vertexy urcuji geometrii telesa. V DX8 a vyse muzete pracovat s VERTEXY pomoci VS. Je potreba udelat transformace, pripadne osvetleni (TaL). Prave toto se provadi ve vertex shaderu, coz je vlastne maly procesor, ktery provadi vas kod (napsany specialnimi instrukcemi VS). Tento kod je pak "spusten" na kazdy vertex, ktery je tranformovan do vaseho 3D sveta. Vyhoda spociva v tom, ze VS jdou programovat, takze muzete udelat plno zajimavych efektu s GEOMETRII telesa pripadne OSVICENIM.
Vertex ma za prve pozici ve forme 3D souradnic x, y a z (obsahuje samozrejme i dalsi atributy, ale ty nas ted nezajimaji - barvu, normalovy vektor, texturove koordinaty), tyto souradnice prichazi do vstupnich registru VS a vy s nimi muzete pracovat jako s vlastnimi. Dale muzete vyuzit konstantni registry C, ktere naplnite programove predem, pred spustenim vlastni tranformace. Nakonec tam jsou jeste odkladaci a hlavne VYSTUPNI registry, do ktery zapisete vyslednou pozici, barvu, pripadne texturove koordinaty. S temito daty se dale pracuje, mohou napriklad putovat do PS atd.

Tak a ja si myslim, ze PS pracuji hodne podobne, jen maji svuj instrukcni soubor a HLAVNE pracuji na urovni pixelu, takze vas program je spusten na kazdy renderovany pixel! Jak jiz bylo receno, PS se pouzivaji napr. pro multi-texturing, ale daji se s tim delat dalsi figle, ktere jeste bohuzel neznam.

Jo PS jsou implementovany az v Radeonu 8500(LE). Celkove PS nejsou zdaleka ve vsech kartach. Napriklad cela rada MX je uplne vypousti!

Snad jsem vam pomohl.

Swap
11.4.2003 07:09:36   0.0.0.xxx 00
Vážený RiBixi, asi jsi možná přesně nepochopil účel tohoto časopisu. Jeho účelem je seznamovat čtenáře co nejkomplexněji se širokým spektrem hardwarových problémů. To co ty píšeš, že takovýto článek napíše s trochou materiálů z internetu kdokoliv je sice hezké, ale myslím si, že tvá úvaha je trochu irelevantní. Zajímalo by mne, když jsi tak inteligentní a vše zvládáš sám, proč nám sem nedáš reference na své práce, abychom se mohli něčemu přiučit. Rád bych viděl kolik věcí dokážeš naprogramovat u grafické karty ty. Podle tvého minulého příspěvku to na mne dělá dojem, že o dané problematice nevíš vůbec nic a že se zde snažíš jenom zapůsobit prázdnými řečmi. Až budeš příště psaá takovýto příspěvek, uvědom si, že hlavním účelem této diskuse je zkvalitnit články. Od čtenářů by bylo nejkorektnější shrnou své výtky v několika očíslovaných bodech, aby se autor mohl zamyslet nad tím, co napsal špatně. Jinak se pod svůj příspěvek nedokážeš ani podepsat jménem, což většina autorů na tomto serveru dělá.
S pozdravem autor článku.
11.4.2003 07:35:09   0.0.0.xxx 00
Jestli se nepletu tak PS byly opravdu jiz v puvodnich Radeonech, ale M$ pak zmenil specifikaci ve svych Directech, takze presto, ze jakesi Pixel Shadery maji vsechny Radeony 7200 i 7500, tak se neda hovorit o verzi (moznas 0.9), protoze je nelze vyuzit.
11.4.2003 12:08:19   0.0.0.xxx 00
Vážený autore,
já jsem svůj příspěvek nepsal proto, abych si postěžoval, že tohle udělá každý. Sám vím, jak je časově náročné něco napsat, protože jsem pro PCT 3 články napsal, ale spolupráci jsem ukončil.
Pravda, že o problematice graf. karet mnoho nevím, ale zabývám se programováním v jiných oblastech a chtěl bych se jen dozvědět něco nového, což mi článek bohužel nedal.
11.4.2003 14:00:10   0.0.0.xxx 00
no UT2003 podporu shaderu ma... Zkus si ji zahrat na GF2 a hledej travu... nenajdes:-)
11.4.2003 21:57:34   0.0.0.xxx 00
V tom případě se omlouvám a budu se snažit, aby i jiné články, které napíši byly daleko lepší a srozumitelnější než tento první. Jinak sám také programuji v oblasti www tvorby, takže znám i vaše problémy. Ještě jednou se omlouvám a doufám, že na pctuning nezanevřete. Příště spíše napište v bodech co přesně bylo podle vás špatně a já se budu snažit na to reagovat.
S pozdravem autor článku.
12.4.2003 07:04:07   0.0.0.xxx 00
No pokud nejdou vyuzit, tak tam vlastne nejsou )
12.4.2003 13:23:26   0.0.0.xxx 00
Hele, nevis jak se delaj lightmaps??? asi multi-texturingem, co??
12.4.2003 16:55:26   0.0.0.xxx 00
Jo, myslim ze jo...

V helpu je tohle popsany dost podrobne a myslim ze na to je nekolik technik....
13.4.2003 07:38:06   0.0.0.xxx 00
Geometrii ovlivňují Vertex shadery,to jen tak pro upřesnění.
Špatně se to vysvětluje, pokud nevíš, jak funguje grafická pipeline. Zkus msdn.microsoft.com a najdi si tam dokumentaci k DirectX SDK. Tam je to docela fajn popsaný, sice v angličtině, ale co, že?!
14.4.2003 10:30:38   0.0.0.xxx 00
Máte pravdu, jen je někdy problém zformulovat náměty do bodů, když člověk cítí, že mu článek nedal to, co od něj čekal, ale má takový neurčitý pocit, že tomu chybí 5. hvězdička :o)
14.4.2003 11:06:26   0.0.0.xxx 00
UT2K3 podporuje shadery. Jen pokud je nenajde, spokojí se TnL, ale pak je hra ochuzena o některé "De-Luxe" efekty. To, že je s použitím shaderů rychlejší bych raději netvrdil, ono je to spíš dané vyšším výkonem karet, které shadery mají. Ona taková GF2MX se třeba s GF4Ti nemůže měřit ani v klasickém TnL. I když je pravda, že třeba Radeon 8500 má ve specifikaci napsáno, že v TnL udělá tušim 47 Mtris/sec., kdežto s použitím v-shaderů až 63Mtris./sec., což mi hlava zrovna nebere, ale budeme ATi věřit. Ono spíš záleží na tom, jak kvalitně je ten shader napsaný, potom nějaký ten takt oproti TnL asi ušetřit může...:-)))
14.4.2003 11:12:23   0.0.0.xxx 00

Lightmapy se dělají multitexturingem. Pokud karta umí 2 textury v jednom průchodu (což už snad od dob TNT zvládá každá), tak je to jenom plus (a hlavně se to o něco líp programuje).


Když máš light-mapu, tak pak záleží, jestli chceš pomocí ní dosáhnou difúzního nebo specularního osvětlení. Podle toho pak zvolíš operaci mezi texturama. Pro difúzní D3DTOP_MODULATE a pro speculární D3DTOP_ADD (popř. jejich odvozeniny 2X, signed, atd.,).


Jinak v DX SDK je sample, jmenuje se to tušim MFC Texture nebo tak nějak a tam jsou tyhle operace ukázaný i s kódem.

21.4.2003 08:53:46   0.0.0.xxx 00
Nepodporuje ani jednu.
21.4.2003 08:58:17   0.0.0.xxx 00
Takove karty zatim nejsou (ani P10 neumi vsechno - napr. verzi 2.0) :-)
22.4.2003 10:28:20   0.0.0.xxx 00
Měl podporovat, díky zásahu nVidie do specifikací DX8 nepodporuje vůbec...

Redakce si vyhrazuje právo odstranit neslušné a nevhodné příspěvky. Případné vyhrady na diskuze(zavináč)pctuning.cz

0 čtenářů navrhlo autorovi prémii: 0Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.