Ñïðåè

Ñïðåè


Âñòóïëåíèå



Ýòîò ãàéä â öåëîì - òåîðåòè÷åñêèé (íå "ïîøàãîâîå ðóêîâîäñòâî"). Èäåÿ â òîì, ÷òî åãî ëó÷øå ïðî÷åñòü öåëèêîì; ýòî ïîçâîëèò ïîíÿòü, êàê óñòðîåíû ñïðåè (õîòÿ áû ïðèìåðíî) è ÷åãî îò íèõ ìîæíî îæèäàòü. Èòàê, âîò ÷òî ó íàñ âïåðåäè:
  • çà÷åì íóæíû âíåøíèå óòèëèòû (òåîðèÿ)
  • âûñîêîêà÷åñòâåííûå ñïðåè (ýòî ïðîñòî!)
  • ïàðó ñëîâ î ñæàòèè (òåîðèÿ)
  • ïðîçðà÷íîñòü (òåîðèÿ)
  • ìèïìàïû (òåîðèÿ)
  • ñïðåè ñ àíèìàöèåé (ýòî òîæå ïðîñòî!)
  • ñïðåè ñ «ïåðåëèâà÷êîé» (à âîò òóò ñëîæíåå… è ïîêà ëèøü ïîâåðõíîñòíûå óêàçàíèÿ)





Çà÷åì íóæíû âíåøíèå óòèëèòû?



Îáû÷íî íîâè÷êè èñïîëüçóþò âñòðîåííóþ â ñàìó èãðó âîçìîæíîñòü èñïîëüçîâàòü ñâîþ êàðòèíêó â êà÷åñòâå ñïðåÿ. Îäíàêî èãðà äåëàåò ýòî äåëî ñêâåðíî. Íå âåðèòå? Âçãëÿíèòå íà ïðèìåð, óâåëè÷èâ åãî êëèêîì:ÑïðåèÈñõîäíîå èçîáðàæåíèå îäíî è òî æå; íî ñëåâà - òî, âî ÷òî ïðåâðàùàåò åãî ñàìà èãðà, à ñïðàâà - íàø êà÷åñòâåííûé ñïðåé.Åñëè âû íå âèäèòå îñîáîé ðàçíèöû â êà÷åñòâå, òî ìîæåò áûòü, âàì è íå íóæåí ýòîò ãàéä? )Äëÿ íà÷àëà, ïîïûòàåìñÿ ïîíÿòü, ÷òî äåëàåò TF2 ñ íàøèìè êàðòèíêàìè. Ñîçäàäèì òåñòîâóþ êàðòèíêó áåç ïðîçðà÷íîñòè ðàçìåðîì 512õ512 ïèêñåëåé, è "ñêîðìèì" å¸ èãðå. Ïîñëå ýòîãî ïîèùåì ñâåæèé ôàéë spray.vtf â êàòàëîãå Steam'à. Íàøëè? Îêåé... Åãî ðàçìåð îêîëî 40 êá; îòêðîåì åãî â óòèëèòå VTFEdit. Ñìîòðèì, ÷òî íàïèñàíî âî âêëàäêå «info». À íàïèñàíî òàì òàêîå – òèï ñæàòèÿ DXT1, ðàçìåð 256õ256 ïèêñåëåé. Òî åñòü, èãðà ìàëî òîãî, ÷òî óìåíüøèëà ðàçìåð êàðòèíêè, òàê åùå è îò÷àñòè èñïîðòèëà å¸ ñïåöèôè÷åñêèì òåêñòóðíûì ñæàòèåì. Òåïåðü ïîäñóíåì èãðå êàðòèíêó â ôîðìàòå tga, ñ ïðîçðà÷íûìè îáëàñòÿìè. Ïîâòîðÿåì ïðîöåäóðó, è âèäèì, ÷òî èñïîëüçóåòñÿ ñæàòèå DXT5, ðàçìåð êàðòèíêè 256õ256, ðàçìåð ôàéëà 87 êá.Êàê ìû ìîæåì óëó÷øèòü êàðòèíêó? Äà ïðîñòî óâåëè÷èì åå ðàçðåøåíèå! Òåîðåòè÷åñêè, ìû ìîæåì èñïîëüçîâàòü ëþáîå ðàçðåøåíèå, âïëîòü äî 4096õ4096, íî íà ïðàêòèêå ìû îãðàíè÷åíû ðàçìåðîì ôàéëà. Ñëèøêîì áîëüøèå ôàéëû èãðà ïîïðîñòó íå îòîáðàçèò. (È ýòî ê ëó÷øåìó. ß ñ óæàñîì ïðåäñòàâëÿþ ñåáå çàãðóçêó ãèãàíòñêèõ ìíîãî-ìåãàáàéòíûõ ñïðååâ, åñëè áû îíè áûëè ðàçðåøåíû, è êàêóþ íàãðóçêó áû ýòî ñîçäàâàëî ñåðâåðó…) ×òî äî ïðàêòèêè - ïóòåì ïðîá è îøèáîê ëåãêî ìîæíî âûÿñíèòü, ÷òî ðàçðåøåííûé ðàçìåð ñïðåÿ < 500 êá. Âîò è ïîïûòàåìñÿ èñïîëüçîâàòü ýòîò ðàçìåð «íà âñþ êàòóøêó»!





