@@ -162,6 +162,83 @@ dependencies. Running it will bring up the Project Manager.
162
162
:ref: `doc_data_paths_self_contained_mode ` by creating a file called
163
163
``._sc_ `` or ``_sc_ `` in the ``bin/ `` folder.
164
164
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
+
165
242
Development in Visual Studio
166
243
----------------------------
167
244
0 commit comments