Pinalalawak ng D7VK 1.4 ang compatibility ng laro ng Direct3D 5, 6, at 7 kumpara sa Vulkan, inaayos ang mga pangunahing bug sa graphics tulad ng transparency ng color key

  • Pinalalawak ng D7VK 1.4 ang compatibility ng Direct3D 5, 6 at 7 na laro kumpara sa Vulkan, inaayos ang mga pangunahing bug sa graphics tulad ng transparency ng color key.
  • Ang layer ay sumasama sa DXVK at Wine, na nagmana ng kanilang mga opsyon sa configuration at HUD, ngunit pinapanatili ang isang minimalistang diskarte sa DDraw at mga nakaraang API.
  • Pinalalakas ng DXVK 1.4 ang ecosystem sa pamamagitan ng mga pagpapabuti sa D3D11 at DXGI, mga pag-optimize sa pagganap, at mas mahusay na pamamahala ng mapagkukunan sa mga modernong laro.
  • Ang kombinasyon ng D7VK at DXVK sa Wine ay nagbibigay-daan sa iyong maglaro ng napakaraming klasiko at kasalukuyang mga laro sa Linux na may napakakompetitibong pagganap.

D7VK 1.4

Kung naglalaro ka sa Linux at mahilig ka sa arkeolohiya ng video game, ang pangalan Malamang na magiging mas pamilyar sa iyo ang D7VK 1.4.Ang maliit ngunit makapangyarihang translation layer na ito ay naging mahalagang bahagi para sa pagtangkilik sa mga klasikong Direct3D 5, 6, at 7 na mga titulo sa pamamagitan ng Vulkan, karaniwang ginagamit ang Wine o Proton bilang basehan. Bukod pa rito, dumarating ito sa konteksto kung saan ang DXVK ay umunlad din sa sarili nitong bersyon 1.4, na nagpapalakas sa buong DirectX → Vulkan translation ecosystem.

Sa mga sumusunod na linya ay susuriin natin Ang pinakamahalagang mga bagong tampok ng D7VK 1.4, kung paano ito umaangkop sa loob ng ecosystem ng DXVK/WineTatalakayin natin kung ano ang iniaalok nito sa mga tuntunin ng compatibility at performance sa mga lumang laro, ang mga limitasyon nito, at kung paano mo ito masisimulang gamitin sa iyong Linux system (at maging sa Windows, kahit na para sa pangalawang gamit). Tatalakayin din natin sandali ang mga pangunahing tampok ng DXVK 1.4, dahil marami sa mga ideya at konsepto nito ay pareho at komplementaryo.

Ano nga ba ang D7VK at anong problema ang nalulutas nito?

Ang D7VK ay isang Ang layer ng pagsasalin na nakabatay sa Vulkan ay idinisenyo upang magpatakbo ng mga legacy na 3D na aplikasyon at laro na gumagamit ng Direct3D 7, 6, at 5 sa Linux gamit ang Wine. Sa halip na ipatupad ang buong stack ng Direct3D at DirectDraw mula sa simula, umaasa ang D7VK sa backend ng DXVK na D3D9 at sa implementasyon ng DDraw ng Wine (o kahit sa native na Windows) upang magsilbing minimalistang proxy sa pagitan ng dalawa.

Sa pinasimpleng pananalita, masasabi natin na Ang D7VK ay gumaganap bilang isang "tagapagsalin" sa pagitan ng mga lumang laro ng Direct3D 5/6/7 at DXVK.na siya namang isinasalin ang lahat sa Vulkan. Sa ganitong paraan, maraming klasikong laro ang maaaring samantalahin ang mga benepisyo ng Vulkan (mas kaunting gastos, mas mahusay na paggamit ng CPU, mas mahusay na pamamahala ng mapagkukunan) nang hindi kinakailangang hawakan ng mga developer ang kahit isang linya ng code.

Mahalagang maunawaan iyon Ang pangunahing layunin ng D7VK ay mag-alok ng disenteng compatibility para sa D3D7.Ang pagdaragdag ng "eksperimentong" suporta para sa D3D6 at D3D5, dahil habang tumatagal ang pag-usad mo sa kasaysayan ng DirectX, mas nagiging "sumpa" ang mga API at mas nagiging bihira ang kanilang interaksyon sa DDraw at GDI.

Arkitektura at Saklaw ng D7VK

Ang arkitektura ng D7VK ay batay sa isang napaka-praktikal na pamamaraan: Umaasa ito sa DXVK (lalo na sa D3D9 backend) at sa DDraw ng Wine. para bumuo ng manipis na layer na magpapatupad ng kung ano ang kinakailangan mula sa D3D7/6/5. Sa halip na muling isulat ang DirectDraw at lahat ng API bago ang D3D8, isinasama nito ang pinakamababa upang ang mga laro ay makapag-ugnayan nang tama sa DXVK.

