DirectXShaderCompiler icon indicating copy to clipboard operation
DirectXShaderCompiler copied to clipboard

Vector element index out-of-bounds not leading to compile error

Open mstrgram opened this issue 4 years ago • 0 comments

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

mstrgram avatar Apr 19 '21 16:04 mstrgram