Vivuli ni nini kwenye mchezo? Vivuli ni nini kwa maneno rahisi? Jinsi ya kutumia vivuli

Utangulizi

Ulimwengu wa picha za 3D, pamoja na michezo ya kubahatisha, umejaa masharti. Masharti ambayo mara zote hayana ufafanuzi sahihi pekee. Wakati mwingine vitu sawa huitwa tofauti, na kinyume chake, athari sawa inaweza kuitwa katika mipangilio ya mchezo ama "HDR", kisha "Bloom", kisha "Glow", au "Postprocessing". Watu wengi, kutoka kwa watengenezaji wanajivunia juu ya kile walichounda kwenye injini yao ya michoro, hawaelewi walimaanisha nini.

Nakala hiyo imekusudiwa kukusaidia kuelewa ni nini baadhi ya maneno haya yanamaanisha, ambayo hutumiwa mara nyingi katika hali kama hizo. Ndani ya mfumo wa kifungu hiki, hatutazungumza juu ya masharti yote ya picha za 3D, lakini tu juu ya yale ambayo yameenea zaidi hivi karibuni kama sifa na teknolojia tofauti zinazotumiwa katika injini za picha za mchezo na kama majina ya mipangilio ya picha ya michezo ya kisasa. Kuanza, ninapendekeza sana ujitambulishe.

Ikiwa kitu katika makala hii na katika makala ya Alexander haijulikani kwako, basi ni busara kuanza tangu mwanzo, na. Nakala hizi tayari zimepitwa na wakati, kwa kweli, lakini data ya msingi, ya msingi na muhimu iko. Tutazungumza juu ya maneno zaidi "ya hali ya juu". Unapaswa kuwa na uelewa wa kimsingi wa picha za 3D za wakati halisi na bomba la michoro. Kwa upande mwingine, usitarajie fomula za hisabati, usahihi wa kitaaluma na mifano ya msimbo - hiyo sio kile ambacho kifungu hiki kimekusudiwa. Masharti

Orodha ya maneno yaliyoelezwa katika makala:

Shader

Kwa maana pana, shader ni mpango wa kuibua kuamua uso wa kitu. Hii inaweza kuwa maelezo ya taa, maandishi, baada ya usindikaji, nk. Shaders ilikua kutokana na kazi ya Cook (Cook's shade trees) na Perlin (Perlin's pixel stream language). Siku hizi vivuli maarufu zaidi ni RenderMan Shading Language. Vivuli vinavyoweza kupangwa vilianzishwa kwanza katika RenderMan ya Pixar, aina kadhaa za vivuli hufafanuliwa hapo: mwanga. vivuli vya chanzo, vivuli vya uso, vivuli vya kuhamishwa, vivuli vya sauti, vivuli vya picha. Vivuli hivi mara nyingi hutekelezwa katika programu na vichakataji vya madhumuni ya jumla na havina utekelezaji kamili wa maunzi. Baadaye, watafiti wengi walielezea lugha zinazofanana na RenderMan, lakini zilikuwa tayari zimeundwa kwa ajili ya kuongeza kasi ya maunzi: mfumo wa PixelFlow (Olano na Lastra), Lugha ya Kivuli cha Tetemeko (inayotumiwa na Programu ya kitambulisho katika injini ya picha ya mchezo wa Quake III, ambayo ilielezea utoaji wa pasi nyingi), nk. Wenzake wa rika walibuni mbinu ya ruhusu programu zilizo na vitanzi na masharti kuendeshwa kwenye usanifu wa maunzi wa kitamaduni kwa kutumia pasi nyingi za uwasilishaji Vivuli vya RenderMan viligawanywa katika kupita kadhaa, ambazo ziliunganishwa katika fremu. Baadaye, lugha zilionekana kuwa tunaona vifaa vilivyoharakishwa katika DirectX na OpenGL. Hivi ndivyo vivuli vilibadilishwa kwa programu za picha za wakati halisi.

Chipu za video za mapema hazikuweza kupangwa na zilifanya tu vitendo vilivyopangwa tayari (kazi-fasta), kwa mfano, algorithm ya taa iliwekwa kwa ukali kwenye vifaa, na hakuna kitu kinachoweza kubadilishwa. Halafu, watengenezaji wa chip za video walianzisha hatua kwa hatua vipengele vya usanidi kwenye chipsi zao, mwanzoni hizi zilikuwa na uwezo dhaifu sana (NV10, inayojulikana kama NVIDIA GeForce 256, tayari ilikuwa na uwezo wa programu zingine za zamani), ambazo hazikupokea msaada wa programu katika Microsoft DirectX API. , lakini kwa Baada ya muda, uwezekano umeongezeka mara kwa mara. Hatua iliyofuata ilikuwa ya NV20 (GeForce 3) na NV2A (chip ya video iliyotumiwa kwenye koni ya mchezo ya Microsoft Xbox), ambayo ikawa chipsi za kwanza zilizo na usaidizi wa vifaa kwa vivuli vya DirectX API. Toleo la Shader Model 1.0/1.1, ambalo lilionekana katika DirectX 8, lilikuwa na kikomo sana; kila shader (haswa vivuli vya pixel) inaweza kuwa fupi kwa urefu na kuchanganya seti ndogo ya amri. Baadaye, Shader Model 1 (SM1 kwa ufupi) iliboreshwa kwa toleo la 1.4 la Pixel Shaders (ATI R200), ambalo lilitoa unyumbulifu zaidi lakini pia lilikuwa na uwezo mdogo. Vivuli vya wakati huo viliandikwa kwa lugha inayoitwa shader ya mkutano, ambayo ni karibu na lugha ya kusanyiko kwa wasindikaji wa ulimwengu wote. Kiwango chake cha chini husababisha matatizo fulani ya kuelewa kanuni na programu, hasa wakati msimbo wa programu ni mkubwa, kwa sababu ni mbali na uzuri na muundo wa lugha za kisasa za programu.

Shader Model 2.0 (SM2), ambayo ilionekana katika DirectX 9 (ambayo iliungwa mkono na chipu ya video ya ATI R300, ambayo ikawa GPU ya kwanza kusaidia toleo la 2.0 la shader), ilipanua kwa umakini uwezo wa vivuli vya wakati halisi, ikitoa muda mrefu na zaidi. vivuli ngumu na seti iliyopanuliwa ya amri. Uwezo wa kukokotoa sehemu inayoelea katika vivuli vya pixel uliongezwa, ambayo pia ilikuwa uboreshaji mkubwa. DirectX 9, iliyowakilishwa na uwezo wa SM2, pia ilianzisha lugha ya kiwango cha juu cha shader (HLSL), sawa na lugha ya C. Na mkusanyaji bora anayetafsiri programu za HLSL kuwa nambari ya kiwango cha chini ambayo "inaeleweka" kwa maunzi. Kwa kuongeza, profaili kadhaa zinapatikana, iliyoundwa kwa usanifu tofauti wa vifaa. Sasa, msanidi programu anaweza kuandika msimbo mmoja wa shader wa HLSL na kuukusanya kwa kutumia DirectX kwenye programu mojawapo ya chipu ya video iliyosakinishwa ya mtumiaji. Baada ya hayo, chips kutoka NVIDIA, NV30 na NV40 zilitoka, ambayo iliboresha uwezo wa vivuli vya vifaa hatua moja zaidi, na kuongeza vivuli vya muda mrefu zaidi, uwezekano wa mabadiliko ya nguvu katika vivuli vya vertex na pixel, uwezo wa sampuli ya textures kutoka kwa vivuli vya vertex, nk. Tangu wakati huo, hakujawa na mabadiliko ya ubora hapana, yanatarajiwa kuelekea mwisho wa 2006 katika DirectX 10...

Kwa ujumla, vivuli vimeongeza uwezo mwingi mpya kwenye bomba la michoro kwa kubadilisha na kuwasha wima na kubinafsisha uchakataji wa pikseli jinsi kila msanidi programu anavyotaka. Na bado, uwezo wa vivuli vya vifaa bado haujafunuliwa kikamilifu katika programu, na kwa kuongezeka kwa uwezo wao katika kila kizazi kipya cha vifaa, hivi karibuni tutaona kiwango cha vivuli vile vile vya RenderMan ambavyo mara moja vilionekana kutoweza kupatikana kwa kasi ya video ya michezo ya kubahatisha. Hadi sasa, katika mifano ya shader ya muda halisi inayoungwa mkono na viongeza kasi vya video vya vifaa leo, ni aina mbili tu za vivuli vinavyofafanuliwa: na (katika ufafanuzi wa DirectX 9 API). Katika siku zijazo, DirectX 10 inaahidi kuongeza .

Vertex Shader

Vivuli vya Vertex ni programu zinazotekelezwa na chipsi za video ambazo hufanya shughuli za kihesabu na wima (vertex, ambayo huunda vitu vya 3D kwenye michezo), kwa maneno mengine, hutoa uwezo wa kufanya algorithms inayoweza kupangwa kwa kubadilisha vigezo vya wima na taa zao (T&L - Kubadilisha & Taa). Kila vertex imedhamiriwa na vigezo kadhaa, kwa mfano, nafasi ya vertex katika nafasi ya 3D imedhamiriwa na kuratibu: x, y na z. Vipeo vinaweza pia kuelezewa na sifa za rangi, kuratibu za texture, nk. Vivuli vya Vertex, kulingana na algorithms, hubadilisha data hii wakati wa kazi yao, kwa mfano, kuhesabu na kuandika kuratibu mpya na/au rangi. Hiyo ni, data ya pembejeo ya shader ya vertex ni data kuhusu vertex moja ya modeli ya kijiometri ambayo inachakatwa kwa sasa. Kawaida hizi ni kuratibu za anga, kawaida, vipengele vya rangi na kuratibu za texture. Data inayotokana ya programu iliyotekelezwa hutumika kama ingizo kwa sehemu zaidi ya bomba; rasterizer hufanya tafsiri ya mstari wa data ya ingizo ya uso wa pembetatu na kutekeleza kipenyo cha pikseli sambamba kwa kila pikseli. Mfano rahisi sana na usiofaa (lakini wazi, natumaini): shader ya vertex inakuwezesha kuchukua kitu cha 3D tufe na kutumia shader ya vertex kufanya mchemraba wa kijani kutoka kwake :).

Kabla ya ujio wa chip ya video ya NV20, watengenezaji walikuwa na chaguzi mbili: ama kutumia programu zao wenyewe na algoriti zinazobadilisha vigezo vya wima, lakini basi mahesabu yote yangefanywa na CPU (programu T&L), au kutegemea algoriti zisizohamishika kwenye video. chips, na usaidizi wa mabadiliko ya vifaa na taa (vifaa T&L ). Muundo wa kwanza kabisa wa DirectX shader ulimaanisha hatua kubwa mbele kutoka kwa vitendakazi visivyobadilika vya ugeuzaji na mwangaza wa vertex hadi algoriti zinazoweza kupangwa kikamilifu. Iliwezekana, kwa mfano, kutekeleza algorithm ya ngozi kabisa kwenye chips za video, na kabla ya hapo uwezekano pekee ulikuwa ni kutekeleza kwa wasindikaji wa kati wa ulimwengu wote. Sasa, kwa uwezo ulioboreshwa sana tangu wakati wa chip iliyotajwa ya NVIDIA, unaweza kufanya mengi na wima kwa kutumia vivuli vya vertex (isipokuwa kwa kuunda, labda) ...

Mifano ya jinsi na wapi vivuli vya vertex hutumiwa:

Pixel Shader

Vivuli vya pikseli ni programu zinazotekelezwa na chipu ya video wakati wa kusawazisha kwa kila pikseli ya picha; hufanya sampuli za unamu na/au shughuli za hisabati kwenye rangi na thamani ya kina (Z-bafa) ya pikseli. Maagizo yote ya shader ya pikseli hutekelezwa kwa misingi ya pikseli-kwa-pixel baada ya ugeuzaji na uangazaji wa jiometri kukamilika. Kama matokeo ya kazi yake, pikseli shader hutoa thamani ya mwisho ya rangi ya pikseli na Z-thamani kwa hatua inayofuata ya bomba la picha, ikichanganya. Mfano rahisi zaidi wa pikseli shader ambayo inaweza kutolewa ni: banal multitexturing, tu kuchanganya textures mbili ( diffuse na lightmap, kwa mfano) na kutumia matokeo ya hesabu kwa pixel.

Kabla ya ujio wa chips za video na usaidizi wa vifaa kwa vivuli vya pixel, watengenezaji walikuwa na uwezo tu wa mchanganyiko wa kawaida wa maandishi mengi na alpha, ambayo yalipunguza kwa kiasi kikubwa uwezo wa athari nyingi za kuona na haikuwaruhusu kufanya mengi ya kile kinachopatikana sasa. Na ingawa ilikuwa bado inawezekana kufanya kitu na jiometri kwa utaratibu, haikuwezekana kwa saizi. Matoleo ya awali ya DirectX (hadi 7.0 yakijumlishwa) kila mara yalifanya hesabu zote kwa kila kipeo na kutoa utendakazi mdogo sana kwa mwangaza wa kila pikseli (kumbuka EMBM - ramani ya bump mazingira na DOT3) katika matoleo ya hivi karibuni. Vivuli vya pikseli vilifanya iwezekane kuangazia pikseli yoyote ya uso kwa pikseli kwa kutumia nyenzo zilizopangwa na wasanidi programu. Pixel shaders toleo la 1.1 (kwa maana ya DirectX) ambayo ilionekana katika NV20 tayari inaweza kufanya sio tu maandishi mengi, lakini pia mengi zaidi, ingawa michezo mingi inayotumia SM1 ilitumia maandishi mengi ya kitamaduni kwenye nyuso nyingi, ikifanya vivuli vya pixel ngumu zaidi kwenye sehemu ya nyuso tu. , kwa ajili ya kuunda aina mbalimbali za athari maalum (kila mtu anajua kwamba maji bado ni mfano wa kawaida wa kutumia vivuli vya pixel katika michezo). Sasa, baada ya ujio wa SM3 na chipsi za video zinazowaunga mkono, uwezo wa vivuli vya pixel umeongezeka hadi kufikia kwamba wanaweza kutumika kufanya ufuatiliaji wa ray, pamoja na mapungufu fulani.