Âûñîêîêà÷åñòâåííûå ñïðåè



Äëÿ íà÷àëà, íàäî ïîáîðîòüñÿ ñ ïðèíóäèòåëüíûì èçìåíåíèåì ðàçìåðà êàðòèíêè. Íàì òàêè ïîòðåáóåòñÿ óæå óïîìÿíóòûé VTFEdit (åãî ìîæíî ñêà÷àòü çäåñü[nemesis.thewavelength.net]).  åãî ìåíþ – èìïîðò – óêàçûâàåì íàøó êàðòèíêó ñ ðàçðåøåíèåì 512õ512 – è âûñêàêèâàåò ïàíåëü, óïðàâëÿþùàÿ ïðåîáðàçîâàíèåì (ýòî êàê ðàç òî, ÷òî ñêðûòî îò íàñ â èãðå).Äàâàéòå, äëÿ íà÷àëà, ïîñòóïèì «íåïðàâèëüíî» - óêàæåì ôîðìàò áåç ñæàòèÿ, ïåðâûé â ñïèñêå (General – Normal Format è Alpha Format – òóò êàê ïðàâèëî ñòîèò óêàçûâàòü âñåãäà îäèíàêîâûé ôîðìàò â îáåèõ ïîëÿõ) – âûáåðåì RGBA8888 (÷òî îçíà÷àåò 4 áàéòà íà òî÷êó). Çàïèøåì ñïðåé. Ðàçìåð ôàéëà ñïðåÿ – 1,4 Ìá, ïî÷òè â òðè ðàçà áîëüøå äîïóñòèìîãî. Ó-óóïñ! Òàêîé ñïðåé èãðà íå ïîêàæåò.À âîò òåïåðü - ñäåëàåì âñ¸ òàê, êàê íàäî:Çàêðîåì VTFEdit, è çàïóñòèì åãî çàíîâî. Îïÿòü ïûòàåìñÿ èìïîðòèðîâàòü íàøó êàðòèíêó. Íî íà ýòîò ðàç âûáåðåì ñæàòèå DXT5. Åùå ñòîèò îáðàòèòü âíèìàíèå íà âîò ÷òî: ñíÿòü ãàëî÷êè ñ Resize è Generate Normal Maps, à åùå ëó÷øå âêëþ÷èòü ãàëî÷êó Generate Mipmaps, è òàì âûáðàòü Mipmap filter: Box è Sharpen filter: none.Òèïè÷íûå íàñòðîéêè èìïîðòà â VTFEdit:ÑïðåèÊðîìå òîãî, ïîñëå èìïîðòà, â ëåâîé ïàíåëè ñòîèò âçâåñòè äâà ôëàæêà: "anisotropic filtering" è "no level of details". Ôàêòè÷åñêè, ýòî îçíà÷àåò "èãíîðèðîâàòü íàñòðîéêè äåòàëèçàöèè èãðû è ïîêàçûâàòü ñïðåé âñåãäà ñ ìàêñèìàëüíûì êà÷åñòâîì.Çàïèñûâàåì ñïðåé. Ðàçìåð ôàéëà – 340 êá. Óðà! Íàø âûñîêîêà÷åñòâåííûé ñïðåé ãîòîâ. Êîíå÷íî, ñæàòèå DXT5 íåìíîãî èñïîðòèëî êàðòèíêó, íî âûãëÿäèò îíà â ñâîèõ 512õ512 âñå ðàâíî ëó÷øå, ÷åì, íàïðèìåð, òà æå êàðòèíêà â 256õ256 áåç ñæàòèÿ.Ïðèìåðû ñïðååâ áåç- è ñî ñæàòèåì. Êëèêíèòå äëÿ óâåëè÷åíèÿ:ÑïðåèÑëåâà: RGBA8888 (ò.å., áåç ñæàòèÿ), 256õ256, ðàçìåð ôàéëà 341 Êá.Ñïðàâà: DXT5 (ñæàòèå ñ ïîòåðÿìè), 512õ512, ðàçìåð ôàéëà - òå æå ñàìûå 341 Êá.





