DirectXShaderCompiler
DirectXShaderCompiler copied to clipboard
Vector element index out-of-bounds not leading to compile error
It is currently possible to index vector elements out-of-bounds without the compiler issuing and error:
// Load index buffer
uint indexOffset = PrimitiveIndex() * 3 /* indices per primitive */ * 4 /* 4 bytes per index*/;
const uint3 indices = g_indices.Load3(indexOffset);
// Retrieve corresponding vertex normals for the triangle vertices.
float3 vertexNormals[3] = { g_vertices[indices[0]].normal, g_vertices[indices[1]].normal, g_vertices[indices[3]].normal };
// Compute the triangle's interpolated normal
float3 triangleNormal = HitAttribute(vertexNormals, attr);
Notice the indices[3] above is out-of-bounds.
Above can be compiled with this command line (shader attached to bug)
dxc.exe /T lib_6_6 /Zpr /all_resources_bound /Zi /Od /Vn"g_DefaultRT_DXIL_Lib" /Fh"DefaultRT.dxil-lib.h" /nologo DefaultRT.hlsl
Shader repro attached: DefaultRT.zip