It lists only a small subset of the #pragma require features that Unity supports. In particular, it doesn’t list any of the DX12 ones, eg wave operations (even though those are used in HDRP). The DXC doc lists some others: DXC shader compiler status & doc - Google Docs
@aleksandrk Follow-up question… You can also enable some things via #pragma multi_compile with specific keywords instead of #pragma require. For example #pragma multi_compile _ UNITY_DEVICE_SUPPORTS_WAVE_32 UNITY_DEVICE_SUPPORTS_WAVE_64. If I do that, I can use wave operations in a compute shader without doing #pragma require wavebasic or whatever. And further, the UNITY_DEVICE_SUPPORTS_WAVE_32and UNITY_DEVICE_SUPPORTS_WAVE_64 versions will use DXC and produce a DXBC, while the default one will use FXC and produce DXIL.
This does not appear be documented anywhere; I learned about it from you or another Unity dev on the forum. But it begs the question… are there any other sets of keywords like that?
What does waveshuffle add of intrinsics? Like in directx is it just explicit support in the compiler for WaveReadLaneAt with non-uniform index rendering it a shuffle rather than a broadcast operation? Or is it specifically for vulkan where there are perhaps bespoke functions for shuffle as opposed to the sort of implicit nature found in directx? Thanks!
Thanks! Are there/will there be any #pragma require that enable SM6.7 (interested in the “advanced texture operations”) and SM6.8 (curious about Wave Matrix even tho it’s experimental). I can see that at least newer versions of Unity ship with the AgilitySDK (found D3D12Core.dll in 2023.3 A14), which allowed me to us SM6.6 features on W10 that I couldn’t with 2022.1 which is neat, is it documented somewhere which version of Unity ship with what AgilitySDK?