Ïàðó ñëîâ î ñæàòèè



  • RGBA8888 – ôîðìàò áåç ñæàòèÿ, êàæäàÿ òî÷êà èçîáðàæåíèÿ ïðåäñòàâëåíà êàíàëàìè öâåòà «RGB» è åù¸ êàíàëîì ïðîçðà÷íîñòè «A» (àëüôà-êàíàë). Ò.å., «8888» - îçíà÷àåò ïî 8 áèò íà êàíàë. Íà âûõîäå - 4 áàéòà íà òî÷êó.
  • RGB888 – êàê ïðåäûäóùèé, íî áåç ïðîçðà÷íîñòè. Òðè áàéòà íà òî÷êó.
  • BGR565 – öâåòîâûå êàíàëû ìàëîé òî÷íîñòè, áåç ïðîçðà÷íîñòè. Äâà áàéòà íà òî÷êó. ( ÷èñòîì âèäå íå îòîáðàæàåòñÿ â TF2)
  • DXT5 – òî÷êè êàðòèíêè ãðóïïèðóþòñÿ â áëîêè 4õ4, è öâåò òî÷åê áëîêîâ îïèñûâàåòñÿ âìåñòå äîâîëüíî ñòðàííûì àëãîðèòìîì. Íà âûõîäå ~ 1 áàéò íà òî÷êó.
  • DXT1 – ïî÷òè òî æå ñàìîå, ÷òî è DXT5, íî áåç êàíàëà ïðîçðà÷íîñòè. Íà âûõîäå ïîëó÷àåòñÿ ~ ? áàéòa íà òî÷êó.
  • Ôîðìàò DXT1 ñ îäíîáèòíîé àëüôîé, óâû, íå ïîääåðæèâàåòñÿ èãðîé (?), è î÷åíü æàëü, ÷òî òàê. (upd: êàæåòñÿ, source engine ñïåöèàëüíî èãíîðèðóåò âñå ôîðìàòû ñ îäíîáèòíîé ïðîçðà÷íîñòüþ).
Îñòàëüíûå ôîðìàòû ðàññìàòðèâàòü íåò ñìûñëà.À ðåàëüíî èñïîëüçóþòñÿ ëèøü RGBA8888, DXT5, DXT3 è DXT1.Âñå ôîðìàòû DXT îùóòèìî ïîðòÿò êàðòèíêó, íî âûèãðûø îò óâåëè÷åíèÿ ðàçðåøåíèÿ ñ ëèõâîé ïîêðûâàåò âðåä îò ïðîñòóïàþùèõ äåôåêòîâ - àðòåôàêòîâ ñæàòèÿ, êàê âû òîëüêî ÷òî ìîãëè çàìåòèòü ïî êàðòèíêå âûøå.Öèôðû äëÿ ñðàâíåíèÿ: êàðòèíêà 512õ512 áåç ñæàòèÿ – 1 Ìá (íå ãîäèòñÿ ïî ðàçìåðó äëÿ ñïðåÿ), â DXT5 – 256 Êá, â DXT1 – 128 Êá.Êàê æå âûáðàòü ôîðìàò? Êîðîòêî ãîâîðÿ, åñëè ó íàñ åñòü áîëüøàÿ êàðòèíêà (512õ512) ñ ïðîçðà÷íîñòüþ – âûáèðàåì DXT5, åñëè ïðîçðà÷íîñòè íåò – DXT1; íó, à âîò åñëè îðèãèíàë êàðòèíêè, èç êîòîðîé ìû äåëàåì ñïðåé, ðàçìåð èìååò 256õ256 è ìåíüøå - RGBA8888.Ñæàòèå RGB â DXT1..5 ðàáîòàåò ïðèìåðíî òàê: êàðòèíêà ðàçáèâàåòñÿ íà êâàäðàòèêè 4õ4. Äëÿ êàæäîãî êâàäðàòèêà âûáèðàþòñÿ äâà "êðàéíèõ" öâåòà, îáà ñîõðàíÿþòñÿ â ôîðìàòå RGB565. Èç êàæäîé èç 16 òî÷åê êâàäðàòà ñîõðàíÿþòñÿ ëèøü 2 áèòà - îíè óêàçûâàþò, íàñêîëüêî äàëåêî òåêóùèé öâåò îòñòîèò îò "êðàéíèõ" öâåòîâ. Ò.å., ôàêòè÷åñêè, âíóòðè êâàäðàòèêà ìîæåò áûòü òîëüêî 4 öâåòà, è òî, äâà èõ íèõ áóäóò ÷åì-òî ñðåäíèì ìåæäó "êðàéíèìè". Íà ïðàêòèêå, ýòî ïðèâîäèò ê çàìåòíûì èñêàæåíèÿì ëèøü òîãäà, êîãäà â îäíîé òî÷êå ñõîäÿòñÿ 3 è áîëåå ðàçëè÷íûõ "ÿðêèõ" öâåòà.  ðàçäåëå "ðàçíîå", íèæå, åñòü íåêîòîðûå äîïîëíèòåëüíûå ïîäðîáíîñòè î dxt-ñæàòèè.





Ïðîçðà÷íîñòü



