@@ -162,6 +162,83 @@ dependencies. Running it will bring up the Project Manager.
162162 :ref: `doc_data_paths_self_contained_mode ` by creating a file called
163163 ``._sc_ `` or ``_sc_ `` in the ``bin/ `` folder.
164164
165+ Compiling with support for Direct3D 12
166+ --------------------------------------
167+
168+ By default, builds of Godot do not contain support for the Direct3D 12 graphics
169+ API.
170+
171+ To compile Godot with Direct3D 12 support you need at least the following:
172+
173+ - Visual Studio (follow the instructions above to install). Currently, we don't
174+ support building with Direct3D 12 enabled when using MinGW. Support will be
175+ added in the future if possible.
176+ - `The DirectX Shader Compiler <https://github.com/Microsoft/DirectXShaderCompiler/releases >`_.
177+ The zip folder will be named "dxc\_ " followed by the date of release. Download
178+ it anywhere, unzip it and remember the path to the unzipped folder, you will
179+ need it below.
180+ - `godot-nir-static library <https://github.com/godotengine/godot-nir-static/releases/ >`_.
181+ We compile the Mesa libraries you will need into a static library. Download it
182+ anywhere, unzip it and remember the path to the unzipped folder, you will
183+ need it below.
184+
185+ .. note :: You can optionally build the godot-nir-static libraries yourself with
186+ the following steps:
187+
188+ 1. Install the Python package `mako <https://www.makotemplates.org >`_
189+ which is needed to generate some files.
190+ 2. Clone the `godot-nir-static <https://github.com/godotengine/godot-nir-static >`_
191+ directory and navigate to it.
192+ 3. Run the following::
193+
194+ git submodule update --init
195+ ./update_mesa.sh
196+ scons
197+
198+ Optionally, you can compile with the following for additional features:
199+
200+ - `PIX <https://devblogs.microsoft.com/pix/download >`_ is a performance tuning
201+ and debugging application for Direct3D12 applications. If you compile-in
202+ support for it, you can get much more detailed information through PIX that
203+ will help you optimize your game and troubleshoot graphics bugs. To use it,
204+ download the WinPixEventRuntime package. You will be taken to a NuGet package
205+ page where you can click "Download package" to get it. Once downloaded, change
206+ the file extension to .zip and unzip the file to some path.
207+ - `Agility SDK <https://devblogs.microsoft.com/directx/directx12agility >`_ can
208+ be used to provide access to the latest Direct3D 12 features without relying
209+ on driver updates. To use it, download the latest Agility SDK package. You
210+ will be taken to a NuGet package page where you can click "Download package"
211+ to get it. Once downloaded, change the file extension to .zip and unzip the
212+ file to some path.
213+
214+ .. note :: If you use a preview version of the Agility SDK, remember to enable
215+ developer mode in Windows; otherwise it won't be used.
216+
217+ When building Godot, you will need to tell SCons to use Direct3D 12 and where to
218+ look for the additional libraries::
219+
220+ C:\godot> scons platform=windows d3d12=yes dxc_path=<...> mesa_libs=<...>
221+
222+ Or, with all options enabled::
223+
224+ C:\godot> scons platform=windows d3d12=yes dxc_path=<...> mesa_libs=<...> agility_sdk_path=<...> pix_path=<...>
225+
226+ .. note :: The build process will copy ``dxil.dll`` from the ``bin/<arch>/``
227+ directory in the DXC folder to the Godot binary directory and the
228+ appropriate ``bin/<arch> `` file in the Godot binary directory.
229+ Direct3D 12-enabled Godot packages for distribution to end users must
230+ include the ``dxil.dll `` (and relevant folders if using multi-arch),
231+ both for the editor and games. At runtime, the renderer will try to
232+ load the DLL from the arch-specific folders, and will fall back to the
233+ same directory as the Godot executable if the appropriate arch isn't
234+ found.
235+
236+ .. note :: For the Agility SDK's DLLs you have to explicitly choose the kind of
237+ workflow. Single-arch is the default (DLLs copied to ``bin/ ``). If you
238+ pass ``agility_sdk_multi_arch=yes `` to SCons, you'll opt-in for
239+ multi-arch. DLLs will be copied to the appropriate ``bin/<arch>/ ``
240+ subdirectories and at runtime the right one will be loaded.
241+
165242Development in Visual Studio
166243----------------------------
167244
0 commit comments