vkd3d គឺជាស្រទាប់បកប្រែ Direct3D 12 របស់ Wine ទៅ Vulkan
គម្រោង ស្រាត្រូវបានបង្ហាញ ប៉ុន្មានថ្ងៃមុននេះការដាក់ឱ្យដំណើរការនៃកំណែថ្មីនៃ vkd3d 1.7 កញ្ចប់ ជាមួយនឹងការអនុវត្ត Direct3D 12 ដែលដំណើរការតាមរយៈការបកប្រែការហៅទូរសព្ទទៅកាន់ Vulkan graphics API ។
កញ្ចប់ រួមបញ្ចូលបណ្ណាល័យ libvkd3d ជាមួយនឹងការអនុវត្ត Direct3D 12, libvkd3d-shader ជាមួយគំរូ shader បកប្រែ 4 និង 5 និង libvkd3d-utils ដែលមានមុខងារដើម្បីសម្រួលដល់ការផ្ទេរកម្មវិធី Direct3D 12 ក៏ដូចជាសំណុំនៃការបង្ហាញ រួមទាំងច្រក glxgears ទៅ Direct3D 12 ។
បណ្ណាល័យ libvkd3d គាំទ្រលក្ខណៈពិសេស Direct3D 12 ភាគច្រើន, រួមទាំងក្រាហ្វិក និងការគណនា បញ្ជីពាក្យបញ្ជា និងជួរ អ្នកពណ៌នា និងឧបករណ៍ពណ៌នាហ៊ា ហត្ថលេខាឫស ការចូលដំណើរការដោយមិនមានលំដាប់ គំរូ ហត្ថលេខាពាក្យបញ្ជា ថេរឫស តំណាងដោយប្រយោល ជម្រះ *() និង ចម្លង*() វិធីសាស្ត្រ។
ក្រៅពីវា libvkd3d-shader អនុវត្តការបកប្រែនៃ bytecode 4 និង 5 គំរូនៃការដាក់ស្រមោលនៅក្នុងតំណាងមធ្យមនៃ SPIR-V ។ គាំទ្រ vertex, pixel, tessellation, computation and simple geometry shaders, root signature serialization and deserialization ។
ប្រតិបត្តិការនព្វន្ធ អាតូម និងប៊ីត ការប្រៀបធៀប និងប្រតិបត្តិករគ្រប់គ្រងលំហូរទិន្នន័យ គំរូ ប្រមូល និងផ្ទុកការណែនាំ ប្រតិបត្តិការចូលប្រើក្រៅការបញ្ជាទិញ (UAV ទិដ្ឋភាពការចូលប្រើក្រៅការបញ្ជាទិញ) ត្រូវបានអនុវត្តពីការណែនាំជាស្រមោល។
មុខងារថ្មីៗសំខាន់ៗរបស់ vkd3d 1.7
នៅក្នុងកំណែថ្មីនេះដែលត្រូវបានបង្ហាញនៃ vkd3d 1.7 លេចធ្លោខ្ញុំបន្តធ្វើការដើម្បីកែលម្អ HLSL shader compiler (High-Level Shader Language) ក៏ដូចជាការបន្ថែមសមត្ថភាពក្នុងការហៅមុខងារដែលកំណត់ដោយអ្នកប្រើប្រាស់ និងប្រើអារេជាប៉ារ៉ាម៉ែត្រនៃមុខងារកំណត់ដោយអ្នកប្រើប្រាស់។
ការផ្លាស់ប្តូរមួយផ្សេងទៀតដែលលេចធ្លោនៅក្នុងកំណែថ្មីគឺ ធ្វើឱ្យប្រសើរឡើងយ៉ាងខ្លាំងនូវការគាំទ្រសម្រាប់ទម្រង់ ម៉ូដែលស្រមោល Direct3D 1/2/3, ក៏បានបន្ថែមការគាំទ្រដំបូងសម្រាប់ប្រភេទចំណុចអណ្តែតទឹកដែលមានភាពជាក់លាក់ទាបដូចជា min16float ។
វាត្រូវបានគូសបញ្ជាក់ផងដែរថា បានបន្ថែមការគាំទ្រសម្រាប់ប៉ារ៉ាម៉ែត្រ SV_DispatchThreadID, SV_GroupID និង SV_GroupThreadID ហើយថា API សាធារណៈត្រូវបានបន្ថែមទៅញែក (vkd3d_shader_parse_dxbc) និងសៀរៀល (vkd3d_shader_serialize_dxbc) ទិន្នន័យគោលពីរ DXBC ។
នៃ ការផ្លាស់ប្តូរផ្សេងទៀតដែលលេចធ្លោ នៃកំណែថ្មី:
- ការគាំទ្រសម្រាប់ប៉ារ៉ាម៉ែត្រ "អុហ្វសិត" ជាជម្រើសនៃវត្ថុវាយនភាព Load()
វិធីសាស្រ្ត។ - ការគាំទ្រសម្រាប់មុខងារខាងក្នុងទាំងអស់ () ។
- ការគាំទ្រសម្រាប់មុខងារខាងក្នុងនៃចម្ងាយ () ។
- ការគាំទ្រសម្រាប់មុខងារខាងក្នុង exp() និង exp2() ។
- គាំទ្រមុខងារខាងក្នុងរបស់ frac() ។
- ការគាំទ្រសម្រាប់មុខងារខាងក្នុងរបស់ lit() ។
- ការគាំទ្រសម្រាប់មុខងារខាងក្នុងឆ្លុះបញ្ចាំង។
- ការគាំទ្រសម្រាប់មុខងារខាងក្នុង sin() និង cos() ។
- គាំទ្រដល់មុខងារខាងក្នុងរបស់ smoothstep()។
- ការគាំទ្រសម្រាប់មុខងារ sqrt() និង rsqrt() ខាងក្នុង។
- ការគាំទ្រសម្រាប់មុខងារខាងក្នុងនៃជំហាន () ។
- ការគាំទ្រសម្រាប់មុខងារខាងក្នុង transpose() ។
- ការគាំទ្រសម្រាប់វ៉ារ្យ៉ង់ដែលមិនប្រកាន់អក្សរតូចធំនៃទិន្នន័យអណ្តែត និង dword
ប្រភេទ។ - ការគាំទ្រផ្នែកសម្រាប់ប្រភេទទិន្នន័យភាពជាក់លាក់អប្បបរមាដូចជា "min16float" ។ បច្ចុប្បន្ន ទាំងនេះត្រូវបានបកស្រាយថាជាសមភាគីធម្មតារបស់ពួកគេ។
ធ្វើឱ្យប្រសើរឡើងនូវការគាំទ្រការបន្តពូជថេរ ជាពិសេសដល់ការបន្តពូជថេរតាមរយៈ swizzles ។ - ជម្រើសចងក្រង VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE អាចត្រូវបានប្រើដើម្បីបញ្ជាក់ថាតើ SPIR-V shaders កំណត់គោលដៅបរិស្ថាន Vulkan គួរតែសរសេរទំហំចំណុចសម្រាប់ធរណីមាត្រ និង tessellation shaders ប្រសិនបើមិនបានបញ្ជាក់ ទំហំចំណុចនឹងត្រូវបានសរសេរ។
ជាចុងក្រោយ, សម្រាប់អ្នកដែលចាប់អារម្មណ៍ចង់ដឹងបន្ថែមអំពីវា។ពួកគេគួរតែដឹងថាលេខកូដគម្រោងត្រូវបានផ្តល់អាជ្ញាប័ណ្ណក្រោម LGPLv2.1 ហើយពួកគេអាចពិគ្រោះជាមួយព័ត៌មានលម្អិតនៃការចេញផ្សាយថ្មីនេះ។ នៅក្នុងតំណខាងក្រោម។
របៀបដំឡើង vkd3d 1.7?
សម្រាប់ ចាប់អារម្មណ៍អាចដំឡើង vkd3d ពួកគេត្រូវតែដឹងថាពួកគេត្រូវតែចងក្រងកូដប្រភព ដូច្នេះយើងត្រូវទទួលបានវាជាមុនសិន វាជារឿងសំខាន់ក្នុងការនិយាយថា Vkd3d អាស្រ័យលើ SPIRV-Headers និង Vulkan-Headers (>= 1.2.139) ។
ដើម្បីអនុវត្តការចងក្រង យើងត្រូវបើក terminal ហើយនៅក្នុងនោះ យើងនឹងវាយពាក្យបញ្ជាដូចខាងក្រោមៈ
git clone https://gitlab.winehq.org/wine/vkd3d.git
នៅពេលដែលវារួចរាល់ យើងបន្តចូលទៅក្នុងថតដែលបានទាញយកថ្មីៗជាមួយ៖
cd vkd3d
ហើយយើងបន្តចងក្រងដោយប្រតិបត្តិពាក្យបញ្ជាខាងក្រោម៖
./configure make make install
Si អ្នកចង់ដឹងបន្ថែមអំពីការចងក្រង នៃ vkd3d អ្នកអាចពិនិត្យមើលព័ត៌មានលម្អិតនៅក្នុង តំណនេះ
ធ្វើជាយោបល់ដំបូង