"Ïðîçðà÷íîñòü" (è ïîëóïðîçðà÷íîñòü) õðàíèòñÿ â îòäåëüíîì ñëîå "A" (alpha-êàíàë). È, ñîîòâåòñòâåííî, çàíèìàåò ìåñòî... äî 1/4 â ðåæèìå áåç ñæàòèÿ è äî 1/2 âòîðîé â ðåæèìå ñî ñæàòèåì DXT3 è DXT5.Íåîáÿçàòåëüíîå: Ïðè ñîçäàíèè ñïðåÿ ñ ïðîçðà÷íîñòüþ õîðîøåé èäååé áóäåò îñòàâèòü âîêðóã èçîáðàæåíèÿ ðàìêó â 1, à ëó÷øå 2 ïðîçðà÷íûõ èëè ïî÷òè ïðîçðà÷íûõ ïèêñåëÿ.  ïðîòèâíîì ñëó÷àå, ó÷èòûâàÿ, ÷òî èíòåðïîëÿöèÿ òåêñòóð âèäåîêàðòîé íåïðåðûâíà, ìû óâèäèì íà ïðîòèâîïîëîæíîé ñòîðîíå ñïðåÿ ñëåäû îò êðàåâîé òåêñòóðû - ïîëîñêó, ñëàáóþ, íî âñ¸-òàêè ðàçëè÷èìóþ.Åù¸ íåîáÿçàòåëüíîå: Òàêæå íåïëîõîé ìûñëüþ áóäåò "÷èñòêà" íåâèäèìîãî èçîáðàæåíèÿ ïîä àëüôîé, à åùå ëó÷øå - çàïîëíåíèå åãî ïèêñåëÿìè öâåòîâ ñ ãðàíèöû ïðîçðà÷íîñòè-íåïðîçðà÷íîñòè. Òàêóþ îïåðàöèþ äåëàåò àâòîìàòè÷åñêè PhotoShop ïîñëåäíèõ âåðñèé; âûãëÿäèò îíà êàê õàðàêòåðíûå îðåîëû âîêðóã öâåòíûõ îáúåêòîâ ñ ïðîçðà÷íîñòüþ; îíè âèäíû, åñëè ñêðûòü àëüôà-êàíàë â VTFEdit (â ìåíþ - "ìàñêà" âêë/âûêë). Ýòà îïåðàöèÿ íóæíà äëÿ ãåíåðàöèè ìèïìàï ëó÷øåãî êà÷åñòâà, à òàê æå, ÷òîáû èç ïîä ìàñêè àëüôà-êàíàëà íå "âûëàçèëè" ñîñåäíèå öâåòà, ÷òî èíîãäà ñëó÷àåòñÿ íà êàðòèíêàõ ñ ðåçêîé ãðàíèöåé "àëüôû".Ðàçíèöà ìåæäó DXT3 è DXT5 ñîñòîèò òîëüêî â ñïîñîáå õðàíåíèÿ "àëüôû". È õîòÿ îáúåì ïðîçðà÷íîñòü çàíèìàåò îäèíàêîâûé â îáîèõ ñëó÷àÿõ, ñïîñîáû åå ïðåäñòàâëåíèÿ ðàçëè÷àþòñÿ.  ñëó÷àå DXT3 ìû èìååì äåëî ïðîñòî ñ 4-áèòíîé àëüôîé íà òî÷êó; íèêàêîãî ñæàòèÿ íå ïðèìåíÿåòñÿ.  DXT5 èñïîëüçóåòñÿ ìåõàíèçì èíòåðïîëÿöèè, ïîäîáíûé ñæàòèþ RGB òåêñòóð DXT1 - äëÿ êàæäîãî ýëåìåíòà èçîáðàæåíèÿ 4x4 ïèêñåëÿ âûáèðàþòñÿ äâà ïðåäåëüíûõ çíà÷åíèÿ ïðîçðà÷íîñòè, è äëÿ êàæäîé òî÷êè âíóòðè êâàäðàòà óêàçûâàåòñÿ îòíîñèòåëüíîå ðàññòîÿíèå äî ýòèõ êðàéíèõ çíà÷åíèé.  öåëîì, òåõíèêà DXT5 äà¸ò áîëåå ïëàâíûå òåíè, íî ìîãóò ñëó÷àòüñÿ "ðâàíûå" êðàÿ èçîáðàæåíèÿ ñïðåÿ, â íåêîòîðûõ ñëó÷àÿõ, - è âîò òîãäà íà ïîìîùü ïðèäåò DXT3.





Ìèïìàïû



