Projekti Wine publikoi version e paketës vkd3d 1.13 me implementimin e Direct3D 12, që funksionon përmes transformimit të thirrjeve në API-në grafike Vulkan. Paketa përfshin bibliotekat libvkd3d me implementimin e Direct3D 12, libvkd3d-shader me përkthyesin e modeleve 4 dhe 5 të shenjave, si dhe libvkd3d-utils me funksione për lehtësimin e portimit të aplikacioneve Direct3D 12, përveç një grupi shembujsh demonstrues, duke përfshirë portimin e glxgears në Direct3D 12. Kodi i projektit shpërndahet nën licencën LGPLv2.1.
Biblioteka libvkd3d mbështet shumicën e mundësive të Direct3D 12, duke përfshirë mjete për grafikë dhe llogaritje, radhë dhe lista komandash, deskriptues dhe deskriptues grumbujsh, nënshkrime themelore, qasje të papërkryer, Sampler-a, nënshkrime komandash, konstantet thelbësore, vizatimin indirekt, metodat Clear*() dhe Copy*(). Në libvkd3d-shader është implementuar përkthimi i kodit të byte të modeleve të shaderave në përfaqësimin ndërmjetës SPIR-V. Mbështeten shaderat e piksevëve, të vertexeve, të tesselacionit, llogaritëse dhe shaderat e thjeshtë gjeometrik, serializimi dhe deserializimi i nënshkrimit themelor. Nga instruksionet e shaderëve janë implementuar operacionet aritmetike, atomike dhe bllokuese, operatorët e krahasimit dhe kontrollit të rrjedhës së të dhënave, instrukcionet sample, gather dhe load, operacionet e qasjes së papërkryer (UAV, Unordered Access View).
NĂ« versionin e ri:
- Në përpiluesin HLSL është shtuar mbështetje për zhvillimin e cikleve (loop unrolling, optimizim, ku për një përdorim më efikas të kujtesës së procesorit dhe për të reduktuar ndarjen, operacionet ciklike zëvendësohen me disa kopje të njëpasnjëshme të kodit).
- Shtuar mbështetje për përpiluesin e efekteve për disa objekte të gjendjes së modelit të katërt të shenjave.
- Siguruar mbështetje për llojet e modelit të katërt të shenjave BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState dhe RasterizerState, si dhe funksionet OMSetRenderTargets(), SetBlendState(), SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader(), SetVertexShader(), SetDepthStencilState() dhe SetRasterizerState().
- Në përpiluesin e shenjave është implementuar mbështetje për analizimin dhe ruajtjen në formate të ndryshme të vlerave të inicializimit për variablat globalë, parametrat e funksioneve dhe anotacionet.
- Shtuar mbështetje për hapësirën e registrit të modelit të shenjave 5.1.
- Implementuar funksione të integruara tex1D(), tex2D(), tex3D(), texCUBE(), asint(), f16tof32(), faceforward(), GetRenderTargetSampleCount(), rcp(), tex2Dbias(), tex1Dgrad(), tex2Dgrad(), tex3Dgrad() dhe texCUBEgrad().
- NĂ« libvkd3d Ă«shtĂ« shtuar ndĂ«rfaqja ID3D12CommandList6 dhe Ă«shtĂ« realizuar mundĂ«sia e krijimit tĂ« teksturave, kompresimi i tĂ« cilave realizohet nĂ« nivelin e blloqeve tĂ« veçanta (pĂ«r shembull, blloqet, me madhĂ«si 4Ă4 piksel, kompresohen veçmas).
- Shtuar mbështetje për strukturën vkd3d_shader_parameter_info dhe parametrat VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF, VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION dhe VKD3D_SHADER_PARAMETER_TYPE_BUFFER.
Burimi: opennet.ru
