Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 20 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,38 @@
# DirectX Shader Compiler

The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) programs into DirectX Intermediate Language (DXIL) representation. Applications that make use of DirectX for graphics, games, and computation can use it to generate shader programs.
The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) programs into DirectX Intermediate Language (DXIL) for DirectX and the Standard Portable Intermediate Representation (SPIR-V) for Vulkan.

Applications that make use of DirectX or Vulkan for graphics, games, and computation can use it to generate shader program binaries.

For more information, see the [Wiki](https://github.com/microsoft/DirectXShaderCompiler/wiki).

Visit the [DirectX Landing Page](https://devblogs.microsoft.com/directx/landing-page/) for more resources for DirectX developers.
Visit the [DirectX Landing Page](https://devblogs.microsoft.com/directx/landing-page/) for more resources for DirectX developers, or the [Vulkan homepage](https://www.vulkan.org) for resources for Vulkan developers.

## Pre-built binaries

Officially supported binary release for the DirectX Shader Compiler are available:
- On this repository's [Releases](https://github.com/microsoft/DirectXShaderCompiler/releases) page
- as a [NuGet package](https://www.nuget.org/packages/Microsoft.Direct3D.DXC)
- in the [Windows SDK](https://learn.microsoft.com/en-us/windows/apps/windows-sdk/downloads)(DXIL-only), and
- in the [Vulkan SDK](https://www.lunarg.com/products/vulkan-sdk/)

## Features and Goals

The starting point of the project is a fork of the [LLVM](http://llvm.org/) and [Clang](http://clang.llvm.org/) projects, modified to accept HLSL and emit a validated container that can be consumed by GPU drivers.
The starting point of the project is a fork of the [LLVM](http://llvm.org/) and [Clang](http://clang.llvm.org/) projects, modified to accept HLSL and emit a validated shader binary that can be consumed by GPU drivers.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not part of this change but I wonder if would be worth it to have a link that provides more information on what validation actually means? I see that we've got some info in dxil.rst. Not sure if we have more thorough documentation anywhere else.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I'd want to go into the details of shader bytecode validation in the README, but I do think we should document it better. We validate both DXIL and SPIRV, so it isn't unique to DXIL.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, thats why I mentioned just adding a link. But I didn't find any documentation that I think would be worthwhile linking.


At the moment, the DirectX HLSL Compiler provides the following components:
At the moment, the DirectX Shader Compiler releases provide the following components:

- dxc.exe, a command-line tool that can compile HLSL programs for shader model 6.0 or higher

- dxcompiler.dll, a DLL providing a componentized compiler, assembler, disassembler, and validator
- dxcompiler.\[dll|so\], a DLL providing a componentized compiler, assembler, disassembler, and validator

- dxil.\[dll|so\], a DLL providing the DXIL validation and hashing support

- dxilconv.dll, a DLL providing a converter from DXBC (older shader bytecode format)
- dxv.exe, a command-line tool that validates DXIL IR (compiled HLSL programs)

- dxv.exe, a command-line tool that validates DXIL IR (compiled HLSL programs).
- A collection of C++ headers for working with the contained dynamic libraries

- various other tools based on the above components
- A collection of HLSL headers exposing useful high level abstractions

The Microsoft Windows SDK releases include a supported version of the compiler and validator.

Expand Down
Loading