Åñëè âçâåñòè ãàëî÷êó "Generate Mipmaps", ôàéë ñïðåÿ ðåçêî íà÷í¸ò çàíèìàòü ïðèìåðíî íà òðåòü áîëüøå ìåñòà.Ïî÷åìó? Äà ïîòîìó, ÷òî ýòà ãàëî÷êà ïîçâîëÿåò ñîõðàíèòü â òåëå ôàéëà ñïðåÿ åãî óìåíüøåííûå ñî ñãëàæèâàíèåì êîïèè. Îíè ïîêàçûâàþòñÿ èãðå, êîãäà èãðîê îòäàëÿåòñÿ îò òåêñòóðû. ×åì äàëüøå òî÷êà çðåíèÿ, òåì ìåíüøèé êàäð äîñòàåòñÿ èç îáîéìû è ïðåäúÿâëÿåòñÿ óñòàëîìó âçîðó èãðîêà. Ýòî íóæíî äëÿ òîãî, ÷òîáû êàðòèíêà â îòäàëåíèè íåïðèÿòíî íå ìåðöàëà ìóàðîì – êîòîðûé âèäåîêàðòà ïðîñòî íå ìîæåò óñòðàíèòü; âèäåîàêñåëåðàòîðû óìåþò ðàñòÿãèâàòü òåêñòóðû, íî íå óìåþò óìåíüøàòü èõ. Ïîýòîìó óìåíüøåíèå ïðîèçâîäèòñÿ çàðàíåå, åùå íà ýòàïå ïîäãîòîâêè ëþáîé òåêñòóðû â èãðå. Âûãëÿäèò ýòî âíóòðè íàøåãî ñïðåÿ ïðèìåðíî òàê:ÑïðåèÎáðàòèòå âíèìàíèå, êàðòèíêà óìåíüøàåòñÿ âïëîòü äî ðàçìåðà îäíîé òî÷êè.×òî äî ïîäãîòîâêè ìèïìàï â VTFEdit'å, íà ìîé âçãëÿä, ëó÷øèé ôèëüòð äëÿ ìèïìàïîâ – "Box" c ðåçêîñòüþ "none" èëè "sharpen soft". Äåëî â òîì, ÷òî àëãîðèòì "Box" ñîçäàí êàê ðàç äëÿ óìåíüøåíèÿ êàðòèíêè â êðàòíîå ÷èñëî ðàç, à èìåííî òàê ìèïìàïû è ãåíåðèðóþòñÿ: êàæäàÿ òåêñòóðêà â íèõ – óìåíüøåííàÿ âäâîå êîïèÿ ïðåäûäóùåé.Íóæíû ëè íàì ìèïìàïû? Èíîãäà äà, èíîãäà íåò. Åñëè ìû ïðîñòî äåëàåì êà÷åñòâåííûé ñïðåé 512õ512 – ìèïìàïû íóæíû, îí áóäåò ëó÷øå ñìîòðåòüñÿ â èãðå. Íî ìû ìîæåì ñäåëàòü ëîâêèé «õîä êîí¸ì», îòêëþ÷èòü ìèïìàïû (è íå èñïîëüçîâàòü ïðîçðà÷íîñòü) - à ýòî ïîçâîëèò çàñóíóòü â ñïðåé èçîáðàæåíèå óæå ðàçìåðîì íå 512õ512, à 1024õ512!  öåëîì, ñåé õîä äàñò âîò ÷òî: ÷óòü-÷óòü óëó÷øèòñÿ êà÷åñòâî êàðòèíêè âáëèçè, íî óõóäøèòñÿ åå âèä èçäàëåêà. Íóæíî ëè ýòî íàì? Ðåøàéòå ñàìè.Êðîìå òîãî, ìèïìàïû èñïîëüçóþòñÿ â ñîçäàíèè ñïðååâ-ïåðåëèâà÷åê, íî îá ýòîì äàëüøå.Ïîäðîáíîñòè î íàçíà÷åíèè ìèìïàï: http://ru.wikipedia.org/wiki/Mipmap





Ñïðåè ñ àíèìàöèåé



Íè÷åãî ñëîæíîãî. Ïðîñòî îòìåòüòå íåñêîëüêî ôàéëîâ ïðè èìïîðòå â VTFEdit – è ïîëó÷èòå ñâîþ àíèìàöèþ.Íàø ãëàâíûé «âðàã» - ðàçìåð ôàéëà. Ìû ìîæåì óìåíüøèòü åãî, ïðèìåíèâ ñæàòèå (ýêîíîìèÿ 3/4 ðàçìåðà) è îòêëþ÷èâ mipmaps (ýêîíîìèÿ ~? ðàçìåðà ôàéëà). Ìîæíî èçáàâèòñÿ è îò ïðîçðà÷íîñòè, ÷òîáû ïîëó÷èòü âïîëòîðà ðàçà áîëüøå ìåñòà, åñëè ýòî óìåñòíî íà êîíêðåòíîé êàðòèíêå, ðàçóìååòñÿ. Èëè óìåíüøèòü ðàçìåð êàäðà ñ 512õ512 äî 256õ256 èëè äàæå åùå íèæå.Âîò íåêîòîðûå öèôðû, ïîëó÷åííûå îïûòíûì ïóòåì, îíè ïîìîãóò â ñîçäàíèè àíèìàöèè:Òåìï àíèìàöèè – 5 êàäðîâ â ñåêóíäó. Êàæåòñÿ, ýòî ÷èñëî èçìåíèòü íåëüçÿ. (?)
  • Àíèìàöèÿ 512õ512, ñæàòèå DXT1, áåç àëüôû, áåç ìèïìàï – âëàçèò 3 êàäðà.
  • Àíèìàöèÿ 256õ256, ñæàòèå DXT1, áåç àëüôû, áåç ìèïìàï – âëàçèò 15 êàäðîâ (3 ñåêóíäû «âèäåî»).





Ñïðåè ñ «ïåðåëèâà÷êîé»