Mifano ya kutumia vivuli vya pixel:

Miundo ya Kiutaratibu

Miundo ya kiutaratibu ni maandishi ambayo yanaelezewa na fomula za hisabati. Miundo kama hiyo haichukui nafasi katika kumbukumbu ya video; huundwa na kificho cha pikseli kwenye kuruka; kila kipengele (texel) kinapatikana kutokana na kutekeleza amri zinazolingana za shader. Miundo ya kawaida ya utaratibu ni: aina tofauti za kelele (kwa mfano, kelele ya fractal), kuni, maji, lava, moshi, marumaru, moto, nk, yaani, wale ambao wanaweza kuelezewa kwa urahisi kwa hisabati. Miundo ya kitaratibu pia hukuruhusu kutumia maandishi yaliyohuishwa na urekebishaji mdogo tu wa fomula za hisabati. Kwa mfano, mawingu yaliyotengenezwa kwa njia hii yanaonekana kuwa ya heshima kwa nguvu na kwa takwimu.

Faida za maumbo ya kiutaratibu pia ni pamoja na kiwango kisicho na kikomo cha maelezo kwa kila unamu; hakutakuwa na saizi; unamu kila wakati hutolewa kwa saizi inayohitajika kwa onyesho lake. Uhuishaji pia unavutia sana; kwa msaada wake unaweza kutengeneza mawimbi juu ya maji, bila kutumia maandishi ya uhuishaji yaliyohesabiwa hapo awali. Faida nyingine ya maumbo kama haya ni kwamba kadiri inavyotumiwa kwenye bidhaa, ndivyo kazi inavyopungua kwa wasanii (ingawa zaidi kwa waandaaji wa programu) kuunda maandishi ya kawaida.

Kwa bahati mbaya, muundo wa kiutaratibu bado haujapokea matumizi sahihi katika michezo, katika matumizi halisi bado ni rahisi kupakia muundo wa kawaida, kumbukumbu za video zinakua kwa kiwango kikubwa na mipaka, vichochezi vya kisasa zaidi tayari vina megabytes 512 za kumbukumbu ya video iliyojitolea, ambayo ni zaidi ya inahitajika. kitu cha kukopa. Kwa kuongezea, bado mara nyingi hufanya kinyume - kuharakisha hesabu katika vivuli vya pixel, hutumia meza za kuangalia (LUTs) - maandishi maalum yaliyo na maadili yaliyohesabiwa hapo awali yaliyopatikana kama matokeo ya mahesabu. Ili sio lazima kuhesabu amri kadhaa za hisabati kwa kila pikseli, husoma tu maadili yaliyohesabiwa awali kutoka kwa muundo. Lakini zaidi, msisitizo zaidi unapaswa kuhamia kwenye mahesabu ya hisabati, chukua chips sawa za kizazi kipya za ATI: RV530 na R580, ambazo zina vichakataji vya pikseli 12 na 48 kwa kila vitengo 4 na 16 vya texture, kwa mtiririko huo. Kwa kuongezea, ikiwa tunazungumza juu ya maandishi ya 3D, kwa sababu wakati maandishi ya 2D yanaweza kuwekwa kwenye kumbukumbu ya kiharakisha cha ndani bila shida, maandishi ya 3D yanahitaji mengi zaidi.

Mifano ya muundo wa utaratibu:

Kuchora Ramani za Mapema/Kuweka Ramani kwa Mapema

Uchoraji ramani ya matuta ni mbinu ya kuiga hitilafu (au uundaji wa picha ndogo, unavyopendelea) kwenye uso tambarare bila gharama kubwa za kimahesabu na kubadilisha jiometri. Kwa kila pikseli ya uso, hesabu ya mwangaza hufanywa kulingana na maadili katika ramani maalum ya urefu inayoitwa bumpmap. Kwa kawaida huu ni mwonekano wa 8-bit nyeusi na nyeupe na thamani za rangi hazijapangwa kama maumbo ya kawaida, lakini hutumiwa kuelezea ukali wa uso. Rangi ya kila texel huamua urefu wa sehemu ya usaidizi inayolingana; thamani kubwa humaanisha urefu mkubwa zaidi ya uso wa asili, na thamani ndogo humaanisha urefu mdogo. Au kinyume chake.

Kiwango cha kuangaza kwa uhakika hutegemea angle ya matukio ya mionzi ya mwanga. Kadiri pembe inavyokuwa ndogo kati ya miale ya kawaida na ya mwanga, ndivyo mwangaza wa sehemu ya uso unavyoongezeka. Hiyo ni, ikiwa unachukua uso wa gorofa, basi kawaida katika kila hatua zitakuwa sawa na kuangaza pia itakuwa sawa. Na ikiwa uso haufanani (kwa kweli, karibu nyuso zote kwa kweli), basi kanuni katika kila hatua zitakuwa tofauti. Na kuangaza ni tofauti, kwa wakati mmoja itakuwa zaidi, kwa mwingine - chini. Kwa hivyo kanuni ya upangaji bumpmapping - kwa mfano wa makosa, kanuni za uso zimewekwa kwa pointi tofauti za poligoni, ambazo huzingatiwa wakati wa kuhesabu mwanga wa pixel-by-pixel. Matokeo yake ni picha ya asili zaidi ya uso; uchoraji wa ramani hupa uso maelezo zaidi, kama vile makosa kwenye tofali, vinyweleo kwenye ngozi, n.k., bila kuongeza ugumu wa kijiometri wa modeli, kwani mahesabu hufanywa kwenye kiwango cha pixel. Aidha, wakati nafasi ya chanzo cha mwanga inabadilika, mwanga wa makosa haya hubadilika kwa usahihi.

Kwa kweli, taa ya vertex ni rahisi zaidi kwa hesabu, lakini inaonekana isiyo ya kweli, haswa na jiometri ya poligoni ya chini; tafsiri ya rangi kwa kila pixel haiwezi kuzaliana maadili kubwa kuliko maadili yaliyohesabiwa ya wima. Hiyo ni, saizi katikati ya pembetatu haiwezi kuwa mkali zaidi kuliko vipande vilivyo karibu na vertex. Kwa hivyo, maeneo yenye mabadiliko ya ghafla ya mwanga, kama vile vimulimuli na vyanzo vya mwanga vilivyo karibu sana na uso, yataonyeshwa kimakosa, na hii itaonekana hasa katika mienendo. Bila shaka, tatizo linaweza kutatuliwa kwa sehemu kwa kuongeza utata wa kijiometri wa mfano, kugawanya katika idadi kubwa ya wima na pembetatu, lakini chaguo bora itakuwa taa ya pixel-na-pixel.

Ili kuendelea, ni muhimu kukumbuka vipengele vya taa. Rangi ya sehemu ya uso inakokotolewa kama jumla ya vipengee vilivyo mazingira, vilivyoenea na maalum kutoka kwa vyanzo vyote vya mwanga kwenye eneo (ikiwezekana kutoka kwa wote, nyingi mara nyingi hupuuzwa). Mchango wa thamani hii kutoka kwa kila chanzo cha mwanga hutegemea umbali kati ya chanzo cha mwanga na uhakika juu ya uso.

Vipengele vya taa:

Sasa hebu tuongeze bumpmapping kwa hii:

Sehemu ya sare (iliyopo) ya taa ni makadirio, taa "ya awali" kwa kila hatua kwenye eneo, ambayo pointi zote zinaangazwa kwa usawa na mwanga hautegemei mambo mengine.
Sehemu ya kueneza ya kuangaza inategemea nafasi ya chanzo cha kuangaza na juu ya uso wa kawaida. Sehemu hii ya taa ni tofauti kwa kila vertex ya kitu, ambayo huwapa kiasi. Mwanga haujaza tena uso na kivuli sawa.
Sehemu maalum ya taa inajidhihirisha katika mng'ao wa kuakisi mionzi ya mwanga kutoka kwa uso. Ili kuhesabu, pamoja na vector ya nafasi ya chanzo cha mwanga na ya kawaida, vectors mbili zaidi hutumiwa: vector ya mwelekeo wa kutazama na vector ya kutafakari. Mfano wa taa maalum ulipendekezwa kwanza na Phong Bui-Tong. Mwangaza huu kwa kiasi kikubwa huongeza uhalisi wa picha, kwa sababu nyuso za nadra halisi hazionyeshi mwanga, kwa hivyo sehemu ya specular ni muhimu sana. Hasa katika mwendo, kwa sababu glare inaonyesha mara moja mabadiliko katika nafasi ya kamera au kitu yenyewe. Baadaye, watafiti walikuja na njia zingine za kuhesabu sehemu hii, ngumu zaidi (Blinn, Cook-Torrance, Ward), kwa kuzingatia usambazaji wa nishati nyepesi, kunyonya kwake na vifaa na kutawanyika kwa namna ya sehemu iliyoenea.

Kwa hivyo, Ramani ya Bump maalum hupatikana kwa njia hii:

Na wacha tuone jambo lile lile kwa kutumia mfano wa mchezo, Call of Duty 2:


Sehemu ya kwanza ya picha ni kutoa bila bumpmapping () hata kidogo, ya pili (juu kulia) ni bumpmapping bila sehemu maalum, ya tatu - na sehemu maalum ya thamani ya kawaida, ambayo hutumiwa katika mchezo, na ya mwisho. , upande wa kulia-chini - na thamani ya juu iwezekanavyo ya sehemu maalum.

Kuhusu utumizi wa kwanza wa maunzi, baadhi ya aina za uchoraji ramani (Emboss Bump Mapping) zilianza kutumika zamani za kadi za video kulingana na chipsi za NVIDIA Riva TNT, lakini mbinu za wakati huo zilikuwa za zamani sana na hazikutumika sana. Aina iliyofuata inayojulikana ilikuwa Mazingira Mapped Bump Mapping (EMBM), lakini wakati huo tu kadi za video za Matrox zilikuwa na usaidizi wa vifaa kwa ajili yake katika DirectX, na tena matumizi yake yalikuwa machache sana. Kisha Dot3 Bump Mapping ilionekana na chips za video za wakati huo (GeForce 256 na GeForce 2) zilihitaji pasi tatu ili kutekeleza kikamilifu algoriti kama hiyo ya hisabati, kwa kuwa ni mdogo kwa textures mbili kutumika kwa wakati mmoja. Kuanzia na NV20 (GeForce3), iliwezekana kufanya kitu kimoja kwa kupita moja kwa kutumia vivuli vya pixel. Zaidi zaidi. Mbinu za ufanisi zaidi zilianza kutumika, kama vile.

Mifano ya kutumia bumpmapping katika michezo:


Ramani ya Uhamishaji ni mbinu ya kuongeza maelezo kwa vitu vya 3D. Tofauti na uchoraji wa ramani na njia zingine za pixel-by-pixel, wakati ramani za urefu huonyesha kwa usahihi mwangaza wa nukta, lakini haibadilishi msimamo wake katika nafasi, ambayo inatoa tu udanganyifu wa kuongeza ugumu wa uso, ramani za uhamishaji hukuruhusu. kupata vitu vya 3D halisi kutoka kwa wima na poligoni, bila vikwazo, asili katika mbinu za pixel-by-pixel. Njia hii inabadilisha nafasi ya wima ya pembetatu, ikizibadilisha kwa kawaida kwa kiwango kulingana na maadili kwenye ramani za uhamishaji. Ramani ya uhamishaji kawaida ni muundo mweusi na nyeupe, na maadili yake hutumiwa kuamua urefu wa kila nukta kwenye uso wa kitu (thamani zinaweza kuhifadhiwa kama nambari 8-bit au 16-bit), sawa na bumpmap. Mara nyingi, ramani za uhamishaji hutumiwa (katika hali ambayo pia huitwa ramani za urefu) kuunda uso wa dunia na vilima na miteremko. Kwa kuwa ardhi inaelezewa na ramani ya 2D ya kuhamishwa, ni rahisi kuiharibu ikiwa ni lazima, kwani inahitaji tu kurekebisha ramani ya uhamishaji na kutoa uso kulingana nayo katika fremu inayofuata.

Uundaji wa mazingira kwa kutumia uwekaji wa ramani za uhamishaji unaonyeshwa wazi kwenye picha. Sehemu za kuanzia zilikuwa wima 4 na poligoni 2, na matokeo yalikuwa kipande kamili cha mandhari.

Faida kubwa ya kuweka ramani za uhamishaji si tu uwezo wa kuongeza maelezo kwenye uso, lakini uundaji karibu kamili wa kitu. Kitu chenye poligoni ya chini kinachukuliwa na kugawanywa (kilichonainishwa) katika idadi kubwa ya wima na poligoni. Vipeo vinavyotokana na uwekaji alama basi huhamishwa kwa kawaida kulingana na thamani iliyosomwa kwenye ramani ya kuhamishwa. Kama matokeo, tunapata kitu changamano cha 3D kutoka kwa rahisi, kwa kutumia ramani inayofaa ya uhamishaji:


Idadi ya pembetatu zilizoundwa kwa kuashiria lazima iwe kubwa ya kutosha ili kunasa maelezo yote yaliyobainishwa na ramani ya kuhama. Wakati mwingine pembetatu za ziada huundwa moja kwa moja kwa kutumia N-patches au njia nyingine. Ramani za kuhama hutumiwa vyema pamoja na ramani ya bump ili kuunda maelezo madogo ambapo mwanga sahihi wa pikseli-kwa-pixel unatosha.