Nangangahulugan ito na Hindi ito nilayong takpan ang lahat ng pinakamadilim na sulok ng DDrawTotoo ito lalo na para sa mga application na walang-kahihiyang hinahalo ang D3D sa GDI o iba't ibang bersyon ng DirectX. Sa ganitong mga kaso, ang may-akda mismo ng D7VK ay buong pusong inirerekomenda ang paggamit ng WineD3D, na, bagama't medyo hindi gaanong mahusay sa mga tuntunin ng pagganap, ay nagpapatupad ng halos lahat ng bagay at mas mahusay na pinangangasiwaan ang mga "sumpa" na interaksyon.

Sa pamamagitan ng pag-asa sa DXVK para sa D3D9, Ang lahat ng opsyon sa pagsasaayos ng DXVK para sa D3D9 ay naaangkop sa D7VKkabilang ang mga parameter tulad ng mga limitasyon ng FPS, kontrol ng VSync, isang HUD na may mga istatistika ng pagganap, at mga panloob na pagsasaayos ng pag-uugali. Kaya naman, minana ng D7VK ang malaking bahagi ng kapanahunan at pagganap na nakamit ng DXVK sa mga nakaraang taon.

Mga pangunahing bagong tampok ng D7VK 1.4

Ipinakikilala ng D7VK bersyon 1.4 Isang serye ng mga pangunahing pagpapabuti na naglalayong maging tugma sa mga partikular na laro at pag-aayos ng maliliit na detalye ng pag-uugali ng graphicsWalang radikal na pagbabago sa arkitektura, ngunit mayroong isang hanay ng mga pagsulong na, kung pagsasama-samahin, ay ginagawang ganap na nalalaro ang ilang mga "problemadong" pamagat.

Suporta sa kulay ng pangunahing transparency

Isa sa mga magagandang tampok ng D7VK 1.4 ay ang implementasyon ng suporta para sa transparency ng color key, isang pamamaraan na malawakang ginagamit noong mga unang araw ng Direct3D bilang isang murang alternatibo sa alpha testing. Sa halip na mga alpha channel, isang partikular na kulay ang ginamit upang markahan ang mga transparent na pixel, na sa pamamagitan ng hindi kumpletong mga pagsasalin ay nauwi sa pagbuo ng mga opaque color block kung saan dapat mayroong transparency.

Dahil sa gawain ng komunidad, lalo na ng @CkNoSFeRaTU, kaya na ngayon ng D7VK na pangasiwaan nang tama ang ganitong uri ng transparency ng kulay ng key.Inaayos nito ang mga artifact na may solidong kulay na lumabas sa mga laro tulad ng Arx Fatalis, Messiah, Darkstone, Divine Divinity, Mortal Kombat 4 at marami pang ibang laro na gumamit ng graphical trick na ito noong panahong iyon.

Pinahusay na interoperability sa DDraw at mga larong "malalaki ang ulo"

Ang isa pang larangan kung saan nakamit ang makabuluhang pag-unlad ay sa Pagsasama-sama ng interoperability sa pagitan ng DDraw at ng iba't ibang sinusuportahang bersyon ng D3DAng mga lumang DirectDraw at Direct3D API ay pinaghalo sa mga kakaibang paraan, at kadalasan ang mga laro ay may mga bagay na, sa pananaw ngayon, ay walang katuturan.

Sa D7VK 1.4, isang malaking halaga ng trabaho ang inilaan para sa pag-isahin at palakasin ang paraan ng pamamahala ng mga interaksyong ito sa pagitan ng DDraw at D3D7/6/5Nangangahulugan ito na ang mga laro tulad ng Plants vs Zombies at iba pang mga laro ng PopCap mula sa parehong panahon ay naging maayos na gumagana mula sa pagiging hindi matatag o hindi nalalaro.

Dahil sa mga kontribusyon mula sa komunidad, naitama rin ang mga isyung ito. mga bug na may kaugnayan sa pag-instantiate ng DDraw sa pamamagitan ng IClassFactoryDahil sa depektong ito, hindi gumana ang mga laro tulad ng Re-Volt at Sea Dogs. Ngayon, puwede nang laruin ang mga larong ito, na lalong nagpapalawak sa koleksyon ng mga klasikong laro na maaaring patakbuhin sa D7VK nang walang problema.

Mga pagpapabuti sa lalim, paglilinis, at mga pag-aayos para sa mga partikular na laro