Âû äîëæíî áûòü âèäåëè òàêèå ñïðåè – ïîäõîäèøü ê íèì áëèæå, è êàðòèíêà èçìåíÿåòñÿ.Êàê ýòî ðàáîòàåò?  ìèïìàïå, âî âñåõ å¸ «êàäðàõ», êàðòèíêà äîëæíà áûòü îäíà è òà æå – òîëüêî ðàçíîãî ðàçìåðà. Íî åñëè ìû çàìåíèì îäèí èç êàäðîâ – ïîëó÷èì èìåííî òî, ÷òî õîòåëè.Çäåñü íàì ïîòðåáóþòñÿ íåêîòîðûå ñïåöèàëüíûå óòèëèòû.
  • PhotoShop – ìû áóäåì èñïîëüçîâàòü ïëàãèí ê íåìó.
  • Nvidia Photoshop Plugin – ïîçâîëÿåò Ôîòîøîïó çàïèñàòü êàðòèíêó â ôîðìàòå dds – íàø ñïðåé â ôîðìàòå òåêñòóðû ñ ìèïìàïàìè.
  • Microsoft DirectX SDK – èç íåãî èñïîëüçóåòñÿ òîëüêî óòèëèòà DirectX Texture Tool, óäîáíîå ñðåäñòâî äëÿ çàìåíû mipmap-îâ.
  • VPKTool – êîíâåðñèÿ èç dds-ôîðìàòà â ôîðìàò vtf.
Îõî-õî! Íà ýòîì ìåñòå ìíå âäðóã ñòàëî ëåíèâî ïèñàòü; ëó÷øå ïîñìîòðèòå êàðòèíêè â àíãëèéñêîì ãàéäå – âîò òóò - http://tf2.gamebanana.com/tuts/9038 (çàìåòêà «Distance Fading Sprays»). Òàì æå åñòü ññûëêè íà âñå íåîáõîäèìûå óòèëèòû.(ß ïîçæå íàïèøó èíñòðóêöèþ çäåñü, íî ïîêà å¸ íåò...)





Âñÿêî ðàçíî