Uwekeleaji wa ramani ya uhamishaji ulitumika kwanza katika DirectX 9.0. Hili lilikuwa toleo la kwanza la API hii kusaidia mbinu ya Kuweka Ramani ya Uhamishaji. DX9 inasaidia aina mbili za viwekeleo vya ramani vilivyohamishwa, vilivyochujwa na kufanyiwa sampuli mapema. Njia ya kwanza iliungwa mkono na chipu ya video ya MATROX Parhelia iliyosahaulika sasa, na ya pili - na ATI RADEON 9700. Njia ya Filtered inatofautiana kwa kuwa inakuwezesha kutumia viwango vya mip kwa ramani za uhamisho na kutumia uchujaji wa trilinear kwao. Kwa njia hii, kiwango cha mip ya ramani ya uhamishaji huchaguliwa kwa kila vertex kulingana na umbali kutoka kwa vertex hadi kamera, yaani, kiwango cha maelezo kinachaguliwa moja kwa moja. Kwa njia hii, mgawanyiko wa karibu sare wa eneo hupatikana, wakati pembetatu ni takriban saizi sawa.

Uwekeleaji wa ramani ya uhamishaji unaweza kuzingatiwa kimsingi kama mbinu ya ukandamizaji wa jiometri; utumiaji wa ramani za kuhamisha hupunguza kiwango cha kumbukumbu kinachohitajika kwa undani fulani wa muundo wa 3D. Data mbaya ya jiometri inabadilishwa na muundo rahisi wa 2D wa kuhamishwa, kwa kawaida 8-bit au 16-bit. Hii inapunguza mahitaji ya kumbukumbu na kipimo data kinachohitajika ili kuwasilisha data ya jiometri kwenye chipu ya video, ambayo ni baadhi ya vikwazo vikubwa kwenye mifumo ya leo. Au, kwa mahitaji sawa ya kipimo data na kumbukumbu, kuwekelea kwa ramani ya kuhamisha kunaruhusu matumizi ya miundo changamano zaidi ya kijiometri ya 3D. Matumizi ya mifano ya ugumu mdogo, wakati vitengo vya maelfu vinatumiwa badala ya makumi au mamia ya maelfu ya pembetatu, pia hufanya iwezekanavyo kuharakisha uhuishaji wao. Au uiboreshe kwa kutumia algoriti na mbinu changamano changamano, kama vile uigaji wa nguo.

Faida nyingine ni kwamba kutumia ramani za uhamishaji hubadilisha meshes changamano za poligonal za 3D kuwa maandishi mengi ya 2D ambayo ni rahisi kuchakata. Kwa mfano, kwa shirika, unaweza kutumia ramani ya kawaida ya mip kuweka juu ya ramani za uhamishaji. Pia, badala ya algorithms changamano ya ukandamizaji wa matundu ya 3D, unaweza kutumia mbinu za ukandamizaji wa muundo wa kawaida, hata zile zinazofanana na JPEG. Na ili kuunda vitu vya 3D kiutaratibu, unaweza kutumia algoriti za kawaida kwa maumbo ya 2D.

Lakini ramani za uhamishaji pia zina mapungufu; haziwezi kutumika katika hali zote. Kwa mfano, vitu laini ambavyo havina maelezo mengi mazuri vitawakilishwa vyema na meshes ya kawaida ya poligoni au nyuso zingine za kiwango cha juu kama vile curve za Bezier. Kwa upande mwingine, miundo changamano sana kama vile miti au mimea pia haiwakilishwi kwa urahisi na ramani za kuhama. Pia kuna shida na urahisi wa utumiaji; hii karibu kila wakati inahitaji huduma maalum, kwani ni ngumu sana kuunda ramani za uhamishaji moja kwa moja (isipokuwa tunazungumza juu ya vitu rahisi, kama mazingira). Shida nyingi na mapungufu ya ramani za uhamishaji ni sawa na zile za , kwani njia hizi mbili kimsingi ni uwakilishi mbili tofauti wa wazo sawa.

Kama mfano kutoka kwa michezo halisi, nitatoa mchezo unaotumia sampuli za maandishi kutoka kwa vertex shader, kipengele ambacho kilionekana katika chips za video za NVIDIA NV40 na shader model 3.0. Utumaji maandishi wa vertex unaweza kutumika kwa mbinu rahisi ya kufunika ramani za uhamishaji, inayotekelezwa kabisa na chipu ya video, bila kugawanyika (kugawanya katika idadi kubwa ya pembetatu). Utumiaji wa algoriti kama hiyo ni mdogo; hufanya akili ikiwa tu ramani ni zenye nguvu, ambayo ni, zinabadilika katika mchakato. Kwa mfano, hii ni uwasilishaji wa nyuso kubwa za maji, kama inavyofanywa katika mchezo wa Pacific Fighters:


Uchoraji ramani wa kawaida ni toleo lililoboreshwa la mbinu ya kutengeneza ramani ya matuta iliyoelezwa hapo awali, toleo lake lililopanuliwa. Ubunifu wa ramani ulibuniwa na Blinn mnamo 1978; kanuni za uso katika njia hii ya kufunika unafuu hubadilishwa kulingana na habari kutoka kwa ramani ya mapema. Wakati ramani bumpmapping inabadilisha tu kawaida iliyopo kwa sehemu za uso, uchoraji wa ramani wa kawaida kabisa huchukua nafasi ya kawaida kwa kuchukua sampuli za thamani zao kutoka kwa ramani ya kawaida iliyoandaliwa maalum. Ramani hizi kwa kawaida ni maumbo yaliyo na maadili ya kawaida yaliyohesabiwa awali yaliyohifadhiwa ndani yake, yaliyowasilishwa kama vipengele vya rangi ya RGB (hata hivyo, kuna miundo maalum ya ramani za kawaida, ikiwa ni pamoja na compression), tofauti na 8-bit urefu wa ramani nyeusi na nyeupe katika bumpmapping. .

Kwa ujumla, kama vile kupanga ramani, hii pia ni njia "ya bei nafuu" ya kuongeza maelezo kwa mifano ya uchangamano wa chini wa kijiometri, bila kutumia jiometri halisi, ya juu zaidi. Moja ya maombi ya kuvutia zaidi ya mbinu ni ongezeko kubwa la maelezo ya mifano ya chini ya poligoni kwa kutumia ramani za kawaida zilizopatikana kwa usindikaji mfano huo wa utata wa juu wa kijiometri. Ramani za kawaida zina maelezo ya kina zaidi ya uso ikilinganishwa na ramani ya matuta na hukuruhusu kuwakilisha maumbo changamano zaidi. Mawazo ya kupata habari kutoka kwa vitu vyenye maelezo mengi yalitolewa katikati ya miaka ya 90 ya karne iliyopita, lakini walikuwa wakizungumza juu ya kuitumia kwa . Baadaye, mwaka wa 1998, mawazo yaliwasilishwa kuhusu kuhamisha maelezo kwa namna ya ramani za kawaida kutoka kwa mifano ya juu ya poligoni hadi ya chini ya poligoni.

Ramani za kawaida hutoa njia bora zaidi ya kuhifadhi data ya kina ya uso kuliko kutumia tu idadi kubwa ya poligoni. Kizuizi chao kikubwa tu ni kwamba hazifai sana kwa maelezo makubwa, kwa sababu uchoraji wa ramani wa kawaida hauongezi polygons au kubadilisha sura ya kitu, huunda tu kuonekana kwa hii. Huu ni uigaji tu wa maelezo, kulingana na mahesabu ya mwanga katika kiwango cha pikseli. Hii inaonekana sana katika poligoni kali za kitu na katika pembe kubwa za mwelekeo wa uso. Kwa hivyo, njia ya busara zaidi ya kutumia ramani ya kawaida ni kufanya muundo wa hali ya chini kuwa na maelezo ya kutosha ili kudumisha umbo la msingi la kitu, na kutumia ramani za kawaida ili kuongeza maelezo bora zaidi.

Ramani za kawaida huundwa kutoka kwa matoleo mawili ya mfano, ya chini na ya juu. Mfano wa aina ya chini una kiwango cha chini cha jiometri, maumbo ya msingi ya kitu, wakati mfano wa juu una kila kitu muhimu kwa maelezo ya juu. Kisha, kwa kutumia huduma maalum, zinalinganishwa na kila mmoja, tofauti huhesabiwa na kuhifadhiwa katika texture inayoitwa ramani ya kawaida. Wakati wa kuunda, unaweza kuongeza kwa kuongeza ramani ya mapema kwa maelezo madogo sana ambayo hayawezi kuigwa hata kwa mfano wa hali ya juu (pores ya ngozi, unyogovu mwingine mdogo).

Ramani za kawaida awali ziliwakilishwa kama maumbo ya kawaida ya RGB, ambapo vipengele vya rangi ya R, G, na B (0 hadi 1) vinafasiriwa kama viwianishi vya X, Y, na Z. Kila tekseli kwenye ramani ya kawaida inawakilishwa kama kawaida ya nukta. juu ya uso. Ramani za kawaida zinaweza kuwa za aina mbili: na kuratibu katika nafasi ya mfano (mfumo wa kuratibu wa jumla) au nafasi ya tangent (neno kwa Kirusi ni "nafasi ya tangent", mfumo wa kuratibu wa ndani wa pembetatu). Chaguo la pili hutumiwa mara nyingi zaidi. Wakati ramani za kawaida zinawasilishwa katika nafasi ya mfano, lazima ziwe na vipengele vitatu, kwa kuwa maelekezo yote yanaweza kuwakilishwa, na wakati katika mfumo wa kuratibu nafasi ya tangent, basi unaweza kupata na vipengele viwili, na ya tatu inaweza kupatikana katika pixel. kivuli.

Programu za kisasa za wakati halisi bado ni duni kwa uhuishaji uliotolewa mapema kulingana na ubora wa picha, hii inahusu, kwanza kabisa, ubora wa taa na utata wa kijiometri wa matukio. Idadi ya vipeo na pembetatu zilizohesabiwa kwa wakati halisi ni chache. Kwa hiyo, njia zinazopunguza kiasi cha jiometri ni muhimu sana. Mbinu kadhaa kama hizo zilitengenezwa kabla ya uchoraji wa ramani wa kawaida, lakini miundo ya hali ya chini, hata ikiwa na ramani ya mapema, iligeuka kuwa mbaya zaidi kuliko miundo ngumu zaidi. Uchoraji wa ramani ya kawaida, ingawa ina shida kadhaa (ya wazi zaidi ni kwamba kwa kuwa mfano unabaki wa hali ya chini, hii inaonekana kwa urahisi na mipaka yake ya angular), lakini ubora wa mwisho wa utoaji umeboreshwa dhahiri, na kuacha utata wa kijiometri wa mifano ya chini. . Hivi karibuni, ongezeko la umaarufu wa mbinu hii na matumizi yake katika injini zote za mchezo maarufu inaonekana wazi. "Lawama" kwa hili ni mchanganyiko wa ubora bora unaosababisha na kupunguzwa kwa wakati mmoja kwa mahitaji ya utata wa kijiometri wa mifano. Mbinu ya kawaida ya kuchora ramani sasa inatumika karibu kila mahali, michezo yote mipya inaitumia kwa upana iwezekanavyo. Hapa kuna orodha fupi tu ya michezo ya Kompyuta inayojulikana kwa kutumia ramani ya kawaida: Far Cry, Doom 3, Half-Life 2, Call of Duty 2, F.E.A.R., Quake 4. Zote zinaonekana bora zaidi kuliko michezo ya zamani, pia kutokana na matumizi ya kanuni za ramani.

Kuna matokeo moja tu mabaya ya kutumia mbinu hii - ongezeko la kiasi cha textures. Baada ya yote, ramani ya kawaida huathiri sana jinsi kitu kitaonekana, na lazima iwe na azimio kubwa, hivyo mahitaji ya kumbukumbu ya video na bandwidth yake mara mbili (katika kesi ya ramani za kawaida zisizo na shinikizo). Lakini sasa kadi za video zilizo na megabytes 512 za kumbukumbu za ndani tayari zinazalishwa, bandwidth yake inakua mara kwa mara, mbinu za ukandamizaji zimetengenezwa mahsusi kwa ramani za kawaida, hivyo vikwazo hivi vidogo sio muhimu sana, kwa kweli. Athari ambayo uchoraji wa ramani ya kawaida hutoa ni kubwa zaidi, ikiruhusu utumiaji wa miundo ya hali ya chini kiasi, kupunguza mahitaji ya kumbukumbu ya kuhifadhi data ya kijiometri, kuboresha utendakazi na kutoa matokeo mazuri ya kuona.

Ramani ya Parallax/Kuweka Ramani

Uchoraji ramani wa kawaida, ulioendelezwa mwaka wa 1984, ulifuatiwa na Ramani ya Usanifu wa Usaidizi, iliyoanzishwa na Olivera na Bishop mnamo 1999. Hii ni njia ya uchoraji ramani kulingana na maelezo ya kina. Njia hiyo haikutumiwa katika michezo, lakini wazo lake lilichangia kuendelea kwa kazi kwenye ramani ya parallax na uboreshaji wake. Kaneko alianzisha ramani ya parallax mwaka wa 2001, ambayo ilikuwa njia ya kwanza ya ufanisi ya kuonyesha athari ya parallax kwa misingi ya pixel-by-pixel. Mnamo 2004, Welsh ilionyesha matumizi ya ramani ya parallax kwenye chips za video zinazoweza kupangwa.

Njia hii labda ina majina tofauti zaidi. Nitaorodhesha zile ambazo nimekutana nazo: Ramani ya Parallax, Ramani ya Offset, Ramani ya Uhamisho ya Mtandaoni, Ramani ya Uhamishaji kwa Pixel. Kwa ufupi, makala hutumia kichwa cha kwanza.
Parallaxmapping ni mbadala nyingine ya mbinu bumpmapping na normalmapping, ambayo inatoa maarifa hata zaidi katika maelezo ya uso, zaidi ya asili ya utoaji wa 3D, pia bila hasara nyingi sana katika utendaji. Mbinu hii ni sawa na upangaji ramani ya uhamishaji na uchoraji ramani wa kawaida kwa wakati mmoja, ni kitu kati. Njia hiyo pia imeundwa ili kuonyesha maelezo zaidi ya uso kuliko ilivyo katika modeli ya asili ya kijiometri. Ni sawa na uchoraji wa ramani wa kawaida, lakini tofauti ni kwamba njia hiyo inapotosha muundo wa ramani kwa kubadilisha kuratibu za muundo ili unapoangalia uso kutoka pembe tofauti, inaonekana kuwa laini, ingawa kwa kweli uso ni gorofa na haubadiliki. . Kwa maneno mengine, Ramani ya Parallax ni mbinu ya kukadiria athari za uhamishaji wa sehemu za uso kulingana na mabadiliko katika mtazamo.

