Allow runtime-sized arrays of acceleration structures

This commit is contained in:
Jeff Bolz
2019-05-30 12:45:15 -05:00
parent 625eb25d6e
commit 8adc2f565e
4 changed files with 167 additions and 1 deletions

View File

@@ -0,0 +1,22 @@
#version 460
#extension GL_NV_ray_tracing : enable
#extension GL_EXT_nonuniform_qualifier : enable
layout(binding = 0, set = 0) uniform accelerationStructureNV accNV0[];
layout(binding = 1, set = 0) uniform accelerationStructureNV accNV1[2];
layout(location = 0) rayPayloadNV vec4 payload;
layout(shaderRecordNV) buffer block
{
vec3 dir;
vec3 origin;
int i;
};
void main()
{
uint lx = gl_LaunchIDNV.x;
uint ly = gl_LaunchIDNV.y;
uint sx = gl_LaunchSizeNV.x;
uint sy = gl_LaunchSizeNV.y;
traceNV(accNV0[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
traceNV(accNV1[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
traceNV(accNV0[nonuniformEXT(i)], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
}