VPKTool íå óñòàíàâëèâàåò ôëàã “no level of details”, ïîýòîìó, åñëè ýòîò ôëàã íóæåí, ñïðåé íóæíî îòêðûòü â VTFEdit, è óñòàíîâèòü åãî â í¸ì. Êàðòèíêà ïðè ýòîì íå èçìåíÿåòñÿ è íå ïîðòèòñÿ. Ýòîò ôëàã íóæåí, ÷òîáû ïîêàçûâàòü ñïðåé ñ ìàêñèìàëüíûì êà÷åñòâîì, äàæå åñëè èãðîê ñíèçèë ðàçðåøåíèå òåêñòóð â íàñòðîéêàõ èãðû.Êñòàòè, à âû çíàåòå, ÷òî äåëàþò èãðû, êîãäà âû ñíèæàåòå äåòàëèçàöèþ òåêñòóð â íàñòðîéêàõ âèäåî-èãð? Îíè ïðîñòî îòáðàñûâàþò ñàìûå áîëüøèå èç íàáîðà ìèïìàïîâ! Áîëüøèå ìèïìàïû íå çàãðóæàþòñÿ â ïàìÿòü; çàãðóæàþòñÿ ëèøü ìàëåíüêèå ìèïìàïû - ýòî ýêîíîìèò ïàìÿòü êîìïüþòåðà è âèäåîêàðòû.Êàðòèíêà äëÿ ñïðåÿ ìîæåò èìåòü ëþáîé ðàçìåð, âàæíî ëèøü, ÷òîáû èòîãîâûé ðàçìåð ôàéëà íå ïðåâûøàë 500 Êá, à êàæäàÿ èç ñòîðîí áûëà êðàòíà ñòåïåíè äâîéêè, ò.å., 64, 128, 256, 512, 1024 è ò.ä. Îäíàêî, â èãðå ñïðàéò ñïðåÿ âñå ðàâíî áóäåò ðàñòÿíóò äî ôîðìû êâàäðàòà; à ïðÿìîóãîëüíèê ìîæíî îòîáðàçèòü òîëüêî èñïîëüçóÿ àëüôà-êàíàë, ïðîçðà÷íîñòü. Íî ìû ìîæåì èñïîëüçîâàòü óæå óïîìÿíóòûé ðàçìåð 1024õ512 (èëè 512õ1024) ÷òîáû óâåëè÷èòü ðàçðåøåíèå õîòÿ áû ïî îäíîé èç ñòîðîí, è êà÷åñòâî êàðòèíêè â öåëîì - òîæå. Åñòü è íåêîòîðûå "ãëþêè" - èíîãäà èãðà âñ¸-òàêè ïîêàçûâàåò íå-ðàâíîñòîðîííèé ñïðåé êàê ïðÿìîóãîëüíèê, à íå êâàäðàò, íî ýòî ïðîèñõîäèò ëèøü íà ñòàðûõ âèäåîêàðòàõ â íèçêîé äåòàëèçàöèè, äà è òî ðåäêî upd: êàê îêàçàëîñü, ýòî ïðîèñõîäèò ïðè íàñòðîéêå â îïöèÿõ âèäåî... "multicore rendering" : OFF, ò.å., øàíñ ïîêàçàòü "íåïðàâèëüíûé" ñïðåé âûøå, ÷åì ïðåäñòàâëÿëîñü âíà÷àëå, è, âîçìîæíî, ñòîèò äåéñòâèòåëüíî îãðàíè÷èòüñÿ 512õ512. Ïðèìåð îòîáðàæåíèÿ ñèëüíî-íå-ðàâíîñòîðîííåãî (4096õ128) ñïðåÿ ñ ðàçíûìè íàñòðîéêàìè:ÑïðåèÔîðìàòû ñ ìàëîé áèòíîñòüþ íà êàíàë, íå÷òî â ðîäå RGBA4444 è RGB565 (rgb565 âîîáùå íå îòîáðàæàåòñÿ, êàê îêàçàëîñü) íåìíîãî íåïðàâèëüíî èíòåðïðåòèðóþòñÿ èãðîé - öâåò íå ïîëó÷àåò ïîëíóþ ÿðêîñòü, à àëüôà - ïîëíóþ ïðîçðà÷íîñòü.  ðåçóëüòàòå êàðòèíêà ìîæåò âûãëÿäåòü áëåäíîâàòî, è ñêâîçü åå äàæå íåïðîçðà÷íûå ýëåìåíòû âèäíî íåìíîãî ñòåíó ïîä íåé.DXT - ôîðìàò ñæàòèÿ ñ ïîòåðÿìè. Ò.å., êàðòèíêà ïîðòèòñÿ ïðè ñæàòèè. Òàê âîò, ðàçíûå óòèëèòû êîíâåðòèðóþò êàðòèíêó â ýòîò ôîðìàò ñ îùóòèìî ðàçíûì êà÷åñòâîì. Ñàìûå ëó÷øèå ðåçóëüòàòû äàë... VTFEdit! Êàæåòñÿ, îí èñïîëüçóåò ñîâðåìåííûé äâèæîê nVidia c àëãîðèòìîì Ñêâèøà (Squish) - ôîòîøîï ñ íâèäèå-âñêèì ïëàãèíîì äàåò ðåçóëüòàòû òî÷ü-â-òî÷ü êàê ó íåãî. Íà âòîðîì ìåñòå - ìèêðîñîôòîâñêàÿ êîíâåðòèëêà "DirectX Texture Tool" èç èõíåãî SDK. Òðåòüå ìåñòî äåëÿò âñÿêèå óòèëèòû ñàìîäåëüùèêîâ è õâàëåííàÿ (íî óñòàðåâøàÿ) nVidia-âñêàÿ óòèëèòà "nvcompress" (2007 ã.), ïîêàçàâøàÿ íà òåñòàõ îòâðàòèòåëüíûå ðåçóëüòàòû. Íåïëîõî ñæèìàåò è ãóãëåâñêàÿ óòèëèòà crunch (2012 ã.). À ïî ñëóõàì, ñàìîå êà÷åñòâåííîå ñæàòèå ñîáèðàþòñÿ âûäàòü ÿïîíöû, ñìåøèâàÿ èñïîëüçîâàíèå íåñêîëüêèõ àëãîðèòìîâ ñðàçó, è âûáèðàÿ äëÿ êàæäîé èç ãðóïï òî÷åê ëó÷øèé... Íî íà ïîïðîáîâàòü îíè ýòî ÷óäî íå äàþò, ò.ê. ñîáèðàþòñÿ èñïîëüçîâàòü åãî â ñâîåé íîâîé PlayStation.Ïî÷åìó ÿ óäåëÿþ ýòîìó ñæàòèþ ñòîëüêî âíèìàíèÿ? Äà ïîòîìó, ÷òî õî÷ó ïîëó÷èòü èäåàëüíûé ðåçóëüòàò, ñàìûé ëó÷øèé, êàêîé òîëüêî âîçìîæíî. ;) Îäíàêî, êàæåòñÿ, äî èäåàëà åù¸ äàëåêî. Ïðèìåðû ñæàòèÿ ñëîæíîãî äëÿ DXT êîìïðåññèè èçîáðàæåíèÿ, êëèêíèòå äëÿ óâåëè÷åíèÿ:ÑïðåèÏîäðîáíîñòè î ñæàòèè âû ìîæåòå óçíàòü çäåñü: http://www.gamedev.ru/code/articles/DDS_DXT1_DXT3_DXT5Ôëàæîê PointSample â VTFEdit îçíà÷àåò "îòêëþ÷èòü ñãëàæèâàíèå òåêñòóð". Ò.å., êîãäà ìû òêíåìñÿ íîñîì â ñïðåé ñ òàêèì ôëàãîì, ìû óâèäèì íå ïðèâû÷íóþ "ðàçìàçíþ", à "êâàäðàòèêè", êàê â ñòàðûõ èãðàõ âðîäå Doom. Èíîãäà ýòîò ôëàæîê áûâàåò ïîëåçåí äëÿ ñïðååâ íèçêîãî ðàçðåøåíèÿ, íàïðèìåð, ñ àíèìàöèåé.Ïðèìåð - êëèêíèòå äëÿ óâåëè÷åíèÿ:ÑïðåèÇäåñü èñïîëüçîâàí îäèí è òîò æå êðîøå÷íûé ñïðåé ðàçìåðîì 32õ32 ïèêñåëÿ. Ñòðîãî ãîâîðÿ, ó ýòèõ ñïðååâ äàæå ôàéëû îäèíàêîâû - ïî÷òè! - îíè îòëè÷àþòñÿ ëèøü îäíèì áèòîì, êîòîðûé êàê ðàç îçíà÷àåò âçâåäåííûé ôëàæîê "Point Sample": ñëåâà îí âûêëþ÷åí, ñïðàâà - âêëþ÷åí.Âîîáùå, vtf-ôîðìàò, êàê ÿ åãî ïîíèìàþ, ýòî êîíòåéíåð â êîòîðîì ëåæèò îäíà èëè íåñêîëüêî dds-òåêñòóð è êîå-êàêèå äîïîëíèòåëüíûå ôëàãè. À vmt - êàêîå-òî äîïîëíèòåëüíîå îïèñàíèå, è, ïîñêîëüêó ìû â êîíå÷íîì èòîãå âòàñêèâàåì vtf-ñïðåé íå çàìåíîé ôàéëà, à îòêðûâàåì åãî â èãðå, vmt íå íóæåí.Ïëàãèí ê Âèíäå "VTF Shell Extensions" ïîçâîëÿåò âèäåòü ïðåâüþøêè ñïðååâ â êàòàëîãàõ ôàéëîâ, ÷òî áûâàåò âåñüìà ïîëåçíî.ÑïðåèÑêà÷àòü åãî ìîæíî òóò: https://developer.valvesoftware.com/wiki/VTF_Shell_Extensions Áûñòðûé ñïîñîá ñäåëàòü ñïðåé èç êîìèêñà èëè êàðèêàòóðû:http://steamcommunity.com/sharedfiles/filedetails/?id=317550128