Mbinu hubadilisha viwianishi vya unamu (ndiyo maana mbinu hiyo wakati mwingine huitwa ramani ya kukabiliana) ili uso uonekane kuwa mnene zaidi. Wazo la njia ni kurudisha viwianishi vya muundo wa mahali ambapo vekta ya kutazama inaingiliana na uso. Hii inahitaji ufuatiliaji wa mionzi (kufuatilia mionzi) kwa ramani ya urefu, lakini ikiwa haina thamani nyingi za kubadilisha ("laini" au "laini"), basi ukadiriaji unaweza kufanywa. Njia hii ni nzuri kwa nyuso zilizo na urefu unaobadilika vizuri, bila kuhesabu makutano na maadili makubwa ya uhamishaji. Algorithm hii rahisi inatofautiana na upangaji ramani wa kawaida katika maagizo matatu ya shader ya pikseli: maagizo mawili ya hisabati na mchoro mmoja wa ziada wa muundo. Baada ya uratibu mpya wa maandishi kuhesabiwa, kisha hutumiwa kusoma safu zingine za maandishi: muundo wa msingi, ramani ya kawaida, n.k. Mbinu hii ya uchoraji ramani ya parallax kwenye chip za kisasa za video inakaribia ufanisi sawa na upangaji wa muundo wa kawaida, na matokeo yake ni onyesho la kweli zaidi la uso ikilinganishwa na uchoraji wa ramani rahisi wa kawaida.

Lakini matumizi ya ramani ya kawaida ya parallax ni mdogo kwa ramani za urefu na tofauti ndogo ya maadili. Ukiukwaji wa "mwinuko" huchakatwa kimakosa na algoriti, vizalia mbalimbali vinaonekana, maumbo "kuelea," n.k. Mbinu kadhaa zilizorekebishwa zimetengenezwa ili kuboresha mbinu ya ramani ya parallax. Watafiti kadhaa (Yerex, Donnelly, Tatarchuk, Policarpo) wameelezea mbinu mpya zinazoboresha algorithm ya awali. Takriban mawazo yote yanategemea ufuatiliaji wa miale katika pikseli shader ili kubaini jinsi vipengele vya uso vinavyopishana. Mbinu zilizorekebishwa zilipokea majina kadhaa tofauti: Ramani ya Parallax na Uzuiaji, Ramani ya Parallax yenye Umbali wa Functio ns, Ramani ya Parallax Occlusion. Kwa ufupi, tutaziita zote Parallax Occlusion Mapping.

Mbinu za Ramani ya Parallax Occlusion pia hujumuisha ufuatiliaji wa miale ili kubaini urefu na kuzingatia mwonekano wa tekseli. Baada ya yote, unapotazamwa kwa pembe kwa uso, texels huficha kila mmoja, na kwa kuzingatia hili, unaweza kuongeza kina zaidi kwa athari ya parallax. Picha inayotokana inakuwa ya kweli zaidi na mbinu hizo zilizoboreshwa zinaweza kutumika kwa usaidizi wa kina; ni bora kwa kuonyesha kuta za matofali na mawe, lami, n.k. Ikumbukwe hasa kwamba tofauti kuu kati ya Ramani ya Parallax na Ramani ya Uhamishaji ni kwamba mahesabu. zote ni per-pixel, na hazijakamilika. Ndio maana mbinu hii ina majina kama vile Uwekaji Ramani ya Uhamishaji wa Mtandao na Ramani ya Uhamishaji kwa Pixel. Angalia picha, ni vigumu kuamini, lakini mawe ya lami hapa ni athari ya pikseli kwa pikseli:

Njia hiyo hukuruhusu kuonyesha vyema nyuso za kina bila mamilioni ya wima na pembetatu ambazo zingehitajika ikiwa jiometri ingeitekeleza. Wakati huo huo, maelezo ya juu yanadumishwa (isipokuwa silhouettes / kingo) na hesabu za uhuishaji hurahisishwa kwa kiasi kikubwa. Mbinu hii ni ya bei nafuu kuliko kutumia jiometri halisi na hutumia poligoni chache sana, haswa katika kesi zilizo na maelezo madogo sana. Kuna maombi mengi ya algorithm, lakini inafaa zaidi kwa mawe, matofali na kadhalika.

Pia, faida ya ziada ni kwamba ramani za urefu zinaweza kubadilika kwa nguvu (uso wa maji na mawimbi, mashimo ya risasi kwenye kuta na mengi zaidi). Hasara za mbinu ni ukosefu wa silhouettes sahihi za kijiometri (kingo za kitu), kwa sababu algorithm ni ya pixel-by-pixel na sio ramani ya kweli ya uhamisho. Lakini inaokoa utendaji kwa namna ya mzigo uliopunguzwa kwenye mabadiliko, taa na uhuishaji wa jiometri. Huhifadhi kumbukumbu ya video inayohitajika ili kuhifadhi idadi kubwa ya data ya jiometri. Teknolojia ina faida ya kuunganishwa kwa urahisi katika programu zilizopo na matumizi ya huduma zinazojulikana zinazotumiwa kwa ramani ya kawaida wakati wa operesheni.

Mbinu hiyo tayari imetumika katika michezo halisi hivi karibuni. Kufikia sasa, wanaendelea na ramani rahisi ya paralaksi kulingana na ramani za urefu tuli, bila ufuatiliaji wa miale au hesabu za makutano. Hapa kuna mifano ya matumizi ya ramani ya parallax katika michezo:

Baada ya usindikaji

Kwa maana pana, baada ya usindikaji ni kila kitu kinachotokea baada ya hatua kuu za kujenga picha. Kwa maneno mengine, usindikaji baada ya usindikaji ni mabadiliko yoyote kwa picha baada ya kutolewa. Usindikaji wa posta ni seti ya zana za kuunda athari maalum za kuona, na zinaundwa baada ya kazi kuu ya kuibua eneo kukamilika, ambayo ni, picha ya raster iliyotengenezwa tayari hutumiwa kuunda athari za usindikaji.

Mfano rahisi kutoka kwa upigaji picha: ulipiga picha ziwa nzuri na kijani katika hali ya hewa ya wazi. Anga inageuka kuwa mkali sana, na miti ni giza sana. Unapakia picha kwenye kihariri cha picha na uanze kubadilisha mwangaza, utofautishaji na vigezo vingine vya sehemu za picha au picha nzima. Lakini huna tena nafasi ya kubadilisha mipangilio ya kamera; unachakata picha iliyokamilishwa. Hii ni baada ya usindikaji. Au mfano mwingine: kuangazia usuli katika picha ya wima na kutumia kichujio cha ukungu kwenye eneo hili kwa kina cha athari ya uga yenye kina zaidi. Hiyo ni, unapobadilisha au kusahihisha sura katika kihariri cha picha, unafanya usindikaji wa baada. Kitu kimoja kinaweza kufanywa katika mchezo, kwa wakati halisi.

Kuna chaguo nyingi tofauti za kuchakata picha baada ya kutolewa. Kila mtu pengine ameona mengi ya kinachojulikana filters graphic katika wahariri graphic. Hiki ndicho hasa kinachoitwa vichujio vya baada: ukungu, utambuzi wa makali, kunoa, kelele, laini, msisitizo, n.k. Inapotumika kwa uonyeshaji wa 3D katika wakati halisi, hii hufanywa hivi - onyesho zima linaonyeshwa katika eneo maalum. toa lengo, na baada ya utoaji kuu picha hii inachakatwa zaidi kwa kutumia vivuli vya pixel na kisha kuonyeshwa kwenye skrini. Athari zinazotumika sana baada ya usindikaji katika michezo ni , , . Kuna athari zingine nyingi za baada ya: kelele, kuwaka, kupotosha, sepia, nk.

Hapa kuna mifano michache ya kushangaza ya usindikaji wa baada ya uchakataji katika programu za michezo ya kubahatisha:

Masafa ya Juu ya Nguvu (HDR)

Safu ya Nguvu ya Juu (HDR), inapotumika kwa michoro ya 3D, inatoa katika masafa mapana. Kiini cha HDR ni kuelezea ukubwa na rangi kwa kutumia kiasi halisi cha kimwili. Mfano wa kawaida wa kuelezea picha ni RGB, ambapo rangi zote zinawakilishwa kama jumla ya rangi za msingi nyekundu, kijani kibichi na samawati, zenye nguvu tofauti kadiri iwezekanavyo nambari kamili kutoka 0 hadi 255 kwa kila moja, iliyosimbwa kwa biti nane kwa kila rangi. . Uwiano wa kiwango cha juu hadi cha chini zaidi kinachopatikana kwa kuonyeshwa na muundo au kifaa fulani huitwa masafa yanayobadilika. Kwa hivyo, safu ya nguvu ya mfano wa RGB ni 256:1 au 100:1 cd/m 2 (maagizo mawili ya ukubwa). Muundo huu wa kuelezea rangi na ukubwa kwa kawaida huitwa Kiwango cha Chini cha Nguvu (LDR).

Thamani zinazowezekana za LDR kwa visa vyote haitoshi, mtu anaweza kuona safu kubwa zaidi, haswa kwa mwanga mdogo, na mfano wa RGB ni mdogo sana katika hali kama hizi (na kwa nguvu ya juu pia). Upeo wa nguvu wa maono ya mwanadamu ni kutoka 10 -6 hadi 10 8 cd/m 2, yaani, 100000000000000: 1 (maagizo 14 ya ukubwa). Hatuwezi kuona masafa yote kwa wakati mmoja, lakini masafa yanayoonekana kwa jicho wakati wowote ni takriban sawa na 10,000:1 (maagizo manne ya ukubwa). Maono hubadilika kulingana na maadili kutoka kwa sehemu nyingine ya safu ya kuangaza polepole, kwa kutumia kinachojulikana kama urekebishaji, ambayo inaweza kuelezewa kwa urahisi na hali ya kuzima taa kwenye chumba usiku - mwanzoni macho huona kidogo, lakini. baada ya muda wao kukabiliana na mabadiliko ya hali ya taa na kuona mengi zaidi. Kitu kimoja kinatokea unapobadilika kutoka kwenye mazingira ya giza hadi kwenye mwanga.

Kwa hivyo, safu ya nguvu ya mfano wa maelezo ya RGB haitoshi kuwakilisha picha ambazo mtu anaweza kuona katika hali halisi, mfano huu unapunguza kwa kiasi kikubwa maadili yanayowezekana ya ukubwa wa mwanga katika sehemu za juu na za chini za safu. Mfano wa kawaida uliotajwa katika nyenzo za HDR ni picha ya chumba chenye giza na dirisha kwenye barabara angavu siku ya jua. Kwa mfano wa RGB, unaweza kupata maonyesho ya kawaida ya kile kilicho nje ya dirisha, au tu kile kilicho ndani ya chumba. Thamani zinazozidi 100 cd/m2 kwa ujumla hukatwa katika LDR, ndiyo sababu uonyeshaji wa 3D huwa na wakati mgumu katika kutoa vyanzo vya mwanga angavu vinavyoelekeza moja kwa moja kwenye kamera.

Vifaa vya kuonyesha data vyenyewe bado haviwezi kuboreshwa kwa umakini, lakini inaleta maana kuachana na LDR katika hesabu; unaweza kutumia kiasi halisi cha ukubwa na rangi (au zile za sawia), na kuonyesha kiwango cha juu kinachoweza kwenye kifuatiliaji. Kiini cha uwakilishi wa HDR ni kutumia nguvu na thamani za rangi katika idadi halisi ya kimwili au uwiano wa mstari na kutumia nambari za pointi zinazoelea kwa usahihi wa juu (kwa mfano, biti 16 au 32) badala ya nambari kamili. Hii itaondoa vikwazo vya mfano wa RGB, na upeo wa nguvu wa picha utaongezeka kwa kiasi kikubwa. Lakini basi picha yoyote ya HDR inaweza kuonyeshwa kwenye njia yoyote ya kuonyesha (kichunguzi sawa cha RGB), ikiwa na ubora wa juu zaidi kwa kutumia algoriti maalum.

Utoaji wa HDR huturuhusu kubadilisha kufichua baada ya kutoa picha. Inafanya uwezekano wa kuiga athari ya urekebishaji ya maono ya mwanadamu (kusonga kutoka kwa nafasi wazi hadi vyumba vya giza na kinyume chake), inaruhusu taa sahihi ya mwili, na pia ni suluhisho la umoja la kutumia athari za baada ya usindikaji (glare, flares, bloom). , ukungu wa mwendo). Kanuni za uchakataji wa picha, urekebishaji wa rangi, urekebishaji wa gamma, ukungu wa mwendo, maua na mbinu zingine za baada ya kuchakata hutekelezwa vyema katika uwakilishi wa HDR.

Katika programu za uwasilishaji za 3D za wakati halisi (michezo, haswa), utoaji wa HDR ulianza kutumika si muda mrefu uliopita, kwa sababu inahitaji mahesabu na kutoa usaidizi wa lengo katika fomati za sehemu zinazoelea, ambazo kwa mara ya kwanza zilipatikana tu kwenye chips za video zinazounga mkono. DirectX 9. Njia ya kawaida ya uonyeshaji wa HDR katika michezo ni kama ifuatavyo: kufanya tukio katika bafa ya umbizo la sehemu inayoelea, kuchakata picha baada ya masafa ya rangi iliyopanuliwa (kubadilisha utofautishaji na mwangaza, mizani ya rangi, mwako na athari za ukungu wa mwendo. , mwanga wa lenzi na kadhalika), kwa kutumia ramani ya toni kutoa picha ya mwisho ya HDR kwenye kifaa cha kuonyesha cha LDR. Wakati mwingine ramani za mazingira hutumika katika umbizo la HDR kwa uakisi tuli wa vitu; matumizi ya HDR katika kuiga vinyumeji vinavyobadilika na uakisi inavutia sana; ramani zinazobadilika katika miundo ya sehemu zinazoelea pia zinaweza kutumika kwa hili. Kwa hili unaweza kuongeza ramani nyepesi, zilizohesabiwa awali na kuhifadhiwa katika umbizo la HDR. Mengi ya hapo juu yalifanyika, kwa mfano, katika Half-Life 2: Lost Coast.