Paggamit ng mga pahiwatig na ibinigay ng mga kolaborator tulad ng @Trass3r, sa D7VK 1.4, naidagdag ang suporta para sa mga depth clear na sinimulan mula sa DDraw.Ang feature na ito, na maaaring mukhang espesipiko, ay mahalaga para sa ilang laro upang maayos na mapamahalaan ang kanilang depth buffer at hindi magpakita ng mga glitch na lumalaban sa z o mga elementong hindi maganda ang pagkakaguhit.

Bukod pa rito, isinama na rin ito paunang suporta para sa malalimang pagsulat muli, na kasalukuyang nakatuon sa format na D16Ang pagpapabuting ito ay nagresulta sa pagwawasto ng mga problema sa bara ng pinagmumulan ng liwanag sa mga larong tulad ng Star Wars Episode I: Racer, kung saan dati ay hindi makatotohanan ang paggana ng mga ilaw o sadyang hindi nagtatago kung kailan dapat.

Kasama rin sa talaan ng pagbabago ng D7VK 1.4 Pag-aayos ng pag-crash sa simula ng V-Rally 2 Expert Editionpati na rin ang ilang mga pag-aayos para sa mga "corner cases" na maaaring magdulot ng mga pag-crash, pag-freeze, o iba pang kakaibang pag-uugali sa mga lumang titulo ng D3D o DDraw. Kabilang sa mga larong nakinabang ay ang Revenant, Powerslide, at Slave Zero, bilang karagdagan sa isang partikular na workaround para sa isang potensyal na pag-crash kapag bumalik sa pangunahing menu sa GTA 2.

Pangunahing pag-install at paggamit ng D7VK

Medyo simple lang ang pagpapagana ng D7VK sa isang Wine prefix: kopyahin lang ang file ddraw.dll sa tabi ng laro o application na maaaring i-execute at pagkatapos ay i-configure ang naaangkop na mga override sa Wine upang gamitin ang DLL na iyon bilang pangunahing utos.

Partikular, sa Kailangang magdagdag ang winecfg ng override na “native, builtin” para sa library ddraw Sa tab na Mga Aklatan, siguraduhing tukuyin ang eksaktong pagkakasunud-sunod. Hindi mo kailangang mag-alala tungkol sa arkitektura, dahil ang DDraw at ang mga mas lumang katumbas nitong D3D ay palaging eksklusibong 32-bit.

Mayroon ding isang alternatibong landas ng pag-deploy na kinakailangan para sa ilang mga espesyal na laro tulad ng GTA 2, StarLancer o Midtown Madness 2Sa ganitong kaso, dapat palitan ang pangalan. ddraw.dll mula sa sistema ng Alak patungo sa ddraw_.dll at kopyahin ang ddraw.dll mula sa D7VK patungo sa direktoryo system32 o syswow64 sa loob ng prefix, ayon sa bitness nito. Susubukan munang i-load ng D7VK ddraw_.dll mula sa kasalukuyang landas bago bumaling sa ddraw.dll ng sistema, kaya pinapayagan ang parehong bahagi na magsabay.

Maaari ring gamitin ang D7VK sa Windows, bagaman Hindi ito ang pangunahing plataporma kung saan ito binuo o sinubukanSa ganitong kaso, kopyahin lang ddraw.dll kasama ng executable ng laro, ngunit lubos na hindi inirerekomenda na ilagay ito sa mga direktoryo ng Windows system, dahil kinakailangan ang isang tunay na implementasyon ng DDraw at maaaring magkaroon ng malubhang pinsala sa instalasyon.

DXVK 1.4: konteksto at mga sinerhiya kasama ang D7VK

Ang kasaysayan ng D7VK ay may malakas na kaugnayan sa ang ebolusyon ng proyektong DXVK mismo, na siyang pangunahing gulugod ng Direct3D → Vulkan translation para sa mas modernong mga laro (lalo na ang Direct3D 10 at 11). Ang Bersyon 1.4 ng DXVK ay kumakatawan sa isang mahalagang hakbang na nakaapekto rin sa kung paano isinasama ang mga layer tulad ng D7VK o D8VK.

Na-update ang DXVK 1.4 ang Direct3D 11 interface hanggang sa bersyon 11.4 na kasama sa Windows 10 (build 1903)Dahil dito, nalutas ang mga partikular na problema sa mga laro tulad ng Plants vs. Zombies: Battle for Neighborville. Ang mga bagong API na ipinakilala sa D3D11.4 ay bahagyang ipinatupad lamang, na nakatuon sa mga tampok na may katuturan sa loob ng umiiral na functionality ng Vulkan.