Íåóäà÷íûå îïûòû



Íåóäà÷åé çàêîí÷èëñÿ îïûò ñ YCoCg-êîìïðåññèåé. Èäåÿ òàêîâà - èñïîëüçóåòñÿ DXT5, íî äëÿ íåïðîçðà÷íûõ êàðòèíîê. Êàíàë ïðîçðà÷íîñòè çàìåùàåòñÿ, ãðóáî ãîâîðÿ, äîïîëíèòåëüíûì êàíàëîì öâåòà. Ðåçóëüòàò - ïðàêòè÷åñêè ïîëíîå îòñóòñòâèå àðòåôàêòîâ ñæàòèÿ. Òàêèå DDS òåêñòóðû óìååò çàïèñûâàòü ñïåöèàëüíûé ïëàãèí ê Gimp'ó. Îäíàêî, ïðåîáðàçîâàòü â VTF ýòîò DDS íå ïîëó÷èëîñü. TF2 íå ñìîã âîñïðîèçâåñòè òåêñòóðó. Ìîæåò áûòü, åñòü êàêîé-òî ñïîñîá ïîäñóíóòü òàêèå ôàéëû èãðå, à ìîæåò, äâèæîê TF2 ñîâñåì íå ïîääåðæèâàåò òåêñòóðû òàêîãî òèïà.Òàêæå íåóäà÷íî çàâåðøèëñÿ ýêñïåðèìåíò ïî ñîçäàíèþ 1024õ512 òåêñòóðû ñ ìèïìàïàìè. Èäåÿ áûëà çàïèñûâàòü dds-òåêñòóðó ñ ìèïìàìàìè, íî íå ñ ïîëíûì íàáîðîì, à ñêàæåì ëèøü ñ äâóìÿ-òðåìÿ. Ýòî ïîçâîëèëî áû âòèñíóòñÿ â îãðàíè÷åíèå íà ðàçìåð ôàéëà, íåñêîëüêî óëó÷øèâ êà÷åñòâî ñïðåÿ âäàëåêå, è òàêæå - ñîçäàòü êà÷åñòâåííûé ñïðåé-"ïåðåëèâà÷êó". È îò÷àñòè èäåÿ äàæå ñðàáîòàëà... ñïðåé çàãðóçèëñÿ â èãðó, íî... Íî, âî-ïåðâûõ, VPKTool êðèâî åãî ñêîíâåðòèðîâàë, ñ êàêèì-òî ìóñîðîì ñâåðõó. Âî-âòîðûõ, â èãðå ïîêàçûâàëèñü ìîè ìèï-ìàïû (äà, ñ "ìóñîðîì"), íî êðîìå íèõ, ïî÷åìó-òî âûëàçèëè è äîïîëíèòåëüíûå, ñîäåðæàùèå óæå ïîëíóþ ìåøàíèíó ïèêñåëåé. Ìîæåò áûòü, Valve íå ïîíèìàåò ôîðìàò ñ îãðàíè÷åííûì ê-âîì ìèïìàï?Òåîðåòè÷åñêè âîçìîæíî ñîçäàòü àíèìèðîâàííóþ "ïåðåëèâà÷êó". Íî... êàê? Íè îäíà èç óòèëèò, êîòîðûìè ÿ ðàñïîëàãàþ, íå ïîçâîëÿåò óïàêîâàòü àíèìàöèþ èç íåñêîëüêèõ êàäðîâ dds íàïðÿìóþ â vtf...



˜˜˜˜˜˜˜ dle 10.6˜˜˜˜˜˜ ˜˜˜˜˜˜˜˜˜
Ïîäåëèòüñÿ
VK Telegram