Utoaji wa HDR ni muhimu sana kwa uchakataji changamano wa baada ya usindikaji wa ubora wa juu ikilinganishwa na mbinu za kawaida. Maua sawa yataonekana kuwa ya kweli zaidi yakikokotolewa katika muundo wa mwonekano wa HDR. Kwa mfano, kama inavyofanywa katika mchezo wa Far Cry kutoka Crytek, hutumia mbinu za kawaida za uonyeshaji za HDR: matumizi ya vichujio vya maua vilivyoletwa na Kawase na opereta wa ramani ya toni Reinhard.

Kwa bahati mbaya, katika hali nyingine, watengenezaji wa mchezo wanaweza kujificha chini ya jina HDR kichujio cha maua kilichokokotolewa katika safu ya kawaida ya LDR. Na ingawa mengi ya michezo inayofanya na uonyeshaji wa HDR siku hizi ni kuchanua kwa ubora zaidi, manufaa ya uwasilishaji wa HDR hayaishii kwenye madoido haya ya baada, ni rahisi zaidi kutengeneza.

Mifano mingine ya kutumia utoaji wa HDR katika programu za wakati halisi:


Uchoraji ramani ya toni ni mchakato wa kubadilisha safu ya mwangaza ya HDR hadi safu ya LDR inayoonyeshwa na kifaa cha kutoa, kama vile kichungi au kichapishi, kwa kuwa kutoa picha za HDR kwao kutahitaji kubadilisha masafa inayobadilika na rangi ya muundo wa HDR kuwa inayolingana. anuwai ya nguvu ya LDR, mara nyingi mfano wa RGB. Baada ya yote, aina mbalimbali za mwangaza zinazowasilishwa katika HDR ni pana sana; ni maagizo kadhaa ya masafa kamili kwa wakati mmoja, katika tukio moja. Na safu ambayo inaweza kutolewa tena kwenye vifaa vya kawaida vya kutoa (vichunguzi, TV) ni takriban maagizo mawili ya ukubwa wa safu inayobadilika.

Ugeuzaji kutoka HDR hadi LDR unaitwa ramani ya toni; ni hasara na inaiga sifa za maono ya binadamu. Algorithms kama hizo kawaida huitwa waendeshaji wa ramani ya toni. Waendeshaji hugawanya thamani zote za mwangaza wa picha katika aina tatu tofauti: giza, kati na mkali. Kulingana na makadirio ya mwangaza wa toni ya kati, mwangaza wa jumla hurekebishwa, thamani za mwangaza wa pikseli za tukio husambazwa upya ili kuingia katika anuwai ya matokeo, saizi za giza hung'aa, na saizi nyepesi hutiwa giza. Kisha, saizi zinazong'aa zaidi kwenye picha hupunguzwa hadi masafa ya kifaa cha kutoa au modeli ya mwonekano wa towe. Picha ifuatayo inaonyesha ubadilishaji rahisi zaidi wa picha ya HDR hadi safu ya LDR, badiliko la mstari, na opereta changamano zaidi ya kuchora ramani inatumika kwenye kipande kilicho katikati, kinachofanya kazi kama ilivyoelezwa hapo juu:

Inaweza kuonekana kuwa tu kwa matumizi ya ramani ya sauti isiyo ya mstari unaweza kupata maelezo ya juu kwenye picha, na ikiwa unabadilisha HDR hadi LDR kwa mstari, basi maelezo mengi madogo yanapotea tu. Hakuna algorithm moja sahihi ya ramani ya toni; kuna waendeshaji kadhaa ambao hutoa matokeo mazuri katika hali tofauti. Hapa kuna mfano wazi wa waendeshaji wawili tofauti wa kuchora ramani:

Pamoja na uonyeshaji wa HDR, uchoraji ramani wa sauti hivi majuzi umeanza kutumika katika michezo. Imewezekana kwa hiari kuiga mali ya maono ya mwanadamu: kupoteza acuity katika matukio ya giza, kukabiliana na hali mpya ya taa wakati wa mpito kutoka maeneo mkali sana hadi giza na kinyume chake, unyeti wa mabadiliko tofauti, rangi ... jinsi kuiga uwezo wa maono kuzoea katika mchezo Far Cry inaonekana kama. Picha ya skrini ya kwanza inaonyesha picha ambayo mchezaji huona baada ya kugeuka tu kutoka kwenye chumba chenye giza hadi kwenye nafasi iliyo wazi yenye mwanga mkali, na ya pili inaonyesha picha hiyo hiyo sekunde chache baadaye, baada ya kuzoea.

Bloom

Bloom ni mojawapo ya athari za baada ya usindikaji wa sinema ambayo hufanya maeneo angavu zaidi ya picha kuwa angavu zaidi. Hii ni athari ya mwanga mkali sana, unaojitokeza kwa namna ya mwanga unaozunguka nyuso zenye mkali Baada ya kutumia chujio cha maua, nyuso hizo sio tu kupokea mwangaza wa ziada, mwanga kutoka kwao (halo) huathiri kwa sehemu maeneo ya giza karibu na nyuso zenye mkali kwenye sura. Njia rahisi zaidi ya kuonyesha hii ni kwa mfano:

Katika picha za Bloom 3D, kichujio kinafanywa kwa kutumia usindikaji wa ziada wa baada ya usindikaji - kuchanganya fremu iliyotiwa ukungu na kichungi cha blur (fremu nzima au maeneo yake mkali, kichungi kawaida hutumiwa mara kadhaa) na sura ya asili. Mojawapo ya algoriti za kichujio cha Bloom katika michezo na programu zingine za wakati halisi hutumika sana ni:

  • Tukio linatolewa kwa fremu, mwangaza wa vitu hurekodiwa katika kituo cha alfa cha bafa.
  • Framebuffer inakiliwa katika muundo maalum kwa ajili ya usindikaji.
  • Azimio la texture limepunguzwa, kwa mfano, kwa mara 4.
  • Vichujio vya ukungu hutumika kwa picha mara kadhaa kulingana na data ya ukubwa iliyorekodiwa katika kituo cha alpha.
  • Picha inayotokana imechanganywa na fremu asilia kwenye kibufa, na matokeo yanaonyeshwa kwenye skrini.

Kama aina nyingine za uchakataji baada ya kuchakata, maua hutumika vyema zaidi kwa uwasilishaji wa masafa ya juu (HDR). Mifano ya ziada ya kuchakata picha ya maua ya mwisho kwa kichujio kutoka kwa programu za 3D za wakati halisi:

Ukungu wa Mwendo

Ukungu wa mwendo hutokea katika upigaji picha na filamu kutokana na kusogezwa kwa vitu kwenye fremu wakati wa kufichua kwa fremu huku shutter ya lenzi ikiwa wazi. Sura iliyochukuliwa na kamera (picha, filamu) haionyeshi picha iliyochukuliwa mara moja, na muda wa sifuri. Kwa sababu ya mapungufu ya kiteknolojia, sura inaonyesha kipindi fulani cha wakati, wakati vitu vilivyo kwenye sura vinaweza kusonga umbali fulani, na ikiwa hii itatokea, basi nafasi zote za kitu kinachosonga wakati wa shutter wazi ya lens itawasilishwa. fremu kama picha yenye ukungu kando ya vekta ya mwendo. Hii hutokea ikiwa kitu kinasogea kulingana na kamera au kamera inayohusiana na kitu, na kiasi cha ukungu hutupatia wazo la kiasi cha kasi ambacho kitu kinasonga.

Katika uhuishaji wa pande tatu, kwa kila wakati maalum kwa wakati (sura), vitu viko kwenye kuratibu fulani katika nafasi ya tatu-dimensional, sawa na kamera ya kawaida yenye kasi ya kufunga ya haraka sana. Kwa sababu hiyo, ukungu, sawa na ule unaopatikana kwa kamera na jicho la mwanadamu wakati wa kuangalia vitu vinavyoenda kwa kasi, haupo. Inaonekana isiyo ya kawaida na isiyo ya kweli. Hebu fikiria mfano rahisi: nyanja kadhaa huzunguka karibu na mhimili fulani. Hapa kuna taswira ya jinsi harakati hii ingeonekana na bila ukungu:

Kutoka kwa picha bila ukungu, huwezi hata kujua ikiwa nyanja zinasonga au la, wakati ukungu wa mwendo unatoa wazo wazi la kasi na mwelekeo wa harakati za vitu. Kwa njia, ukosefu wa blur ya mwendo pia ni sababu kwa nini harakati katika michezo kwa fremu 25-30 kwa sekunde inaonekana kuwa mbaya, ingawa sinema na video zinaonekana nzuri kwa vigezo sawa vya kiwango cha fremu. Ili kufidia ukosefu wa ukungu wa mwendo, kasi ya juu ya fremu (fremu 60 kwa sekunde au zaidi) au matumizi ya mbinu za ziada za uchakataji wa picha ili kuiga athari ya ukungu wa mwendo inafaa. Hii inatumika kuboresha ulaini wa uhuishaji na kwa athari ya uhalisia wa picha na filamu kwa wakati mmoja.

Algorithm rahisi zaidi ya ukungu wa mwendo kwa programu za wakati halisi ni kutumia data kutoka kwa fremu za awali za uhuishaji ili kutoa fremu ya sasa. Lakini pia kuna mbinu bora zaidi na za kisasa za ukungu wa mwendo ambazo hazitumii viunzi vilivyotangulia, lakini zinatokana na vekta za mwendo wa vitu kwenye fremu, pia kuongeza hatua nyingine ya baada ya kuchakata kwenye mchakato wa utoaji. Athari ya ukungu inaweza kuwa skrini nzima (kawaida hufanywa baada ya kuchakata) au kwa vitu binafsi vinavyosonga kwa kasi zaidi.

Utumizi unaowezekana wa athari ya ukungu wa mwendo katika michezo: michezo yote ya mbio (kuunda athari ya mwendo wa kasi ya juu sana na kwa matumizi wakati wa kutazama marudio ya Runinga), michezo ya michezo (michezo sawa, na katika mchezo wenyewe ukungu unaweza kutumika sana. vitu vinavyosonga kwa kasi, kama vile mpira au mpira), michezo ya mapigano (mwendo wa haraka wa silaha zenye ncha, mikono na miguu), michezo mingine mingi (wakati wa picha za 3D za ndani ya mchezo kwenye injini). Hapa kuna mifano ya kutumia athari ya ukungu ya mwendo kutoka kwa michezo:

Kina cha Shamba (DOF)

Kina cha uga, kwa ufupi, ni kutia ukungu kwa vitu kulingana na nafasi yao kuhusiana na umakini wa kamera. Katika maisha halisi, kwenye picha na sinema, hatuoni vitu vyote kwa usawa; hii ni kwa sababu ya muundo wa jicho na muundo wa macho ya kamera za picha na sinema. Picha na optics za filamu zina umbali fulani, vitu vilivyo kwenye umbali huu kutoka kwa kamera vinazingatiwa na vinaonekana vikali kwenye picha, na vitu vilivyo mbali zaidi na kamera au karibu nayo hutazama, kinyume chake, blurry, ukali hupungua hatua kwa hatua. umbali unaongezeka au unapungua.

Kama unavyoweza kukisia, hii ni picha, sio utoaji. Katika graphics za kompyuta, kila kitu katika picha iliyotolewa ni wazi kabisa, kwani lenses na optics hazifananishwa wakati wa mahesabu. Kwa hivyo, ili kufikia ukweli wa picha na filamu, lazima utumie algorithms maalum kufanya kitu sawa kwa picha za kompyuta. Mbinu hizi huiga athari za umakini tofauti kwa vitu vilivyo umbali tofauti.

Mbinu moja ya kawaida ya uwasilishaji wa wakati halisi ni kuchanganya fremu asili na toleo lake lenye ukungu (njia nyingi za kichujio cha ukungu) kulingana na data ya kina ya pikseli za picha. Katika michezo, athari ya DOF ina matumizi kadhaa, kwa mfano, mandhari ya ndani ya mchezo katika injini ya mchezo, marudio katika michezo na michezo ya mbio. Mifano ya kina cha uwanja katika muda halisi:

Kiwango cha Maelezo (LOD)

Kiwango cha maelezo katika utumizi wa 3D ni mbinu ya kupunguza utata wa kutoa fremu, kupunguza jumla ya idadi ya poligoni, maumbo na rasilimali nyingine katika tukio, na kwa ujumla kupunguza uchangamano wake. Mfano rahisi: kielelezo cha mhusika mkuu kina poligoni 10,000. Katika hali ambapo iko karibu na kamera kwenye eneo lililochakatwa, ni muhimu kwamba poligoni zote zitumike, lakini kwa umbali mkubwa sana kutoka kwa kamera kwenye picha ya mwisho itachukua saizi chache tu, na hakuna uhakika. katika kuchakata poligoni zote 10,000. Pengine katika kesi hii, polygons mia, au hata vipande kadhaa, na texture maalum iliyoandaliwa itakuwa ya kutosha kuonyesha mfano kwa takriban njia sawa. Ipasavyo, kwa umbali wa kati inafanya akili kutumia mfano unaojumuisha idadi kubwa ya pembetatu kuliko mfano rahisi na mdogo kuliko ile ngumu zaidi.