Ang DXGI interface hanggang bersyon 1.5, kabilang ang kakayahang suriin ang suporta ng HDR (bagaman wala pa ring katutubong output ng HDR). Bukod pa rito, idinagdag ang mga pamamaraan ng interaksyon ng DXGI-GDI na, bukod sa iba pang mga bagay, ay nagpadali sa pagsisimula ng mga kliyente tulad ng Rockstar Game Launcher, basta't may kasamang mga partikular na pag-aayos ng Direct2D sa loob ng Wine.

Pagganap at mga panloob na pagpapabuti ng DXVK 1.4

Sa usapin ng pagganap, ang DXVK 1.4 ay nagdala ng ilang mga kawili-wiling pag-optimize na Naaapektuhan nila ang maraming laro ng Direct3D 11, na nagpapabuti sa pagkalikido at binabawasan ang load ng CPU.Isa sa mga pinakakapansin-pansin ay ang default na pag-activate ng opsyon d3d11.allowMapFlagNoWait, na nagpapataas ng performance sa ilang partikular na titulo sa pamamagitan ng pagpapahintulot sa mas mahusay na pamamahala ng ilang partikular na naka-map na resources.

Nalutas din ang mga ito ang mga problemang pumigil sa The Witcher 3 na mailunsad nang tamaInayos ang pag-uugali ng pag-synchronize upang mas maging katulad ng sa orihinal na D3D11 controller. Bukod pa rito, tinugunan ang mga potensyal na bottleneck sa mga larong labis na gumagamit ng mga deferred context, tulad ng Dark Souls III at Sekiro: Shadows Die Twice.

Malaki ang naging pagbuti ng DXVK 1.4 sa pagsubaybay sa panloob na mapagkukunan, bahagyang binabawasan ang pagkonsumo ng CPU sa pamamagitan ng pamamahala ng mga buffer, texture, at iba pang mga elementong grapiko. Ang lahat ng panloob na gawaing ito, bagama't hindi laging nakikita ng gumagamit, ay naglalatag ng pundasyon para sa mas malinis na integrasyon sa mga layer tulad ng D7VK, na nangangailangan ng pinakamatatag na posibleng D3D9/D3D11 backend.

Praktikal na pag-install ng DXVK 1.4 sa Wine

Para sa mga gustong direktang gumamit ng DXVK sa Wine, ang karaniwang daloy ng trabaho ay binubuo ng I-download ang stable na DXVK package, i-extract ito, at patakbuhin ang installation script nito sa ibabaw ng nais na Wine prefix.Halimbawa, sa bersyon 1.4, magagawa mo ang ganito:

Una, ang file ay dina-download gamit ang isang tool tulad ng wget mula sa opisyal na link ng GitHub:

wget https://github.com/doitsujin/dxvk/releases/download/v1.4/dxvk-1.4.tar.gz

Pagkatapos ay idi-decompress ang pakete gamit ang tar at i-access ang hindi naka-compress na folder:

tar -xzvf dxvk-1.4.tar.gz
cd dxvk-1.4

Panghuli, ang script ng pag-install ay pinapatakbo laban sa aktibong prefix ng Wine gamit ang isang simpleng sh setup-dxvk.sh install na may mga naaangkop na pribilehiyo:

sudo sh setup-dxvk.sh install

Pinapayagan din ng script ang Gamitin ang implementasyon ng DXGI ng Wine sa halip na ang mga DXVK. Kung nais mong gamitin ang vkd3d para sa mga laro ng Direct3D 12 at DXVK para sa Direct3D 11, magagawa mo ito sa pamamagitan ng pagpapatakbo ng:

setup-dxvk.sh install --without-dxgi

Isa pang praktikal na opsyon na iniaalok ng script ay i-install ang mga DLL bilang mga simbolikong link (gamit ang opsyon --symlink), na lubos na nagpapadali sa sabay-sabay na pag-update ng maraming prefix ng Wine: sapat na ang pag-update ng isang sentral na kopya ng DXVK.

Kung titingnan ang kabuuan, ang D7VK 1.4 at DXVK 1.4 Pinapalakas nila ang isang ekosistema kung saan Ang Linux at Wine ay itinatatag ang kanilang mga sarili bilang isang napakaseryosong plataporma para sa paglalaro ng parehong mga klasikong Direct3D 5/6/7 at mga modernong titulo ng D3D10/11.Nag-aalok ng pagganap na kadalasang nakakagulat na halos kapantay ng Windows at, higit sa lahat, lalong lumalawak na pagiging tugma sa mga makasaysayang API na tila nakatakdang kalimutan.