Mbinu ya LOD hutumiwa kwa kawaida wakati wa kuunda na kutoa matukio ya 3D, kwa kutumia viwango vingi vya utata (jiometri au vinginevyo) kwa vitu, sawia na umbali wao kutoka kwa kamera. Njia mara nyingi hutumiwa na wasanidi wa mchezo kupunguza idadi ya poligoni kwenye tukio na kuboresha utendakazi. Inapopatikana karibu na kamera, modeli zilizo na maelezo ya juu zaidi hutumiwa (idadi ya pembetatu, saizi ya maandishi, ugumu wa maandishi), kwa ubora wa juu zaidi wa picha, na kinyume chake, mifano inapoondolewa kwenye kamera, mifano iliyo na pembetatu chache. hutumika kuongeza kasi ya uwasilishaji. Kubadilisha utata, hasa, idadi ya pembetatu katika mfano, inaweza kutokea moja kwa moja kulingana na mfano mmoja wa 3D wa utata wa juu, au labda kulingana na mifano kadhaa iliyopangwa tayari na viwango tofauti vya maelezo. Kwa kutumia miundo yenye maelezo bora zaidi katika umbali tofauti, ukadiriaji wa utata wa uwasilishaji hupunguzwa bila kudhalilisha maelezo ya jumla ya picha.

Njia hiyo ni nzuri sana ikiwa idadi ya vitu kwenye eneo la tukio ni kubwa na iko katika umbali tofauti kutoka kwa kamera. Kwa mfano, hebu tuchukue mchezo wa michezo, kama vile hoki au simulator ya soka. Mifano ya tabia ya chini ya aina nyingi hutumiwa wakati wao ni mbali na kamera, na wanapokaribia, mifano hubadilishwa na wengine na idadi kubwa ya polygons. Mfano huu ni rahisi sana na unaonyesha kiini cha njia kulingana na viwango viwili vya maelezo ya mfano, lakini hakuna mtu anayejisumbua kuunda viwango kadhaa vya maelezo ili athari ya kubadilisha kiwango cha LOD isionekane sana, ili maelezo hatua kwa hatua "hukua ndani" kitu kinapokaribia.

Mbali na umbali kutoka kwa kamera, mambo mengine yanaweza pia kuwa muhimu kwa LOD - jumla ya idadi ya vitu kwenye skrini (wakati kuna herufi moja au mbili kwenye sura, mifano tata hutumiwa, na wakati kuna 10-20. , hubadilika kuwa rahisi) au idadi ya fremu kwa sekunde (vikomo vya maadili ya FPS vimewekwa ambayo kiwango cha maelezo kinabadilika, kwa mfano, na FPS chini ya 30 tunapunguza ugumu wa mifano kwenye skrini, na kwa 60, kinyume chake, tunaiongeza). Sababu zingine zinazoweza kuathiri kiwango cha undani ni kasi ya harakati ya kitu (huna uwezekano wa kuwa na wakati wa kuona roketi ikitembea, lakini unaweza kuona konokono kwa urahisi), umuhimu wa mhusika kutoka kwa mtazamo wa michezo ya kubahatisha. (chukua mpira wa miguu sawa - kwa mfano wa mchezaji unayemdhibiti, unaweza kutumia jiometri ngumu zaidi na textures, unaona karibu na mara nyingi zaidi). Yote inategemea tamaa na uwezo wa msanidi fulani. Jambo kuu sio kuipindua; mabadiliko ya mara kwa mara na yanayoonekana katika kiwango cha maelezo ni ya kukasirisha.

Acha nikukumbushe kuwa kiwango cha maelezo haihusiani tu na jiometri; njia inaweza pia kutumika kuokoa rasilimali zingine: wakati wa kutuma maandishi (ingawa chips za video tayari hutumia mipmapping, wakati mwingine inafanya akili kubadilisha maandishi kwenye nzi kwa wengine. na maelezo tofauti), mbinu za taa (vitu vya karibu vinaangazwa kwa kutumia algorithm tata, na zile za mbali - kwa kutumia rahisi), mbinu za maandishi (ramani tata ya parallax hutumiwa kwenye nyuso za karibu, na ramani ya kawaida hutumiwa kwenye nyuso za mbali), nk. .

Si rahisi sana kuonyesha mfano kutoka kwa mchezo; kwa upande mmoja, LOD inatumika kwa digrii moja au nyingine katika karibu kila mchezo, kwa upande mwingine, haiwezekani kila wakati kuonyesha hii wazi, vinginevyo kungekuwa na hatua ndogo. katika LOD yenyewe.

Lakini katika mfano huu bado ni wazi kuwa mfano wa gari wa karibu una maelezo ya juu, gari mbili au tatu zifuatazo pia ziko karibu sana na kiwango hiki, na zote za mbali zina urahisishaji unaoonekana, hapa ndio muhimu zaidi: hakuna. vioo vya kutazama nyuma, sahani za leseni, wipers za windshield na vifaa vya ziada vya taa. Na mfano wa mbali zaidi hauna hata kivuli kwenye barabara. Hii ni kiwango cha algorithm ya kina katika hatua.

Mwangaza wa Ulimwengu

Ni vigumu kuiga mwangaza halisi wa tukio; kila mwale wa mwanga katika uhalisia unaakisiwa na kurudiwa mara nyingi, idadi ya uakisi huu si mdogo. Na katika uwasilishaji wa 3D, idadi ya uakisi hutegemea sana uwezo wa kukokotoa; hesabu yoyote ya eneo ni muundo wa kimwili uliorahisishwa, na picha inayotokana iko karibu tu na uhalisia.

Algorithms ya taa inaweza kugawanywa katika mifano miwili: mwanga wa moja kwa moja au wa ndani na uangazaji wa kimataifa (mwangaza wa moja kwa moja au wa ndani na mwanga wa kimataifa). Mfano wa taa za mitaa hutumia hesabu ya kuangaza moja kwa moja, mwanga kutoka kwa vyanzo vya mwanga kabla ya makutano ya kwanza ya mwanga na uso wa opaque, mwingiliano wa vitu kwa kila mmoja hauzingatiwi. Ingawa modeli kama hiyo inajaribu kufidia hii kwa kuongeza mandharinyuma au taa iliyoko, ni makadirio rahisi zaidi, mwanga uliorahisishwa sana kutoka kwa miale yote isiyo ya moja kwa moja ya vyanzo vya mwanga, ambayo huweka rangi na ukubwa wa mwanga wa vitu kwa kukosekana kwa mwanga wa moja kwa moja. vyanzo.

Ufuatiliaji huo wa ray huhesabu mwangaza wa nyuso tu kwa miale ya moja kwa moja kutoka kwa vyanzo vya mwanga, na uso wowote, ili kuonekana, lazima uangazwe moja kwa moja na chanzo cha mwanga. Hii haitoshi kufikia matokeo ya picha; pamoja na taa ya moja kwa moja, mwanga wa pili na miale inayoakisiwa kutoka kwa nyuso zingine lazima pia uzingatiwe. Katika ulimwengu wa kweli, miale ya mwanga huteleza kutoka kwenye nyuso mara kadhaa hadi kufifia kabisa. Mwangaza wa jua unaopita kwenye dirisha huangaza chumba kizima, ingawa miale hiyo haiwezi kufikia moja kwa moja nyuso zote. Kadiri chanzo cha mwanga kinavyong'aa, ndivyo itakavyoonyeshwa mara nyingi zaidi. Rangi ya uso wa kutafakari pia huathiri rangi ya mwanga uliojitokeza, kwa mfano, ukuta nyekundu utasababisha doa nyekundu kwenye kitu cheupe kilicho karibu. Hapa kuna tofauti wazi, hesabu bila kuzingatia taa za sekondari na kuzingatia:

Katika mfano wa taa ya kimataifa, mwanga wa kimataifa, taa huhesabiwa kwa kuzingatia ushawishi wa vitu kwa kila mmoja, tafakari nyingi na refractions ya mionzi ya mwanga kutoka kwenye nyuso za vitu, caustics na kutawanyika kwa chini ya ardhi huzingatiwa. Mfano huu hukuruhusu kupata picha ya kweli zaidi, lakini inachanganya mchakato, unaohitaji rasilimali zaidi. Kuna algoriti kadhaa za uangazaji wa kimataifa, tutaangalia kwa ufupi uangazaji (hesabu ya mwangaza usio wa moja kwa moja) na ramani ya picha (hesabu ya uangazaji wa kimataifa kulingana na ramani za fotoni zilizohesabiwa awali kwa kutumia ufuatiliaji). Pia kuna mbinu zilizorahisishwa za kuiga mwangaza usio wa moja kwa moja, kama vile kubadilisha mwangaza wa jumla wa eneo kulingana na idadi na mwangaza wa vyanzo vya mwanga ndani yake au kutumia idadi kubwa ya vyanzo vya nuru vilivyowekwa kuzunguka eneo ili kuiga mwanga unaoakisiwa, lakini hii. bado iko mbali na algorithm halisi ya G.I.

Algorithm ya radiosity ni mchakato wa kuhesabu tafakari za sekondari za mionzi ya mwanga kutoka kwa uso mmoja hadi mwingine, na pia kutoka kwa mazingira hadi vitu. Mionzi kutoka kwa vyanzo vya mwanga hufuatiliwa hadi nguvu zao zinapungua chini ya kiwango fulani au mionzi kufikia idadi fulani ya tafakari. Hii ni mbinu ya kawaida ya GI, hesabu kwa kawaida hufanywa kabla ya kutoa, na matokeo ya hesabu yanaweza kutumika kwa uwasilishaji wa wakati halisi. Mawazo ya msingi ya radiosity yanategemea fizikia ya uhamisho wa joto. Nyuso za vitu zimegawanywa katika maeneo madogo yanayoitwa patches, na mwanga uliojitokeza unadhaniwa kutawanyika sawasawa katika pande zote. Badala ya kuhesabu kila miale kwa ajili ya taa, mbinu ya wastani hutumiwa ambayo hugawanya taa katika viraka kulingana na viwango vya nishati vinavyozalisha. Nishati hii inasambazwa sawia kati ya viraka vya uso.

Mbinu nyingine ya kukokotoa mwangaza wa kimataifa ilipendekezwa na Henrik Wann Jensen, hii ndiyo mbinu ya kuchora ramani ya fotoni. Kutumia ramani za picha ni algoriti nyingine ya kimataifa ya uangazaji kulingana na ufuatiliaji wa miale na hutumika kuiga mwingiliano wa miale ya mwanga na vitu vilivyo kwenye tukio. Kanuni hukokotoa uakisi wa pili wa miale, mwonekano wa nuru kupitia nyuso zenye uwazi, na uakisi uliotawanyika. Njia hii inajumuisha kuhesabu mwanga wa pointi za uso katika kupita mbili. Ya kwanza inahusisha ufuatiliaji wa miale ya moja kwa moja na uakisi wa pili, mchakato wa awali unaofanywa kabla ya uwasilishaji mkuu. Njia hii hukokotoa nishati ya fotoni zinazosafiri kutoka chanzo cha mwanga hadi vitu vilivyo kwenye eneo. Fotoni zinapofika kwenye uso, sehemu ya makutano, mwelekeo, na nishati ya fotoni huhifadhiwa kwenye kache inayoitwa ramani ya fotoni. Ramani za picha zinaweza kuhifadhiwa kwenye diski kwa matumizi ya baadaye bila kuzihesabu kila fremu. Tafakari za fotoni huhesabiwa hadi operesheni ikome baada ya idadi fulani ya kutafakari au wakati nishati fulani inapofikiwa. Utoaji wa pili huhesabu mwangaza wa saizi za eneo kwa miale ya moja kwa moja, kwa kuzingatia data iliyohifadhiwa kwenye ramani za picha, nishati ya fotoni huongezwa kwa nishati ya mwangaza wa moja kwa moja.

Mahesabu ya uangazaji wa kimataifa, ambayo hutumia idadi kubwa ya uakisi wa pili, huchukua muda mrefu zaidi kuliko mahesabu ya uangazaji wa moja kwa moja. Kuna mbinu za kuhesabu jiji la redio kwa wakati halisi katika vifaa vinavyotumia uwezo wa kizazi cha hivi karibuni cha chipsi za video zinazoweza kupangwa, lakini kwa sasa matukio ambayo mwanga wa kimataifa umehesabiwa kwa wakati halisi lazima iwe rahisi sana na kurahisisha nyingi hufanywa katika algorithms.

Lakini kile ambacho kimetumika kwa muda mrefu ni taa ya ulimwengu iliyohesabiwa kabla ya tuli, ambayo inakubalika kwa matukio bila kubadilisha nafasi ya vyanzo vya mwanga na vitu vikubwa vinavyoathiri sana taa. Baada ya yote, hesabu ya mwangaza wa ulimwengu haitegemei nafasi ya mwangalizi, na ikiwa nafasi ya vitu kama hivyo vya eneo na vigezo vya vyanzo vya taa hazibadilika kwenye eneo la tukio, basi maadili ya taa yaliyohesabiwa mapema yanaweza kuwa. kutumika. Michezo mingi hutumia hii kwa kuhifadhi data ya hesabu ya GI kama ramani za mwanga.

Pia kuna algoriti zinazokubalika za kuiga mwangaza wa kimataifa katika mienendo. Kwa mfano, kuna njia rahisi ya kutumia katika programu za wakati halisi kukokotoa mwangaza usio wa moja kwa moja wa kitu kwenye tukio: uwasilishaji uliorahisishwa wa vitu vyote vilivyopunguzwa maelezo (isipokuwa ile ambayo mwangaza umehesabiwa) kuwa a. ramani ya mchemraba yenye mwonekano wa chini (hii pia inaweza kutumika kwa ajili ya kuonyesha uakisi unaobadilika kwenye uso wa kitu), kisha kuchuja unamu huu (njia kadhaa za kichujio cha ukungu), na kutumia data kutoka kwa unamu uliokokotolewa ili kuangazia kitu hiki kama kikamilisha taa ya moja kwa moja. Katika hali ambapo hesabu inayobadilika ni ngumu sana, unaweza kuendelea na ramani tuli za redio. Mfano kutoka kwa mchezo wa MotoGP 2, ambao unaonyesha wazi athari ya faida ya hata simulation rahisi kama hiyo ya GI:



Maagizo haya yatakusaidia kusakinisha vivuli katika Minecraft na hivyo kuboresha ulimwengu wa mchezo kwa kuongeza vivuli vinavyobadilika, kelele za upepo na nyasi, maji halisi na mengi zaidi.

Inastahili kuzingatia mara moja kwamba vivuli hupakia mfumo sana, na ikiwa una kadi dhaifu ya video au hata iliyounganishwa, tunapendekeza uepuke kusakinisha mod hii.

Ufungaji una hatua mbili, kwanza unahitaji kusanikisha mod ya shader, na kisha pakiti za ziada za shader kwa hiyo.

HATUA # 1 - Kusakinisha mod ya shader

  1. Pakua na usakinishe Java
  2. Sakinisha OptiFine HD
    au ShadersMod;
  3. Fungua kumbukumbu inayosababisha mahali popote;
  4. Tunazindua faili ya jar, kwa sababu yeye ni mfungaji;
  5. Mpango huo utakuonyesha njia ya mchezo, ikiwa kila kitu ni sahihi, bofya Ndiyo, Ok, Ok;
  6. Twende .minecraft na unda folda hapo shaderpacks;
  7. Tunaingia kwenye kizindua na kuona wasifu mpya kwenye mstari na jina "ShadersMod", ikiwa sio, kisha uchague kwa mikono.
  8. Ifuatayo, unahitaji kupakua vifurushi vya shader

HATUA #2 - Kusakinisha kifurushi cha shader

  1. Pakua kifurushi cha shader ambacho unavutiwa nacho (orodha mwishoni mwa kifungu)
  2. Bonyeza funguo WIN+R
  3. Enda kwa .minecraft/shaderpacks. Ikiwa hakuna folda kama hiyo, basi unda.
  4. Hamisha au toa kumbukumbu ya shader hadi .minecraft/shaderpacks. Njia inapaswa kuonekana kama hii: .minecraft/shaderpacks/SHADER_FOLDER_NAME/shaders/[.fsh na faili za .vsh ndani]
  5. Zindua Minecraft na uende Mipangilio > Vivuli. Hapa utaona orodha ya vivuli vinavyopatikana. Chagua moja unayohitaji
  6. Katika mipangilio ya shader, wezesha "tweakBlockDamage", afya "CloudShadow" na "OldLighting"

Vivuli vya ajabu vya Sonic Ether
Vivuli vya Sildur
Vivuli vya Chocapic13's
yShaders ya sensi277
Vivuli vya MrMeep_x3
Cel Shaders ya Naelego
Vivuli vya RRe36
Vivuli vya CUDA vya DeDelner
Vivuli vya Asidi vya bruceatsr44's
Vivuli vya Beed28
Kifurushi cha Shader cha Ziipzaap
robobo1221's Shaders
Vivuli vya dvv16's
Stazza85 super Shaders
Kifurushi cha Shaders cha hoo00's B
Mimea ya Kupunga ya Regi24
MrButternuss ShaderPack
Picha za Kushangaza za DethRaid Kwenye Vivuli vya Nitro
Edi's Shader ForALLPc's
Vivuli vya TME vya CrankerMan
Kadir Nck Shader (wa skate702)
Vivuli vya Werrus
Vivuli vya Nexus vya Maisha ya Knewtonwako
CYBOX shaderpack
CrapDeShoes CloudShade Alpha
AirLocke42 Shader
Vivuli vya BSL vya CaptTatsu
Vivuli vya Triliton
ShadersMcOfficial's Bloominx Shaders (Chocapic13" Shaders)
Vivuli vya Kuendelea vya dotModded
Vivuli vya Lunar vya Qwqx71 (chocapic13"s shader)

Swali la kawaida sana kutoka kwa wachezaji wadadisi na waundaji wapya wa michezo.

Shader (Kiingereza shader - shading program) ni programu ya kadi ya video, ambayo hutumiwa katika graphics za 3D kuelewa sifa za mwisho za kitu au picha, ambayo inaweza kujumuisha uwasilishaji wa kunyonya na kutawanyika kwa mwanga, uchoraji wa ramani, kuonyesha na. kinzani, kivuli, uhamishaji wa uso na idadi kubwa ya sifa zingine.

Vivuli ni vidogo, kwa kusema, "hati za kadi ya video." Wanakuruhusu kutekeleza athari na athari maalum kama hizi kwa urahisi kabisa.

Kuna pixel (kazi na picha - yaani, ama skrini nzima au textures) na vertex (kazi na vitu 3D). Kwa mfano, kwa kutumia vivuli vya pikseli, madoido kama vile maumbo ya 3D (bump), maumbo ya parallax, miale ya jua (sunshafts) a la Crisis, ukungu wa umbali, ukungu wa mwendo, maumbo yaliyohuishwa (maji, lava,... ), HDR, anti -aliasing, vivuli (kwa kutumia ShadowMaps michakato ya kiteknolojia) na mambo mengine mengi. Vivuli vya vertex hutumika kuhuisha nyasi, herufi, miti, kutengeneza mawimbi juu ya maji (kama vile vikubwa), n.k. Kadiri athari ilivyo ngumu zaidi (ubora wa juu, wa kisasa zaidi), ndivyo inavyohitaji amri zaidi katika msimbo wa shader. Lakini vivuli vya matoleo tofauti (1.1 - 5.0) vinaunga mkono idadi tofauti ya amri: toleo la juu, amri zaidi unaweza kutumia. Kwa sababu hii, haiwezekani kutekeleza michakato fulani ya kiteknolojia kwenye vivuli vya chini kabisa. Kwa mfano, ni kwa sababu hii kwamba Nafasi mpya ya 2 iliyokufa inahitaji toleo la 3 la vivuli (pixel na vertex) - kwa kuwa ina mfano wa taa ambao unaweza kutekelezwa tu kwenye toleo la 3 na la juu la vivuli.

Chaguzi za Shader

Kulingana na hatua ya bomba, vivuli vinagawanywa katika idadi fulani ya aina: vertex, fragment (pixel) na jiometri. Kweli, aina mpya za mabomba pia zina vivuli vya tessellation. Hatutajadili bomba la picha vizuri; Bado ninafikiria kuandika nakala tofauti juu ya hii, kwa wale wanaoamua kusoma vivuli na programu ya picha. Andika kwenye maoni ikiwa una hamu, nitakuwa na habari, inafaa kupoteza wakati wako.

Vertex shader:
Vivuli vya vertex hutumika kutengeneza uhuishaji wa wahusika, nyasi, miti, mawimbi juu ya maji na karibu vitu vingine vyote. Katika shader ya vertex, programu inakabiliwa na data zinazohusiana na vertices, kwa mfano: kuratibu za vertex katika nafasi, kuratibu zake za texture, rangi yake na vector ya kawaida.

Kivuli cha jiometri:
Vivuli vya jiometri viko tayari kujenga jiometri mpya, na inaweza kutumika kuunda chembe, kusanidi maelezo ya mfano juu ya kuruka, kuunda silhouettes, nk. Tofauti na vertex iliyopita, tuko tayari kusindika sio vertex moja tu, bali pia ya primitive nzima. Ya kwanza inaweza kuwa sehemu (vipeo 2) na pembetatu (vipeo 3), na mbele ya habari kuhusu wima zilizo karibu (mpango) kwa primitive ya pembetatu, hadi wima 6 zinaweza kusindika.

Pixel shader:
Vivuli vya pikseli hutekeleza uchoraji wa ramani, mwanga na athari mbalimbali za unamu, kama vile kuakisi, mwonekano, ukungu, Ramani ya Bump, n.k. Vivuli vya Pixel vile vile hutumika kwa madoido ya baadae. Kivuli cha pikseli hufanya kazi na vipengele vya picha na maumbo ya bitmap - huchakata data inayohusishwa na pikseli (kwa mfano, rangi, kina, viwianishi vya unamu). Kivuli cha pikseli kinatumika katika hatua ya mwisho ya bomba la michoro kuunda kipande cha picha.

Jambo la msingi: Kivuli ni athari mbalimbali kwenye picha, kama vile unavyochakata picha yako kwenye simu yako katika toni au ruwaza tofauti.

" itemprop="image">

"Vivuli ni nini?" - swali la kawaida sana kutoka kwa wachezaji wadadisi na watengenezaji wa mchezo wa novice. Katika makala hii nitakuambia kwa uwazi na kwa uwazi kuhusu vivuli hivi vya kutisha.

Ninachukulia michezo ya kompyuta kuwa injini ya maendeleo kuelekea picha halisi katika michoro ya kompyuta, kwa hivyo hebu tuzungumze kuhusu "vivuli" ni nini katika muktadha wa michezo ya video.

Kabla ya viongeza kasi vya michoro vya kwanza kuja, kazi yote ya kutoa fremu za mchezo wa video ilifanywa na CPU duni.

Kutoa sura kwa kweli ni kazi ya kawaida: unahitaji kuchukua "jiometri" - mifano ya polygonal (ulimwengu, tabia, silaha, nk) na uifanye vibaya. Rasterize ni nini? Mtindo mzima wa 3D una pembetatu ndogo, ambazo rasterizer hubadilika kuwa saizi (hiyo ni, "rasterize" inamaanisha kugeuka kuwa saizi). Baada ya uboreshaji, chukua data ya unamu, vigezo vya mwanga, ukungu, n.k. na uhesabu kila pikseli inayotokana ya fremu ya mchezo, ambayo itaonyeshwa kwenye skrini ya mchezaji.

Kwa hivyo, kitengo cha usindikaji cha kati (CPU - Kitengo Kikuu cha Usindikaji) ni mtu mwerevu sana kumlazimisha kufanya utaratibu kama huo. Badala yake, ni busara kutenga aina fulani ya moduli ya maunzi ambayo itapunguza CPU ili iweze kufanya kazi muhimu zaidi ya kiakili.

Moduli hii ya maunzi ilikuwa kichapuzi cha michoro au kadi ya video (GPU - Kitengo cha Uchakataji wa Michoro). Sasa CPU huandaa data na kupakia mwenzake kazi ya kawaida. Kwa kuzingatia kwamba GPU sasa si mwenzake mmoja tu, lakini umati wa cores minion, inaweza kukabiliana na aina hii ya kazi mara moja.

Lakini bado hatujapata jibu kwa swali kuu: vivuli ni nini? Subiri, ninafikia hii.

Nzuri, za kuvutia na karibu na picha za uhalisia wa picha zilihitaji watengenezaji wa kadi za video kutekeleza algorithms nyingi katika kiwango cha maunzi. Vivuli, mwanga, mambo muhimu na kadhalika. Njia hii, pamoja na utekelezaji wa algorithms katika vifaa, inaitwa "Bomba Iliyowekwa au Conveyor" na ambapo graphics za ubora wa juu zinahitajika, hazipatikani tena. Nafasi yake ilichukuliwa na "Bomba la Programu".

Maombi kutoka kwa wachezaji: "Njoo, lete graphonia nzuri! mshangao!”, ilisukuma watengenezaji wa mchezo (na watengenezaji wa kadi za video, mtawalia) kuelekea algoriti ngumu zaidi na ngumu. Hadi wakati fulani, algorithms ya vifaa vya waya ngumu ikawa chache sana kwao.

Wakati umefika kwa kadi za video kuwa na akili zaidi. Uamuzi ulifanywa ili kuruhusu wasanidi programu kupanga vizuizi vya GPU katika mabomba ya kiholela ambayo hutekeleza kanuni tofauti. Hiyo ni, watengenezaji wa mchezo na watengenezaji wa programu za michoro sasa waliweza kuandika programu za kadi za video.

Na sasa, hatimaye, tumekuja kwa jibu la swali letu kuu.

"Vivuli ni nini?"

Shader ni mpango wa kadi ya video ambayo hutumiwa katika michoro ya pande tatu kuamua vigezo vya mwisho vya kitu au picha, ambayo inaweza kujumuisha maelezo ya kunyonya na kutawanyika kwa mwanga, uchoraji wa ramani, kuakisi na kuakisi, kivuli, uhamishaji wa uso. na vigezo vingine vingi.

Vivuli ni nini? Kwa mfano, athari hii inaweza kupatikana, hii ni kivuli cha maji kinachotumiwa kwenye nyanja.

Bomba la picha

Faida ya bomba linaloweza kupangwa juu ya mtangulizi wake ni kwamba waandaaji wa programu sasa wanaweza kuunda algoriti zao wenyewe, badala ya kutumia seti ya chaguzi zilizowekwa ngumu kwenye maunzi.

Mara ya kwanza, kadi za video zilikuwa na wasindikaji kadhaa maalumu ambao waliunga mkono seti tofauti za maelekezo. Vivuli viligawanywa katika aina tatu kulingana na ni processor gani itazifanya. Lakini basi kadi za video zilianza kuwa na wasindikaji wa ulimwengu wote wanaounga mkono seti za maagizo ya aina zote tatu za vivuli. Mgawanyiko wa vivuli katika aina umehifadhiwa ili kuelezea madhumuni ya shader.

Kando na kazi za picha zilizo na kadi hizo mahiri za video, sasa inawezekana kufanya hesabu za madhumuni ya jumla (hazihusiani na michoro ya kompyuta) kwenye GPU.

Kwa mara ya kwanza, usaidizi kamili wa vivuli ulionekana kwenye kadi za video za safu ya GeForce 3, lakini kanuni hizo zilitekelezwa katika GeForce256 (kwa njia ya Wachanganyaji wa Usajili).

Aina za vivuli

Kulingana na hatua ya bomba, vivuli vinagawanywa katika aina kadhaa: vertex, fragment (pixel) na jiometri. Na aina mpya zaidi za bomba pia zina vivuli vya tessellation. Hatutajadili bomba la picha kwa undani; Bado ninafikiria kuandika nakala tofauti juu ya hii, kwa wale wanaoamua kusoma vivuli na programu ya picha. Andika kwenye maoni ikiwa una nia, nitajua ikiwa inafaa wakati wako.

Kivuli cha vertex

Vivuli vya vertex hufanya uhuishaji wa wahusika, nyasi, miti, kuunda mawimbi juu ya maji na vitu vingine vingi. Katika shader ya vertex, programu ina upatikanaji wa data zinazohusiana na wima, kwa mfano: kuratibu za vertex katika nafasi, kuratibu zake za texture, rangi yake na vector ya kawaida.

Shader ya jiometri

Vivuli vya jiometri vina uwezo wa kuunda jiometri mpya, na inaweza kutumika kuunda chembe, kubadilisha maelezo ya mfano juu ya kuruka, kuunda silhouettes, nk. Tofauti na vertex ya awali, wana uwezo wa kusindika sio vertex moja tu, bali pia ya primitive nzima. Asili inaweza kuwa sehemu (vipeo viwili) na pembetatu (vituo vitatu), na ikiwa taarifa kuhusu vipeo vilivyo karibu (Kiingereza adjacency) inapatikana, hadi vipeo sita vinaweza kuchakatwa kwa primitive ya pembetatu.

Pixel shader

Vivuli vya pikseli hutekeleza uchoraji wa ramani, mwangaza, na athari mbalimbali za unamu kama vile uakisi, mwonekano wa nyuma, ukungu, Bump Mapping, n.k. Vivuli vya Pixel pia hutumika kwa madoido ya baadae.

Kivuli cha pikseli hufanya kazi na vipande vya picha na maumbo ya bitmap - huchakata data inayohusishwa na saizi (kwa mfano, rangi, kina, viwianishi vya unamu). Kivuli cha pikseli kinatumika katika hatua ya mwisho ya bomba la michoro kuunda kipande cha picha.

Vivuli vimeandikwa kwenye nini?

Hapo awali, vivuli vinaweza kuandikwa kwa lugha inayofanana na mkusanyiko, lakini baadaye lugha za hali ya juu sawa na C zilionekana, kama vile Cg, GLSL na HLSL.

Lugha kama hizo ni rahisi zaidi kuliko C, kwa sababu shida zinazotatuliwa kwa msaada wao ni rahisi zaidi. Mfumo wa aina katika lugha kama hizo unaonyesha mahitaji ya watengenezaji wa programu za picha. Kwa hiyo, hutoa programu na aina maalum za data: matrices, samplers, vectors, nk.

RenderMan

Kila kitu tulichojadili hapo juu kinatumika kwa picha za wakati halisi. Lakini kuna michoro isiyo ya wakati halisi. Kuna tofauti gani - wakati halisi - wakati halisi, ambayo ni, hapa na sasa - kutoa fremu 60 kwa sekunde kwenye mchezo, huu ni mchakato wa wakati halisi. Lakini kutoa fremu changamano kwa uhuishaji wa kisasa kwa dakika kadhaa sio wakati halisi. Jambo kuu ni wakati.

Kwa mfano, kwa sasa hatuwezi kupata michoro ya ubora sawa na katika filamu za hivi punde za uhuishaji kutoka studio ya Pixar kwa wakati halisi. Kubwa sana hutoa mashamba kuhesabu uigaji wa mwanga kwa kutumia algorithms tofauti kabisa, ambayo ni ghali sana, lakini hutoa picha karibu za picha.

Picha za uhalisia zaidi katika Sand piper

Kwa mfano, angalia katuni hii nzuri, chembe za mchanga, manyoya ya ndege, mawimbi, kila kitu kinaonekana kweli kabisa.

*Video inaweza kupigwa marufuku kwenye Youtube, ikiwa haitafunguliwa, Google pixar sandpiper - katuni fupi kuhusu sandpiper jasiri ni nzuri sana na laini. Itakugusa na kuonyesha jinsi picha nzuri za kompyuta zinavyoweza kuwa.

Kwa hivyo hii ni RenderMan kutoka kwa Pixar. Ikawa lugha ya kwanza ya programu ya shader. API ya RenderMan ndicho kiwango halisi cha uwasilishaji wa kitaalamu, kinachotumika kote katika kazi ya Pixar na kwingineko.

Taarifa muhimu

Sasa unajua vivuli ni nini, lakini kando na vivuli, kuna mada zingine za kupendeza sana katika ukuzaji wa mchezo na picha za kompyuta ambazo labda zitakuvutia:

  • , - mbinu ya kuunda athari za kushangaza katika michezo ya kisasa ya video. Kagua makala na video yenye masomo ya kuunda athari katika Unity3d
  • , - ikiwa unafikiria kukuza michezo ya video, kama kazi ya kitaalam au hobby, nakala hii ina seti bora ya mapendekezo juu ya "wapi kuanza", "vitabu gani vya kusoma", nk.

Ikiwa una maswali yoyote

Kama kawaida, ikiwa bado una maswali yoyote, waulize kwenye maoni, nitajibu kila wakati. Maneno yoyote ya fadhili au marekebisho ya makosa yatathaminiwa sana.

Pamoja na utandawazi wa kompyuta, idadi kubwa ya maneno yasiyoeleweka yamekuja katika ulimwengu wetu. Kushughulika nao wote sio rahisi kama inavyoonekana mwanzoni. Wengi wao wana majina sawa, mengi yana utendaji mpana. Ni wakati wa kujua shader ni nini, imetoka wapi, inahitajika kwa nini na ikoje.

Kiboreshaji

Uwezekano mkubwa zaidi, wewe ni mchezaji mwenye bidii wa Minecraft na ndiyo sababu ulikuja kujua ni nini. Ni vyema kutambua mara moja kwamba dhana ya "shader" inatenganishwa kwa urahisi na mchezo huu na inaweza "kuishi" tofauti nayo. Tu kama mtindo. Kwa hiyo, hakuna haja ya kuunganisha kwa ukali dhana hizi mbili.

Kwa ujumla, shader hutoka kwa programu na ilionekana kama msaidizi wa wataalamu. Labda itakuwa sauti kubwa kuita chombo hiki kuwa kiboreshaji, lakini inaboresha picha katika michezo. Kwa hiyo, wakati tayari umeanza kuelewa ni nini, hebu tuendelee kwenye tafsiri halisi.

Ufafanuzi

Shader ni nini? ambayo inatekelezwa na wasindikaji wa kadi ya video. Zana hizi hutengenezwa kwa lugha maalum. Kulingana na kusudi, inaweza kutofautiana. Baada ya hapo vivuli hutafsiriwa kwa masharti kuwa maagizo ya wasindikaji wa kasi ya picha.

Maombi

Ni lazima kusema mara moja kwamba maombi kwa ujumla ni predetermined na madhumuni. Mipango hiyo inatekelezwa katika wasindikaji wa kadi ya video, ambayo ina maana wanafanya kazi kwa vigezo vya vitu na picha za graphics tatu-dimensional. Wanaweza kufanya kazi nyingi, ikiwa ni pamoja na kufanya kazi kwa kutafakari, refraction, giza, athari za mabadiliko, nk.

Nguzo

Watu wamekuwa wakijaribu kujua shader ni nini kwa muda mrefu. Hata kabla ya programu hizi, watengenezaji walifanya kila kitu kwa mkono. Mchakato wa kuunda picha kutoka kwa vitu fulani haukuendeshwa kiotomatiki. Kabla ya mchezo kuzaliwa, watengenezaji walifanya uwasilishaji wao wenyewe. Walifanya kazi na algorithm na kuiunda kwa kazi tofauti. Hivi ndivyo maagizo ya kutumia maandishi, athari za video, nk.

Bila shaka, baadhi ya taratibu bado zilijengwa katika uendeshaji wa kadi za video. Algorithms kama hizo zinaweza kutumiwa na watengenezaji. Lakini hawakuweza kulazimisha algorithms zao kwenye kadi ya video. Maagizo yasiyo ya kawaida yanaweza kutekelezwa na kichakataji cha kati, ambacho kilikuwa polepole kuliko kichakataji michoro.

Mfano

Ili kuelewa tofauti, inafaa kuangalia mifano michache. Ni wazi, katika mchezo, utoaji unaweza kuwa maunzi au programu. Kwa mfano, sisi sote tunakumbuka Quake 2 maarufu. Kwa hiyo, maji katika mchezo inaweza tu kuwa chujio cha bluu linapokuja suala la utoaji wa vifaa. Lakini kwa uingiliaji wa programu, maji ya maji yalionekana. Ni hadithi sawa katika CS 1.6. Utoaji wa maunzi ulitoa tu mweko mweupe, huku uonyeshaji wa programu uliongeza skrini yenye pikseli.

Ufikiaji

Kwa hiyo ikawa wazi kwamba ilikuwa ni lazima kutatua matatizo hayo. Viongeza kasi vya picha vilianza kupanua idadi ya algoriti ambazo zilikuwa maarufu kati ya watengenezaji. Ilibainika kuwa haiwezekani "kuingiza" kila kitu. Ilikuwa ni lazima kufungua upatikanaji wa kadi ya video kwa wataalamu.

Kabla ya michezo kama Minecraft kuja na mods na vivuli, wasanidi programu walipewa fursa ya kufanya kazi na vizuizi vya GPU katika mabomba ambayo yanaweza kuwajibika kwa maagizo tofauti. Hivi ndivyo programu zinazoitwa "shader" zilijulikana. Lugha za programu zimetengenezwa maalum ili kuziunda. Kwa hivyo, kadi za video zilianza kupakiwa sio tu na "jiometri" ya kawaida, lakini pia na maagizo ya processor.

Mara tu ufikiaji kama huo ulipowezekana, uwezekano mpya wa programu ulianza kufunguliwa. Wataalamu wanaweza kutatua matatizo ya hisabati kwenye GPU. Hesabu kama hizo zilijulikana kama GPGPU. Utaratibu huu ulihitaji zana maalum. Kutoka nVidia CUDA, kutoka Microsoft DirectCompute, pamoja na mfumo wa OpenCL.

Aina

Watu zaidi walijifunza kuhusu vivuli, habari zaidi ilifunuliwa kuwahusu na uwezo wao. Hapo awali, viongeza kasi vilikuwa na wasindikaji watatu. Kila mmoja aliwajibika kwa aina yake ya shader. Baada ya muda, walibadilishwa na moja ya ulimwengu wote. Kila mmoja alikuwa na seti maalum ya maagizo, ambayo mara moja ilikuwa na aina tatu za vivuli. Licha ya kuunganishwa kwa kazi, maelezo ya kila aina yamehifadhiwa hadi leo.

Aina ya kipeo ilifanya kazi na vipeo vya maumbo ambayo yana nyuso nyingi. Kunaweza kuwa na zana nyingi zinazohusika hapa. Kwa mfano, tunazungumzia kuratibu za texture, vectors tangent, binormals au kawaida.

Aina ya kijiometri ilifanya kazi sio tu na vertex moja, lakini kwa primitive nzima. Pixel iliundwa kwa ajili ya kuchakata vipande vya vielelezo na maumbo machafu kwa ujumla.

Katika michezo

Ikiwa unatafuta vivuli vya Minecraft 1.5.2, basi uwezekano mkubwa unataka tu kuboresha picha kwenye mchezo. Ili kufanya hili liwezekane, programu zilipitia "bomba za moto, maji na shaba." Vivuli vilijaribiwa na kusafishwa. Matokeo yake, ikawa wazi kuwa chombo hiki kina faida na hasara.

Bila shaka, urahisi wa kuandaa algorithms mbalimbali ni pamoja na kubwa. Hii ni kunyumbulika na kurahisisha dhahiri katika mchakato wa ukuzaji wa mchezo, na kwa hivyo kupunguzwa kwa gharama. Matukio pepe yanayotokana huwa magumu zaidi na ya kweli. Pia, mchakato wa maendeleo yenyewe unakuwa mara nyingi kwa kasi.

Hasara pekee zinazostahili kuzingatiwa ni kwamba utakuwa na kujifunza moja ya lugha za programu, na pia kuzingatia kwamba mifano tofauti ya kadi za video zina seti tofauti za algorithms.

Ufungaji

Ikiwa utapata pakiti ya shader ya Minecraft, unahitaji kuelewa kuwa kuna mitego mingi katika kuisanikisha. Licha ya umaarufu unaofifia wa mchezo huu, mashabiki wake waaminifu bado wanabaki. Sio kila mtu anapenda picha, haswa mnamo 2017. Watu wengine wanafikiri kwamba shukrani kwa vivuli wanaweza kuiboresha. Kinadharia, kauli hii ni sahihi. Lakini katika mazoezi hautabadilika sana.

Lakini ikiwa bado unatafuta njia za kutumia Minecraft 1.7, basi, kwanza kabisa, kuwa mwangalifu. Mchakato yenyewe sio ngumu. Kwa kuongeza, pamoja na faili yoyote iliyopakuliwa kuna maagizo ya kuiweka. Jambo kuu ni kuangalia matoleo ya mchezo na shader. Vinginevyo, optimizer haitafanya kazi.

Kuna maeneo mengi kwenye mtandao ambapo unaweza kufunga na kupakua zana kama hiyo. Ifuatayo, unahitaji kufuta kumbukumbu kwenye folda yoyote. Huko utapata faili "GLSL-Shaders-Mod-1.7-Installer.jar". Baada ya uzinduzi, utaonyeshwa njia ya mchezo, ikiwa ni sahihi, basi kukubaliana na maelekezo yote yafuatayo.

Kisha unahitaji kuhamisha folda ya "shaderpacks" kwenye ".minecraft". Sasa unapoanza kizindua utahitaji kwenda kwenye mipangilio. Hapa, ikiwa ufungaji ulikamilishwa kwa usahihi, mstari wa "Shaders" utaonekana. Unaweza kuchagua kifurushi unachohitaji kutoka kwenye orodha nzima.

Ikiwa unahitaji vivuli vya Minecraft 1.7.10, basi pata tu pakiti ya shader ya toleo linalohitajika na ufanye vivyo hivyo. Kunaweza kuwa na matoleo yasiyo thabiti kwenye Mtandao. Wakati mwingine lazima ubadilishe, usakinishe tena na utafute inayofaa. Ni bora kuangalia hakiki na kuchagua zile maarufu zaidi.