Compare commits

...

10 Commits

Author SHA1 Message Date
Hans-Kristian Arntzen 74d5c8ec8c tests: Add test for default association tiebreak rules. 2 months ago
Hans-Kristian Arntzen 494f792665 tests: Add test for how we handle DXIL embedded subobjects. 2 months ago
Hans-Kristian Arntzen 7bbb68fd33 tests: Add some basic RTPSO validation rules tests. 2 months ago
Hans-Kristian Arntzen 3b23e02878 vkd3d: Rewrite how submodules are associated with exports. 2 months ago
Hans-Kristian Arntzen 7d650d0940 vkd3d-shader: Forward RDAT subobjects. 2 months ago
Hans-Kristian Arntzen 82489277d4 vkd3d: Expose utility for creating root signature from raw blob. 2 months ago
Hans-Kristian Arntzen 46432a4f60 vkd3d-shader: Expose entry point for raw root signature parsing. 2 months ago
Hans-Kristian Arntzen 9c9f682449 vkd3d-common: Add strequal_mixed between WCHAR and ASCII. 2 months ago
Hans-Kristian Arntzen 5292ccd62d vkd3d: Handle default global root signature in RTPSO. 2 months ago
Hans-Kristian Arntzen 7e8db9ee8e dxil-spirv: Update submodule. 2 months ago
  1. 1
      include/private/vkd3d_string.h
  2. 52
      include/vkd3d_shader.h
  3. 15
      libs/vkd3d-common/string.c
  4. 7
      libs/vkd3d-shader/dxbc.c
  5. 171
      libs/vkd3d-shader/dxil.c
  6. 951
      libs/vkd3d/raytracing_pipeline.c
  7. 63
      libs/vkd3d/state.c
  8. 30
      libs/vkd3d/vkd3d_main.c
  9. 6
      libs/vkd3d/vkd3d_private.h
  10. 2
      subprojects/dxil-spirv
  11. 774
      tests/d3d12_raytracing.c
  12. 5
      tests/d3d12_tests.h

@ -30,6 +30,7 @@ WCHAR *vkd3d_dup_demangled_entry_point(const char *str);
char *vkd3d_dup_demangled_entry_point_ascii(const char *str);
bool vkd3d_export_strequal(const WCHAR *a, const WCHAR *b);
bool vkd3d_export_strequal_mixed(const WCHAR *a, const char *b);
bool vkd3d_export_strequal_substr(const WCHAR *a, size_t n, const WCHAR *b);
char *vkd3d_strdup(const char *str);

@ -750,6 +750,8 @@ void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code);
int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
struct vkd3d_versioned_root_signature_desc *root_signature);
int vkd3d_shader_parse_root_signature_raw(const char *data, unsigned int data_size,
struct vkd3d_versioned_root_signature_desc *desc);
void vkd3d_shader_free_root_signature(struct vkd3d_versioned_root_signature_desc *root_signature);
/* FIXME: Add support for returning error messages (ID3DBlob). */
@ -781,13 +783,59 @@ struct vkd3d_shader_library_entry_point
VkShaderStageFlagBits stage;
};
int vkd3d_shader_dxil_append_library_entry_points(
enum vkd3d_shader_subobject_kind
{
/* Matches DXIL for simplicity. */
VKD3D_SHADER_SUBOBJECT_KIND_STATE_OBJECT_CONFIG = 0,
VKD3D_SHADER_SUBOBJECT_KIND_GLOBAL_ROOT_SIGNATURE = 1,
VKD3D_SHADER_SUBOBJECT_KIND_LOCAL_ROOT_SIGNATURE = 2,
VKD3D_SHADER_SUBOBJECT_KIND_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8,
VKD3D_SHADER_SUBOBJECT_KIND_RAYTRACING_SHADER_CONFIG = 9,
VKD3D_SHADER_SUBOBJECT_KIND_RAYTRACING_PIPELINE_CONFIG = 10,
VKD3D_SHADER_SUBOBJECT_KIND_HIT_GROUP = 11,
VKD3D_SHADER_SUBOBJECT_KIND_RAYTRACING_PIPELINE_CONFIG1 = 12,
};
struct vkd3d_shader_library_subobject
{
enum vkd3d_shader_subobject_kind kind;
unsigned int dxil_identifier;
/* All const pointers here point directly to the DXBC blob,
* so they do not need to be freed.
* Fortunately for us, the C strings are zero-terminated in the blob itself. */
/* In the blob, ASCII is used as identifier, where API uses wide strings, sigh ... */
const char *name;
union
{
D3D12_RAYTRACING_PIPELINE_CONFIG1 pipeline_config;
D3D12_RAYTRACING_SHADER_CONFIG shader_config;
D3D12_STATE_OBJECT_CONFIG object_config;
/* Duped strings because API wants wide strings for no good reason. */
D3D12_HIT_GROUP_DESC hit_group;
D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION association;
struct
{
const void *data;
size_t size;
} payload;
} data;
};
int vkd3d_shader_dxil_append_library_entry_points_and_subobjects(
const D3D12_DXIL_LIBRARY_DESC *library_desc,
unsigned int identifier,
struct vkd3d_shader_library_entry_point **entry_points,
size_t *entry_point_size, size_t *entry_point_count);
size_t *entry_point_size, size_t *entry_point_count,
struct vkd3d_shader_library_subobject **subobjects,
size_t *subobjects_size, size_t *subobjects_count);
void vkd3d_shader_dxil_free_library_entry_points(struct vkd3d_shader_library_entry_point *entry_points, size_t count);
void vkd3d_shader_dxil_free_library_subobjects(struct vkd3d_shader_library_subobject *subobjects, size_t count);
int vkd3d_shader_compile_dxil_export(const struct vkd3d_shader_code *dxil,
const char *export,

@ -82,6 +82,21 @@ bool vkd3d_export_strequal(const WCHAR *a, const WCHAR *b)
return *a == *b;
}
bool vkd3d_export_strequal_mixed(const WCHAR *a, const char *b)
{
if (!a || !b)
return false;
while (*a != '\0' && *b != '\0')
{
if (*a != *b)
return false;
a++;
b++;
}
return *a == *b;
}
bool vkd3d_export_strequal_substr(const WCHAR *a, size_t expected_n, const WCHAR *b)
{
size_t n = 0;

@ -2755,7 +2755,7 @@ static int shader_parse_static_samplers(struct root_signature_parser_context *co
return VKD3D_OK;
}
static int shader_parse_root_signature(const char *data, unsigned int data_size,
int vkd3d_shader_parse_root_signature_raw(const char *data, unsigned int data_size,
struct vkd3d_versioned_root_signature_desc *desc)
{
struct vkd3d_root_signature_desc *v_1_0 = &desc->v_1_0;
@ -2764,6 +2764,8 @@ static int shader_parse_root_signature(const char *data, unsigned int data_size,
const char *ptr = data;
int ret;
memset(desc, 0, sizeof(*desc));
context.data = data;
context.data_size = data_size;
@ -2845,7 +2847,7 @@ static int rts0_handler(const char *data, DWORD data_size, DWORD tag, void *cont
if (tag != TAG_RTS0)
return VKD3D_OK;
return shader_parse_root_signature(data, data_size, desc);
return vkd3d_shader_parse_root_signature_raw(data, data_size, desc);
}
int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
@ -2855,7 +2857,6 @@ int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
TRACE("dxbc {%p, %zu}, root_signature %p.\n", dxbc->code, dxbc->size, root_signature);
memset(root_signature, 0, sizeof(*root_signature));
if ((ret = parse_dxbc(dxbc->code, dxbc->size, rts0_handler, root_signature)) < 0)
{
vkd3d_shader_free_root_signature(root_signature);

@ -1316,6 +1316,31 @@ void vkd3d_shader_dxil_free_library_entry_points(struct vkd3d_shader_library_ent
vkd3d_free(entry_points);
}
void vkd3d_shader_dxil_free_library_subobjects(struct vkd3d_shader_library_subobject *subobjects, size_t count)
{
size_t i, j;
for (i = 0; i < count; i++)
{
if (subobjects[i].kind == VKD3D_SHADER_SUBOBJECT_KIND_SUBOBJECT_TO_EXPORTS_ASSOCIATION)
{
for (j = 0; j < subobjects[i].data.association.NumExports; j++)
vkd3d_free((void*)subobjects[i].data.association.pExports[j]);
vkd3d_free((void*)subobjects[i].data.association.pExports);
vkd3d_free((void*)subobjects[i].data.association.SubobjectToAssociate);
}
else if (subobjects[i].kind == VKD3D_SHADER_SUBOBJECT_KIND_HIT_GROUP)
{
vkd3d_free((void*)subobjects[i].data.hit_group.HitGroupExport);
vkd3d_free((void*)subobjects[i].data.hit_group.AnyHitShaderImport);
vkd3d_free((void*)subobjects[i].data.hit_group.ClosestHitShaderImport);
vkd3d_free((void*)subobjects[i].data.hit_group.IntersectionShaderImport);
}
}
vkd3d_free(subobjects);
}
static VkShaderStageFlagBits convert_stage(dxil_spv_shader_stage stage)
{
/* Only interested in RT entry_points. There is no way yet to use lib_6_3+ for non-RT. */
@ -1360,20 +1385,95 @@ static bool vkd3d_dxil_build_entry(struct vkd3d_shader_library_entry_point *entr
return true;
}
int vkd3d_shader_dxil_append_library_entry_points(
static void vkd3d_shader_dxil_copy_subobject(unsigned int identifier,
struct vkd3d_shader_library_subobject *subobject,
const dxil_spv_rdat_subobject *dxil_subobject)
{
unsigned int i;
/* Reuse same enums as DXIL. */
subobject->kind = (enum vkd3d_shader_subobject_kind)dxil_subobject->kind;
subobject->name = dxil_subobject->subobject_name;
subobject->dxil_identifier = identifier;
switch (dxil_subobject->kind)
{
case DXIL_SPV_RDAT_SUBOBJECT_KIND_GLOBAL_ROOT_SIGNATURE:
case DXIL_SPV_RDAT_SUBOBJECT_KIND_LOCAL_ROOT_SIGNATURE:
subobject->data.payload.data = dxil_subobject->payload;
subobject->data.payload.size = dxil_subobject->payload_size;
break;
case DXIL_SPV_RDAT_SUBOBJECT_KIND_RAYTRACING_PIPELINE_CONFIG:
/* Normalize the kind. */
subobject->kind = VKD3D_SHADER_SUBOBJECT_KIND_RAYTRACING_PIPELINE_CONFIG1;
subobject->data.pipeline_config.MaxTraceRecursionDepth = dxil_subobject->args[0];
subobject->data.pipeline_config.Flags = 0;
break;
case DXIL_SPV_RDAT_SUBOBJECT_KIND_RAYTRACING_PIPELINE_CONFIG1:
subobject->kind = VKD3D_SHADER_SUBOBJECT_KIND_RAYTRACING_PIPELINE_CONFIG1;
subobject->data.pipeline_config.MaxTraceRecursionDepth = dxil_subobject->args[0];
subobject->data.pipeline_config.Flags = dxil_subobject->args[1];
break;
case DXIL_SPV_RDAT_SUBOBJECT_KIND_RAYTRACING_SHADER_CONFIG:
subobject->data.shader_config.MaxPayloadSizeInBytes = dxil_subobject->args[0];
subobject->data.shader_config.MaxAttributeSizeInBytes = dxil_subobject->args[1];
break;
case DXIL_SPV_RDAT_SUBOBJECT_KIND_HIT_GROUP:
/* Enum aliases. */
subobject->data.hit_group.Type = (D3D12_HIT_GROUP_TYPE)dxil_subobject->hit_group_type;
assert(dxil_subobject->num_exports == 3);
/* Implementation simplifies a lot if we can reuse the D3D12 type here. */
subobject->data.hit_group.HitGroupExport = vkd3d_dup_entry_point(dxil_subobject->subobject_name);
subobject->data.hit_group.AnyHitShaderImport = dxil_subobject->exports[0] && *dxil_subobject->exports[0] != '\0' ?
vkd3d_dup_entry_point(dxil_subobject->exports[0]) : NULL;
subobject->data.hit_group.ClosestHitShaderImport = dxil_subobject->exports[1] && *dxil_subobject->exports[1] != '\0' ?
vkd3d_dup_entry_point(dxil_subobject->exports[1]) : NULL;
subobject->data.hit_group.IntersectionShaderImport = dxil_subobject->exports[2] && *dxil_subobject->exports[2] != '\0' ?
vkd3d_dup_entry_point(dxil_subobject->exports[2]) : NULL;
break;
case DXIL_SPV_RDAT_SUBOBJECT_KIND_STATE_OBJECT_CONFIG:
subobject->data.object_config.Flags = dxil_subobject->args[0];
break;
case DXIL_SPV_RDAT_SUBOBJECT_KIND_SUBOBJECT_TO_EXPORTS_ASSOCIATION:
assert(dxil_subobject->num_exports >= 1);
subobject->data.association.SubobjectToAssociate = vkd3d_dup_entry_point(dxil_subobject->exports[0]);
subobject->data.association.pExports = vkd3d_malloc((dxil_subobject->num_exports - 1) * sizeof(LPCWSTR));
subobject->data.association.NumExports = dxil_subobject->num_exports - 1;
for (i = 1; i < dxil_subobject->num_exports; i++)
subobject->data.association.pExports[i - 1] = vkd3d_dup_entry_point(dxil_subobject->exports[i]);
break;
default:
FIXME("Unrecognized RDAT subobject type: %u.\n", dxil_subobject->kind);
break;
}
}
int vkd3d_shader_dxil_append_library_entry_points_and_subobjects(
const D3D12_DXIL_LIBRARY_DESC *library_desc,
unsigned int identifier,
struct vkd3d_shader_library_entry_point **entry_points,
size_t *entry_point_size, size_t *entry_point_count)
size_t *entry_point_size, size_t *entry_point_count,
struct vkd3d_shader_library_subobject **subobjects,
size_t *subobjects_size, size_t *subobjects_count)
{
struct vkd3d_shader_library_entry_point new_entry;
struct vkd3d_shader_library_subobject *subobject;
dxil_spv_parsed_blob blob = NULL;
struct vkd3d_shader_code code;
dxil_spv_rdat_subobject sub;
dxil_spv_shader_stage stage;
const char *mangled_entry;
char *ascii_entry = NULL;
vkd3d_shader_hash_t hash;
unsigned int count, i;
unsigned int count, i, j;
unsigned int rdat_count;
int ret = VKD3D_OK;
memset(&new_entry, 0, sizeof(new_entry));
@ -1394,6 +1494,8 @@ int vkd3d_shader_dxil_append_library_entry_points(
goto end;
}
rdat_count = dxil_spv_parsed_blob_get_num_rdat_subobjects(blob);
if (library_desc->NumExports)
{
for (i = 0; i < library_desc->NumExports; i++)
@ -1403,24 +1505,44 @@ int vkd3d_shader_dxil_append_library_entry_points(
else
ascii_entry = vkd3d_strdup_w_utf8(library_desc->pExports[i].Name, 0);
stage = dxil_spv_parsed_blob_get_shader_stage_for_entry(blob, ascii_entry);
if (stage == DXIL_SPV_STAGE_UNKNOWN)
/* An export can point to a subobject or an entry point. */
for (j = 0; j < rdat_count; j++)
{
ret = VKD3D_ERROR_INVALID_ARGUMENT;
goto end;
dxil_spv_parsed_blob_get_rdat_subobject(blob, j, &sub);
/* Subobject names are not mangled. */
if (strcmp(sub.subobject_name, ascii_entry) == 0)
break;
}
new_entry.real_entry_point = ascii_entry;
new_entry.plain_entry_point = vkd3d_wstrdup(library_desc->pExports[i].Name);
new_entry.mangled_entry_point = NULL;
new_entry.identifier = identifier;
new_entry.stage = convert_stage(stage);
ascii_entry = NULL;
if (j < rdat_count)
{
vkd3d_array_reserve((void**)subobjects, subobjects_size,
*subobjects_count + 1, sizeof(**subobjects));
subobject = &(*subobjects)[*subobjects_count];
vkd3d_shader_dxil_copy_subobject(identifier, subobject, &sub);
*subobjects_count += 1;
}
else
{
stage = dxil_spv_parsed_blob_get_shader_stage_for_entry(blob, ascii_entry);
if (stage == DXIL_SPV_STAGE_UNKNOWN)
{
ret = VKD3D_ERROR_INVALID_ARGUMENT;
goto end;
}
vkd3d_array_reserve((void**)entry_points, entry_point_size,
*entry_point_count + 1, sizeof(new_entry));
(*entry_points)[(*entry_point_count)++] = new_entry;
memset(&new_entry, 0, sizeof(new_entry));
new_entry.real_entry_point = ascii_entry;
new_entry.plain_entry_point = vkd3d_wstrdup(library_desc->pExports[i].Name);
new_entry.mangled_entry_point = NULL;
new_entry.identifier = identifier;
new_entry.stage = convert_stage(stage);
ascii_entry = NULL;
vkd3d_array_reserve((void**)entry_points, entry_point_size,
*entry_point_count + 1, sizeof(new_entry));
(*entry_points)[(*entry_point_count)++] = new_entry;
memset(&new_entry, 0, sizeof(new_entry));
}
}
}
else
@ -1453,6 +1575,21 @@ int vkd3d_shader_dxil_append_library_entry_points(
(*entry_points)[(*entry_point_count)++] = new_entry;
memset(&new_entry, 0, sizeof(new_entry));
}
if (rdat_count)
{
/* All subobjects are also exported. */
vkd3d_array_reserve((void**)subobjects, subobjects_size,
*subobjects_count + rdat_count, sizeof(**subobjects));
for (i = 0; i < rdat_count; i++)
{
dxil_spv_parsed_blob_get_rdat_subobject(blob, i, &sub);
subobject = &(*subobjects)[*subobjects_count];
vkd3d_shader_dxil_copy_subobject(identifier, subobject, &sub);
*subobjects_count += 1;
}
}
}
end:

File diff suppressed because it is too large Load Diff

@ -1469,8 +1469,36 @@ fail:
return hr;
}
HRESULT d3d12_root_signature_create(struct d3d12_device *device,
const void *bytecode, size_t bytecode_length, struct d3d12_root_signature **root_signature)
HRESULT d3d12_root_signature_create_empty(struct d3d12_device *device,
struct d3d12_root_signature **root_signature)
{
struct d3d12_root_signature *object;
D3D12_ROOT_SIGNATURE_DESC1 desc;
HRESULT hr;
if (!(object = vkd3d_malloc(sizeof(*object))))
return E_OUTOFMEMORY;
memset(&desc, 0, sizeof(desc));
hr = d3d12_root_signature_init(object, device, &desc);
/* For pipeline libraries, (and later DXR to some degree), we need a way to
* compare root signature objects. */
object->compatibility_hash = 0;
if (FAILED(hr))
{
vkd3d_free(object);
return hr;
}
*root_signature = object;
return S_OK;
}
static HRESULT d3d12_root_signature_create_from_blob(struct d3d12_device *device,
const void *bytecode, size_t bytecode_length, bool raw_payload,
struct d3d12_root_signature **root_signature)
{
const struct vkd3d_shader_code dxbc = {bytecode, bytecode_length};
union
@ -1482,10 +1510,21 @@ HRESULT d3d12_root_signature_create(struct d3d12_device *device,
HRESULT hr;
int ret;
if ((ret = vkd3d_parse_root_signature_v_1_1(&dxbc, &root_signature_desc.vkd3d)) < 0)
if (raw_payload)
{
WARN("Failed to parse root signature, vkd3d result %d.\n", ret);
return hresult_from_vkd3d_result(ret);
if ((ret = vkd3d_parse_root_signature_v_1_1_from_raw_payload(&dxbc, &root_signature_desc.vkd3d)))
{
WARN("Failed to parse root signature, vkd3d result %d.\n", ret);
return hresult_from_vkd3d_result(ret);
}
}
else
{
if ((ret = vkd3d_parse_root_signature_v_1_1(&dxbc, &root_signature_desc.vkd3d)) < 0)
{
WARN("Failed to parse root signature, vkd3d result %d.\n", ret);
return hresult_from_vkd3d_result(ret);
}
}
if (!(object = vkd3d_malloc(sizeof(*object))))
@ -1514,6 +1553,20 @@ HRESULT d3d12_root_signature_create(struct d3d12_device *device,
return S_OK;
}
HRESULT d3d12_root_signature_create(struct d3d12_device *device,
const void *bytecode, size_t bytecode_length,
struct d3d12_root_signature **root_signature)
{
return d3d12_root_signature_create_from_blob(device, bytecode, bytecode_length, false, root_signature);
}
HRESULT d3d12_root_signature_create_raw(struct d3d12_device *device,
const void *payload, size_t payload_length,
struct d3d12_root_signature **root_signature)
{
return d3d12_root_signature_create_from_blob(device, payload, payload_length, true, root_signature);
}
unsigned int d3d12_root_signature_get_shader_interface_flags(const struct d3d12_root_signature *root_signature)
{
unsigned int flags = 0;

@ -165,15 +165,27 @@ static CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl d3d12_root_signatur
static int vkd3d_parse_root_signature_for_version(const struct vkd3d_shader_code *dxbc,
struct vkd3d_versioned_root_signature_desc *out_desc,
enum vkd3d_root_signature_version target_version)
enum vkd3d_root_signature_version target_version,
bool raw_payload)
{
struct vkd3d_versioned_root_signature_desc desc, converted_desc;
int ret;
if ((ret = vkd3d_shader_parse_root_signature(dxbc, &desc)) < 0)
if (raw_payload)
{
WARN("Failed to parse root signature, vkd3d result %d.\n", ret);
return ret;
if ((ret = vkd3d_shader_parse_root_signature_raw(dxbc->code, dxbc->size, &desc)) < 0)
{
WARN("Failed to parse root signature, vkd3d result %d.\n", ret);
return ret;
}
}
else
{
if ((ret = vkd3d_shader_parse_root_signature(dxbc, &desc)) < 0)
{
WARN("Failed to parse root signature, vkd3d result %d.\n", ret);
return ret;
}
}
if (desc.version == target_version)
@ -199,13 +211,19 @@ static int vkd3d_parse_root_signature_for_version(const struct vkd3d_shader_code
int vkd3d_parse_root_signature_v_1_0(const struct vkd3d_shader_code *dxbc,
struct vkd3d_versioned_root_signature_desc *out_desc)
{
return vkd3d_parse_root_signature_for_version(dxbc, out_desc, VKD3D_ROOT_SIGNATURE_VERSION_1_0);
return vkd3d_parse_root_signature_for_version(dxbc, out_desc, VKD3D_ROOT_SIGNATURE_VERSION_1_0, false);
}
int vkd3d_parse_root_signature_v_1_1(const struct vkd3d_shader_code *dxbc,
struct vkd3d_versioned_root_signature_desc *out_desc)
{
return vkd3d_parse_root_signature_for_version(dxbc, out_desc, VKD3D_ROOT_SIGNATURE_VERSION_1_1);
return vkd3d_parse_root_signature_for_version(dxbc, out_desc, VKD3D_ROOT_SIGNATURE_VERSION_1_1, false);
}
int vkd3d_parse_root_signature_v_1_1_from_raw_payload(const struct vkd3d_shader_code *dxbc,
struct vkd3d_versioned_root_signature_desc *out_desc)
{
return vkd3d_parse_root_signature_for_version(dxbc, out_desc, VKD3D_ROOT_SIGNATURE_VERSION_1_1, true);
}
static HRESULT d3d12_root_signature_deserializer_init(struct d3d12_root_signature_deserializer *deserializer,

@ -1395,6 +1395,10 @@ struct d3d12_root_signature
HRESULT d3d12_root_signature_create(struct d3d12_device *device, const void *bytecode,
size_t bytecode_length, struct d3d12_root_signature **root_signature);
HRESULT d3d12_root_signature_create_raw(struct d3d12_device *device, const void *payload,
size_t payload_size, struct d3d12_root_signature **root_signature);
HRESULT d3d12_root_signature_create_empty(struct d3d12_device *device,
struct d3d12_root_signature **root_signature);
/* Private ref counts, for pipeline library. */
void d3d12_root_signature_inc_ref(struct d3d12_root_signature *state);
void d3d12_root_signature_dec_ref(struct d3d12_root_signature *state);
@ -1420,6 +1424,8 @@ int vkd3d_parse_root_signature_v_1_0(const struct vkd3d_shader_code *dxbc,
struct vkd3d_versioned_root_signature_desc *desc);
int vkd3d_parse_root_signature_v_1_1(const struct vkd3d_shader_code *dxbc,
struct vkd3d_versioned_root_signature_desc *desc);
int vkd3d_parse_root_signature_v_1_1_from_raw_payload(const struct vkd3d_shader_code *dxbc,
struct vkd3d_versioned_root_signature_desc *desc);
VkShaderStageFlags vkd3d_vk_stage_flags_from_visibility(D3D12_SHADER_VISIBILITY visibility);
enum vkd3d_shader_visibility vkd3d_shader_visibility_from_d3d12(D3D12_SHADER_VISIBILITY visibility);

@ -1 +1 @@
Subproject commit be697eb2ae18f62bf2ea57d8213fd7afc93b7433
Subproject commit c06ed6410e60a8d46095625d5c669a7d6fa55182

@ -454,6 +454,339 @@ static D3D12_SHADER_BYTECODE get_static_sampler_rt_lib(void)
return code;
}
static D3D12_SHADER_BYTECODE get_dummy_raygen_rt_lib(void)
{
static const BYTE rt_lib_dxil[] =
{
#if 0
RWStructuredBuffer<uint> RW : register(u0);
[shader("raygeneration")]
void main()
{
RW[0] = 0;
}
#endif
0x44, 0x58, 0x42, 0x43, 0xc6, 0x54, 0x78, 0x8e, 0xd8, 0x6b, 0x64, 0x97, 0x62, 0x4e, 0xd5, 0x8c, 0x7e, 0x0d, 0xa4, 0x6f, 0x01, 0x00, 0x00, 0x00, 0xa0, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x52, 0x44, 0x41, 0x54, 0xb4, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x52, 0x57, 0x00, 0x01, 0x3f, 0x6d, 0x61, 0x69, 0x6e, 0x40, 0x40, 0x59, 0x41, 0x58, 0x58, 0x5a, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xdc, 0xfb, 0x7e, 0x4a, 0x80, 0xf1, 0x63, 0x2a, 0x07, 0x48, 0xc3, 0x9f, 0x1b, 0x9a, 0xd8, 0x44, 0x58, 0x49, 0x4c, 0x80, 0x05, 0x00, 0x00,
0x63, 0x00, 0x06, 0x00, 0x60, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x03, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x68, 0x05, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00,
0x57, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x1b, 0x88, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0xda, 0x60, 0x08, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x12, 0x50, 0x01, 0x00, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x40, 0x73, 0x04, 0x60, 0x30, 0x93, 0x19, 0x8c, 0x03, 0x3b, 0x84, 0xc3, 0x3c, 0xcc, 0x83,
0x1b, 0xc8, 0xc2, 0x2d, 0xcc, 0x02, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xd4, 0x83, 0x3c, 0x94, 0x03, 0x39, 0x88, 0x42, 0x3d, 0x98, 0x83, 0x39, 0x94, 0x83, 0x3c, 0xf0, 0x41, 0x3d, 0xb8,
0xc3, 0x3c, 0xa4, 0xc3, 0x39, 0xb8, 0x43, 0x39, 0x90, 0x03, 0x18, 0xa4, 0x83, 0x3b, 0xd0, 0x83, 0x1f, 0xa0, 0x00, 0x50, 0x18, 0x01, 0x28, 0xc1, 0x20, 0x32, 0x47, 0x80, 0x90, 0xb9, 0x67, 0xb8,
0xfc, 0x09, 0x7b, 0x08, 0xc9, 0x0f, 0x81, 0x66, 0x58, 0x08, 0x14, 0x9c, 0xb2, 0x0c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0x28, 0x95, 0x01, 0x81, 0x40, 0x6b, 0x20, 0x60, 0x8e, 0x20, 0x98, 0x23,
0x00, 0x05, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x3a, 0x0f, 0x24, 0x90, 0x21, 0x23, 0x45, 0x44, 0x00, 0x1e, 0x00, 0xf0, 0x90, 0x87, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x4f, 0x02, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x9e, 0x05, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xb2, 0x40, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x02, 0x25, 0x50, 0x06, 0xc5, 0x30, 0x02, 0x50, 0x18,
0x85, 0x50, 0x0e, 0xa5, 0x50, 0x10, 0xf4, 0x0a, 0x14, 0x10, 0x81, 0xdc, 0x08, 0x00, 0x85, 0x19, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62,
0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0x80, 0x98, 0x20, 0x00, 0xc5, 0x06, 0x61, 0x20, 0x26, 0x08, 0x80, 0xb1,
0x41, 0x18, 0x0c, 0x0e, 0x6c, 0x69, 0x62, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x08, 0xc0, 0x31, 0x41, 0x10, 0x00, 0x0a, 0x52, 0x57, 0x13, 0x04, 0x00, 0x99, 0x20, 0x38, 0xce, 0x04, 0x01, 0x48, 0x36,
0x08, 0xc3, 0xb3, 0x61, 0x51, 0x16, 0x46, 0x51, 0x86, 0xc6, 0x71, 0x1c, 0x68, 0x43, 0x10, 0x6d, 0x20, 0x00, 0x09, 0x00, 0x26, 0x08, 0xc1, 0xc3, 0x00, 0x6d, 0x82, 0x00, 0x28, 0x13, 0x04, 0x60,
0xd9, 0x60, 0x18, 0x15, 0xa1, 0x58, 0xd7, 0x06, 0xe1, 0xc1, 0x36, 0x0c, 0x0a, 0x95, 0x4d, 0x10, 0x8a, 0x60, 0x03, 0xb0, 0x61, 0x18, 0x38, 0x6e, 0x43, 0xd0, 0x6d, 0x18, 0x86, 0xcd, 0x23, 0x30,
0x41, 0x78, 0x9a, 0x0d, 0x82, 0x12, 0x06, 0x1b, 0x0a, 0x00, 0x0c, 0x80, 0x49, 0x0c, 0xd8, 0x04, 0xfc, 0xb4, 0x85, 0xa5, 0xb9, 0x01, 0x01, 0x65, 0x05, 0x61, 0x61, 0x69, 0x4d, 0x10, 0x00, 0x66,
0x43, 0xa0, 0x6c, 0x20, 0xca, 0xc0, 0xba, 0xcc, 0x60, 0x43, 0xb1, 0x91, 0x01, 0x00, 0x9c, 0x41, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29, 0x41, 0x50, 0x85, 0x0c,
0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x18, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8,
0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48, 0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29, 0x81, 0x54, 0x89, 0x0c, 0xcf, 0x85, 0x2e, 0x0f,
0xae, 0x2c, 0xc8, 0xcd, 0xed, 0x8d, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a, 0x90, 0x79, 0x75, 0xc8, 0xf0, 0x5c, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2, 0xdc, 0xe8, 0xe6, 0xa6,
0x08, 0x62, 0x70, 0x06, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07,
0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d,
0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87,
0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c,
0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87,
0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x05, 0x10, 0x06, 0x81,
0x9f, 0xf4, 0x0a, 0x04, 0xce, 0xac, 0x3f, 0x92, 0xf4, 0x3a, 0xa5, 0xcb, 0xeb, 0x63, 0x7a, 0x5d, 0x5e, 0x26, 0x0b, 0xeb, 0x66, 0x73, 0x59, 0x0e, 0x4c, 0x02, 0x81, 0xc1, 0x0a, 0x68, 0x02, 0xbf,
0x76, 0x38, 0xed, 0x06, 0x02, 0xb3, 0x41, 0x2c, 0x56, 0x5b, 0x03, 0x7f, 0x40, 0xc6, 0xbb, 0xde, 0x70, 0xd7, 0x58, 0x5e, 0x0e, 0xd3, 0xcb, 0xc8, 0xb0, 0x9b, 0xcc, 0x2e, 0x1b, 0xdf, 0x72, 0x66,
0x5a, 0xec, 0x1a, 0xb3, 0xc3, 0xf3, 0xb9, 0x4b, 0x7a, 0x9d, 0xd2, 0xe5, 0xf5, 0x31, 0xbd, 0x2e, 0x2f, 0x93, 0x85, 0x75, 0xb3, 0xb9, 0x2c, 0xe7, 0xd5, 0xdd, 0xf3, 0xf4, 0xd9, 0x5d, 0x26, 0x83,
0xd2, 0x6e, 0xba, 0xcf, 0x04, 0xb0, 0xe1, 0xf2, 0x9d, 0xc7, 0x8f, 0x00, 0x6b, 0xa3, 0x8a, 0x82, 0x88, 0xd8, 0xc9, 0x89, 0x08, 0x1f, 0xb9, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x66, 0x00, 0x0a, 0x58, 0xa0, 0x30, 0x05, 0xc8, 0x94, 0x00, 0x00, 0x44, 0x85, 0x31, 0x62,
0x60, 0x00, 0x20, 0x08, 0x06, 0x8b, 0x44, 0x04, 0x23, 0x06, 0x0e, 0x00, 0x82, 0x60, 0x90, 0x50, 0x44, 0xf0, 0x3c, 0x8f, 0x61, 0x18, 0x43, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
D3D12_SHADER_BYTECODE code;
code.pShaderBytecode = rt_lib_dxil;
code.BytecodeLength = sizeof(rt_lib_dxil);
return code;
}
static D3D12_SHADER_BYTECODE get_embedded_subobject_rt_lib(void)
{
static const BYTE rt_lib_dxil[] =
{
#if 0
RWStructuredBuffer<float> RW1 : register(u0);
RWStructuredBuffer<float> RW2 : register(u1);
RWStructuredBuffer<float> RW3 : register(u2);
RWStructuredBuffer<float> RW4 : register(u3);
RaytracingShaderConfig config = { 4, 8 };
RaytracingPipelineConfig pconfig = { 1 };
GlobalRootSignature grs = { "UAV(u0)" };
GlobalRootSignature grs_dummy = { "UAV(u10)" };
LocalRootSignature lrs_raygen = { "UAV(u1)" };
LocalRootSignature lrs_other1 = { "UAV(u2)" };
LocalRootSignature lrs_other2 = { "UAV(u3)" };
TriangleHitGroup thg = { "", "RayClosestHit" };
ProceduralPrimitiveHitGroup phg = { "", "RayClosestHitAABB", "RayIntersect" };
SubobjectToExportsAssociation exports1 = { "grs", "thg;phg;RayGen" };
SubobjectToExportsAssociation exports2 = { "lrs_raygen", "RayGen" };
SubobjectToExportsAssociation exports3 = { "lrs_other1", "thg" };
SubobjectToExportsAssociation exports4 = { "lrs_other2", "phg" };
struct Payload { float i; };
struct Attr { float v; };
[shader("closesthit")]
void RayClosestHit(inout Payload p, BuiltInTriangleIntersectionAttributes a)
{
p.i = RW3[0] + RW1[0];
}
[shader("closesthit")]
void RayClosestHitAABB(inout Payload p, Attr a)
{
p.i = RW4[0] + a.v + RW1[0];
}
[shader("intersection")]
void RayIntersect()
{
Attr v;
ReportHit(float(RW4[0]), 0, v);
}
[shader("raygeneration")]
void RayGen()
{
RW1[0] = 0;
RW2[0] = 0;
}
#endif
0x44, 0x58, 0x42, 0x43, 0x70, 0x9b, 0x56, 0x9a, 0x45, 0x30, 0x0d, 0x5a, 0x3b, 0x8b, 0x5a, 0xf0, 0xb8, 0xc9, 0x15, 0x14, 0x01, 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xa8, 0x05, 0x00, 0x00, 0xc4, 0x05, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x52, 0x44, 0x41, 0x54, 0x60, 0x05, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0xc4, 0x02, 0x00, 0x00,
0x20, 0x03, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, 0x00, 0x52, 0x57, 0x31, 0x00, 0x52, 0x57, 0x32, 0x00, 0x52, 0x57, 0x33, 0x00, 0x52, 0x57, 0x34,
0x00, 0x01, 0x3f, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x73, 0x74, 0x48, 0x69, 0x74, 0x40, 0x40, 0x59, 0x41, 0x58, 0x55, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x40, 0x40, 0x55,
0x42, 0x75, 0x69, 0x6c, 0x74, 0x49, 0x6e, 0x54, 0x72, 0x69, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x65, 0x73, 0x40, 0x40, 0x40, 0x5a, 0x00, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x73, 0x74, 0x48, 0x69, 0x74, 0x00, 0x01, 0x3f, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x6f,
0x73, 0x65, 0x73, 0x74, 0x48, 0x69, 0x74, 0x41, 0x41, 0x42, 0x42, 0x40, 0x40, 0x59, 0x41, 0x58, 0x55, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x40, 0x40, 0x55, 0x41, 0x74, 0x74, 0x72, 0x40,
0x40, 0x40, 0x5a, 0x00, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x73, 0x74, 0x48, 0x69, 0x74, 0x41, 0x41, 0x42, 0x42, 0x00, 0x01, 0x3f, 0x52, 0x61, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72,
0x73, 0x65, 0x63, 0x74, 0x40, 0x40, 0x59, 0x41, 0x58, 0x58, 0x5a, 0x00, 0x52, 0x61, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x65, 0x63, 0x74, 0x00, 0x01, 0x3f, 0x52, 0x61, 0x79, 0x47, 0x65,
0x6e, 0x40, 0x40, 0x59, 0x41, 0x58, 0x58, 0x5a, 0x00, 0x52, 0x61, 0x79, 0x47, 0x65, 0x6e, 0x00, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x00, 0x70, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x00, 0x67,
0x72, 0x73, 0x00, 0x67, 0x72, 0x73, 0x5f, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x00, 0x6c, 0x72, 0x73, 0x5f, 0x72, 0x61, 0x79, 0x67, 0x65, 0x6e, 0x00, 0x6c, 0x72, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65,
0x72, 0x31, 0x00, 0x6c, 0x72, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x32, 0x00, 0x74, 0x68, 0x67, 0x00, 0x70, 0x68, 0x67, 0x00, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x31, 0x00, 0x65,
0x78, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x32, 0x00, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x33, 0x00, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x34, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x88, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x0a, 0x00, 0x68, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x0a, 0x00, 0xa6, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x63, 0x00, 0x08, 0x00,
0xc9, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x24, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x94, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00,
0x08, 0x01, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0xfa, 0x93, 0x0b, 0xc7, 0x79, 0xdb, 0x00, 0x47, 0xbc, 0xdb,
0x5b, 0x62, 0x9d, 0x01, 0x44, 0x58, 0x49, 0x4c, 0x48, 0x0a, 0x00, 0x00, 0x63, 0x00, 0x06, 0x00, 0x92, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x03, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x30, 0x0a, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x89, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c,
0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0x20, 0x00, 0x12, 0x60, 0xd9, 0x60, 0x08, 0x02, 0xb0, 0x00, 0xd4, 0x06, 0x62, 0xf8,
0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0x36, 0x18, 0x84, 0x00, 0x2c, 0x40, 0xb5, 0xc1, 0x28, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x24, 0xa0, 0xda, 0x40, 0x18, 0x04, 0x70, 0x06, 0x00, 0x00, 0x00,
0x49, 0x18, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x0c, 0x01, 0x31, 0x4c, 0x08, 0x86, 0x09, 0x41, 0x31, 0x21, 0x30, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00,
0x40, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c,
0x10, 0x88, 0xc1, 0x0c, 0xc0, 0x4c, 0xdf, 0x38, 0xb0, 0x43, 0x38, 0xcc, 0xc3, 0x3c, 0xb8, 0x81, 0x2c, 0xdc, 0xc2, 0x2c, 0xd0, 0x83, 0x3c, 0xd4, 0xc3, 0x38, 0xd0, 0x43, 0x3d, 0xc8, 0x43, 0x39,
0x90, 0x83, 0x28, 0xd4, 0x83, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x03, 0x1f, 0x98, 0x03, 0x3b, 0xbc, 0x43, 0x38, 0xd0, 0x83, 0x1f, 0xa0, 0x00, 0xa0, 0x60, 0x04, 0xe0, 0x1c, 0x69, 0x8a, 0x28, 0x61,
0xf2, 0x53, 0x00, 0x5b, 0x1c, 0x60, 0x40, 0x01, 0x40, 0xc4, 0x30, 0x82, 0x00, 0x1c, 0x1b, 0x48, 0x53, 0x44, 0x09, 0x93, 0xbf, 0x51, 0xc8, 0x32, 0x89, 0x4d, 0x1b, 0x21, 0x40, 0x63, 0x2c, 0x84,
0xd8, 0x4c, 0x44, 0x24, 0x11, 0xc2, 0x84, 0x38, 0x8d, 0x36, 0x4d, 0x11, 0x12, 0x50, 0x13, 0x21, 0xa1, 0xc0, 0xa0, 0xa3, 0x0c, 0x43, 0x81, 0x50, 0x72, 0x8b, 0x34, 0x45, 0x94, 0x30, 0xf9, 0xda,
0x34, 0x45, 0x28, 0x00, 0x68, 0x29, 0xc3, 0x50, 0x30, 0xd4, 0x94, 0x60, 0xa0, 0x67, 0x8e, 0x00, 0x0c, 0x6e, 0x1a, 0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x57, 0x42, 0x5a, 0x89, 0xc9, 0x2f, 0x6e,
0x1b, 0x15, 0x00, 0x00, 0x00, 0xd1, 0x1c, 0x01, 0x42, 0xd3, 0x3d, 0xc3, 0xe5, 0x4f, 0xd8, 0x43, 0x48, 0x7e, 0x08, 0x34, 0xc3, 0x42, 0xa0, 0x80, 0x2a, 0x87, 0x14, 0x55, 0x51, 0x34, 0x45, 0x64,
0x95, 0x65, 0x88, 0xaa, 0x28, 0x02, 0x00, 0x00, 0x98, 0x22, 0xc2, 0xe6, 0x08, 0x82, 0x52, 0x68, 0x11, 0x10, 0x31, 0xb4, 0x95, 0xa1, 0x8a, 0x02, 0xea, 0x06, 0x02, 0xe6, 0x08, 0x40, 0x81, 0x00,
0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x3a, 0x0f, 0x24, 0x90, 0x21, 0x23, 0x45, 0x44, 0x00, 0x1e, 0x00, 0x30, 0x0f, 0x00, 0x98, 0x07, 0x00, 0xcc,
0x03, 0x00, 0x1e, 0xf2, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x69, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0xf3, 0x00,
0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0xe7, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x8f, 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x43, 0x1e, 0x0c, 0x08, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x1b, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79,
0x3a, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x02, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x8a, 0x4a, 0xa0, 0x0c, 0x8a, 0x61, 0x04, 0xa0, 0x30, 0x0a, 0xa1, 0x08, 0x0a, 0xa2, 0x28, 0xca, 0xa1, 0x14, 0x48, 0x1b, 0x01, 0x20, 0xb0, 0x40, 0x01, 0x11, 0x46, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99,
0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x84,
0x88, 0x99, 0x20, 0x44, 0xcd, 0x06, 0x61, 0x20, 0x26, 0x08, 0x91, 0xb3, 0x41, 0x18, 0x0c, 0x0e, 0x6c, 0x69, 0x62, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x08, 0xd1, 0x33, 0x41, 0x10, 0x00, 0x0e, 0x52,
0x57, 0x31, 0x13, 0x84, 0x08, 0x9a, 0x20, 0x68, 0xd7, 0x04, 0x21, 0x8a, 0x36, 0x08, 0xc3, 0xb3, 0x61, 0x51, 0x16, 0x46, 0x51, 0x86, 0xc6, 0x71, 0x1c, 0x68, 0x82, 0x20, 0x04, 0x1c, 0xa4, 0xae,
0x64, 0x36, 0x2c, 0x83, 0x34, 0x29, 0xc3, 0xd0, 0x38, 0x8e, 0x03, 0x4d, 0x10, 0x22, 0x69, 0x82, 0x20, 0x08, 0x1c, 0xa4, 0xae, 0x66, 0x36, 0x2c, 0x95, 0x75, 0x29, 0xd5, 0xd0, 0x38, 0x8e, 0x03,
0x4d, 0x10, 0x84, 0x81, 0x83, 0xd4, 0x15, 0xcd, 0x86, 0x85, 0xc8, 0x34, 0x85, 0x18, 0x1a, 0xc7, 0x71, 0xa0, 0x0d, 0x44, 0x44, 0x61, 0xdb, 0x06, 0x02, 0xe0, 0x00, 0x60, 0x82, 0xa0, 0x10, 0x1b,
0x80, 0x0d, 0xc3, 0xf0, 0x7d, 0x1b, 0x86, 0xea, 0xfb, 0x36, 0x0c, 0xca, 0xf7, 0x6d, 0x18, 0xc0, 0x20, 0x0c, 0xc4, 0x60, 0x82, 0xe0, 0x14, 0x13, 0x04, 0xc8, 0xd8, 0x10, 0x80, 0xc1, 0x04, 0x01,
0x3a, 0x36, 0x24, 0x83, 0x37, 0x06, 0x64, 0x30, 0x06, 0x65, 0x60, 0x06, 0x67, 0x60, 0x06, 0x04, 0x26, 0x08, 0x60, 0x80, 0x6d, 0x10, 0x14, 0x35, 0xd8, 0x50, 0x00, 0x69, 0x00, 0x74, 0x6b, 0x40,
0x54, 0x08, 0xf8, 0x91, 0x0a, 0xcb, 0x1b, 0x62, 0x7b, 0x9b, 0x2b, 0x9b, 0xa3, 0x43, 0x4a, 0xa3, 0x03, 0x02, 0xca, 0x0a, 0xc2, 0xaa, 0x82, 0x0a, 0xcb, 0x63, 0x7b, 0x0b, 0x23, 0x03, 0x02, 0xaa,
0x12, 0xaa, 0x4b, 0x63, 0xa3, 0x4b, 0x72, 0xa3, 0x92, 0x4b, 0x0b, 0x73, 0x3b, 0x63, 0x2b, 0x4b, 0x72, 0xa3, 0x2b, 0x93, 0x9b, 0x2b, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x0b, 0xa2, 0xa3, 0x93, 0x4b,
0x13, 0xab, 0xa3, 0x2b, 0x9b, 0x03, 0x02, 0x02, 0xd2, 0x9a, 0x20, 0x44, 0xd3, 0x04, 0x21, 0xa2, 0x26, 0x08, 0x51, 0x35, 0x41, 0x88, 0xac, 0x0d, 0x81, 0xb2, 0x01, 0x71, 0x83, 0x37, 0x30, 0x1e,
0x38, 0x70, 0x83, 0x38, 0x90, 0x83, 0x0d, 0x85, 0xd7, 0x06, 0x00, 0x30, 0x07, 0x5c, 0x83, 0x80, 0x1f, 0xa9, 0xb0, 0xbc, 0x21, 0xb6, 0xb7, 0xb9, 0xb2, 0x39, 0x3a, 0xa4, 0x34, 0xba, 0xa0, 0x20,
0x21, 0x21, 0x20, 0xa0, 0xac, 0x20, 0xac, 0x2a, 0xa8, 0xb0, 0x3c, 0xb6, 0xb7, 0x30, 0x32, 0x20, 0xa0, 0xaa, 0x20, 0x3a, 0x3a, 0x39, 0x20, 0x20, 0x20, 0xad, 0x0d, 0x88, 0x1b, 0xbc, 0x81, 0xf1,
0xc0, 0xc1, 0x13, 0x07, 0x72, 0xb0, 0xa1, 0x20, 0x83, 0x3a, 0x00, 0x00, 0x3b, 0xe0, 0x13, 0xf0, 0x23, 0x15, 0x96, 0x77, 0x54, 0xe6, 0x06, 0x04, 0x94, 0x15, 0x84, 0x85, 0xa5, 0xb5, 0x81, 0x70,
0x03, 0x38, 0x88, 0x03, 0x39, 0xd8, 0x50, 0x9c, 0x01, 0x1e, 0x00, 0x40, 0x1e, 0xb0, 0x0a, 0xf8, 0x91, 0x0a, 0xcb, 0x4b, 0x72, 0xa3, 0x2b, 0x93, 0x9b, 0x2b, 0x1b, 0xa3, 0x03, 0x02, 0xca, 0x0a,
0xc2, 0xc2, 0xd2, 0xda, 0x40, 0xb8, 0x81, 0x1b, 0xc4, 0x81, 0x1c, 0x6c, 0x28, 0xca, 0x60, 0x0f, 0x00, 0x80, 0x0f, 0x58, 0x98, 0xb1, 0xbd, 0x85, 0xd1, 0xf1, 0x79, 0x6b, 0x73, 0x4b, 0x83, 0x7b,
0xa3, 0x2b, 0x73, 0xa3, 0x03, 0x19, 0x43, 0x0b, 0x93, 0x63, 0x34, 0x95, 0xd6, 0x06, 0xc7, 0x56, 0x06, 0x32, 0xf4, 0x32, 0xb4, 0xb2, 0x02, 0x42, 0x25, 0x14, 0x14, 0xb4, 0x21, 0x00, 0x85, 0x09,
0x02, 0x18, 0x64, 0x1b, 0x86, 0x3f, 0x08, 0x05, 0x51, 0xd8, 0x30, 0xf8, 0xc1, 0x28, 0x88, 0xc2, 0x86, 0x81, 0x14, 0x48, 0x41, 0x14, 0xaa, 0xb0, 0xb1, 0xd9, 0xb5, 0xb9, 0xa4, 0x91, 0x95, 0xb9,
0xd1, 0x4d, 0x09, 0x82, 0x2a, 0x64, 0x78, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x02, 0xa2, 0x09, 0x19, 0x9e, 0x8b, 0x5d, 0x18, 0x9b, 0x5d, 0x99, 0xdc, 0x94, 0xc0, 0xa8, 0x43,
0x86, 0xe7, 0x32, 0x87, 0x16, 0x46, 0x56, 0x26, 0xd7, 0xf4, 0x46, 0x56, 0xc6, 0x36, 0x25, 0x40, 0xca, 0x90, 0xe1, 0xb9, 0xc8, 0x95, 0xcd, 0xbd, 0xd5, 0xc9, 0x8d, 0x95, 0xcd, 0x4d, 0x09, 0xb8,
0x4a, 0x64, 0x78, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x82, 0x33, 0xa8, 0x43, 0x86, 0xe7, 0x52, 0xe6, 0x46, 0x27, 0x97, 0x07,
0xf5, 0x96, 0xe6, 0x46, 0x37, 0x37, 0xa5, 0x58, 0x83, 0x39, 0xb0, 0x83, 0x3c, 0xe0, 0x03, 0x00, 0x79, 0x18, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66,
0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e,
0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0,
0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83,
0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30,
0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43,
0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00,
0x62, 0x00, 0x00, 0x00, 0x05, 0x20, 0x06, 0x81, 0x9f, 0xf4, 0x1a, 0x03, 0x02, 0x67, 0xd6, 0x1f, 0x49, 0x7a, 0x9d, 0xd2, 0xe5, 0xf5, 0x31, 0xbd, 0x2e, 0x2f, 0x93, 0x85, 0x75, 0xb3, 0xb9, 0x2c,
0x07, 0x36, 0x81, 0xc0, 0x60, 0x05, 0x88, 0x41, 0xe0, 0x27, 0xbd, 0xca, 0x80, 0xc0, 0x99, 0xf5, 0x47, 0x92, 0x5e, 0xa7, 0x74, 0x79, 0x7d, 0x4c, 0xaf, 0xcb, 0xcb, 0x64, 0x61, 0xdd, 0x6c, 0x2e,
0xcb, 0x81, 0x4d, 0x20, 0x30, 0x58, 0x02, 0x62, 0x10, 0xf8, 0x49, 0xaf, 0x33, 0x20, 0x70, 0x66, 0xfd, 0x91, 0xa4, 0xd7, 0x29, 0x5d, 0x5e, 0x1f, 0xd3, 0xeb, 0xf2, 0x32, 0x59, 0x58, 0x37, 0x9b,
0xcb, 0x72, 0x60, 0x13, 0x08, 0x0c, 0xd6, 0x80, 0x18, 0x04, 0x7e, 0xd2, 0x2b, 0x0d, 0x08, 0x9c, 0x59, 0x7f, 0x24, 0xe9, 0x75, 0x4a, 0x97, 0xd7, 0xc7, 0xf4, 0xba, 0xbc, 0x4c, 0x16, 0xd6, 0xcd,
0xe6, 0xb2, 0x1c, 0xd8, 0x04, 0x02, 0x83, 0x45, 0x80, 0x0a, 0x81, 0x9f, 0x34, 0x9c, 0x1f, 0xb2, 0xdf, 0xf3, 0xf2, 0x9c, 0x8e, 0x4c, 0xd3, 0x81, 0xc0, 0x6c, 0x10, 0x5b, 0x85, 0x86, 0xf3, 0xec,
0x77, 0x98, 0x0c, 0x04, 0x56, 0x85, 0xf5, 0x34, 0x9b, 0x9e, 0x74, 0x53, 0xe5, 0xe9, 0xb0, 0xfb, 0xcc, 0x2e, 0x27, 0xdd, 0xf4, 0xb2, 0x7c, 0x5e, 0x1e, 0xd3, 0xd3, 0x6f, 0x77, 0x90, 0x4e, 0x97,
0xa7, 0xc5, 0x75, 0x7a, 0x79, 0x0e, 0x04, 0x02, 0xb5, 0x55, 0xb0, 0x06, 0x81, 0x9f, 0x34, 0x9c, 0x1f, 0xb2, 0xdf, 0xf3, 0xf2, 0x9c, 0x8e, 0x4c, 0xd3, 0x83, 0x41, 0xa1, 0x10, 0x08, 0xcc, 0x06,
0xb1, 0x55, 0x68, 0x38, 0xcf, 0x7e, 0x87, 0xc9, 0x40, 0x60, 0x35, 0x48, 0xa7, 0xcb, 0x81, 0x40, 0xa0, 0xb6, 0x0e, 0x9e, 0xc0, 0x4f, 0x1a, 0xce, 0x1f, 0xcb, 0x6e, 0x20, 0x30, 0x1b, 0xc4, 0x62,
0xb5, 0x65, 0x50, 0x05, 0x7e, 0xd2, 0x70, 0x3e, 0xe9, 0xa6, 0x97, 0xe5, 0xf3, 0xf2, 0x98, 0x0e, 0x04, 0x66, 0x83, 0x58, 0xac, 0xb6, 0x16, 0xf0, 0x80, 0x8c, 0x77, 0xbd, 0xe1, 0xae, 0xb1, 0xbc,
0x1c, 0xa6, 0x97, 0x91, 0x61, 0x37, 0x99, 0x5d, 0x36, 0xbe, 0xe5, 0xcc, 0xb4, 0xd8, 0x35, 0x66, 0x87, 0xe7, 0x73, 0x97, 0xf4, 0x3a, 0xa5, 0xcb, 0xeb, 0x63, 0x7a, 0x5d, 0x5e, 0x26, 0x0b, 0xeb,
0x66, 0x73, 0x59, 0xce, 0x33, 0xb3, 0xdf, 0x61, 0xba, 0xcf, 0x10, 0xae, 0xe1, 0xf2, 0x9d, 0xc7, 0x8f, 0x00, 0x6b, 0xa3, 0x8a, 0x82, 0x88, 0x4a, 0x07, 0x18, 0xfc, 0xe2, 0xb6, 0x2d, 0x01, 0x1b,
0x2e, 0xdf, 0x79, 0xfc, 0x08, 0xb0, 0x36, 0xaa, 0x28, 0x88, 0x88, 0x9d, 0x9c, 0x88, 0xf0, 0x8b, 0xdb, 0x36, 0x85, 0x6d, 0xb8, 0x7c, 0xe7, 0xf1, 0x23, 0xe2, 0x71, 0xa2, 0x29, 0x44, 0x26, 0x5f,
0x9a, 0x22, 0x4a, 0x98, 0x7c, 0x6d, 0x9a, 0x22, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x14, 0x15, 0xb0, 0x40, 0x59, 0x0a, 0xd0, 0x54, 0x02, 0x00, 0x00, 0x00, 0xd4, 0x05, 0x83, 0xc0, 0x20, 0x18, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xd0, 0x59, 0x85, 0x30, 0x62, 0xa0, 0x00, 0x20,
0x08, 0x06, 0x96, 0x56, 0x04, 0xd3, 0x44, 0x44, 0xa3, 0x09, 0x01, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x5d, 0x86, 0x10, 0x23, 0x06, 0x0a, 0x00, 0x82, 0x60, 0x60, 0x75, 0x48, 0x60, 0x59,
0x07, 0x35, 0x9a, 0x10, 0x00, 0x16, 0x10, 0xf0, 0xd9, 0xc4, 0xe0, 0x64, 0xd9, 0xb0, 0x01, 0x11, 0x08, 0x03, 0x80, 0xe1, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb6, 0x11, 0x00, 0xa6,
0x11, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x15, 0xb0, 0x40,
0x59, 0x0a, 0xd0, 0x54, 0x02, 0x00, 0x00, 0x00, 0xc4, 0x05, 0x83, 0xc0, 0x20, 0x18, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xd0, 0x59, 0x85, 0x30, 0x62, 0xa0, 0x00, 0x20, 0x08, 0x06, 0x96, 0x56,
0x04, 0xd3, 0x44, 0x44, 0xa3, 0x09, 0x01, 0xb0, 0x97, 0x21, 0xa9, 0x2a, 0x0a, 0x80, 0x61, 0x43, 0x00, 0x9f, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0xe8, 0xb8, 0xe5, 0x18, 0x31, 0x50, 0x00, 0x10,
0x04, 0x03, 0x0b, 0x0c, 0x96, 0x20, 0xcb, 0x94, 0x6b, 0x34, 0x21, 0x00, 0x8c, 0x08, 0xe0, 0xb3, 0x89, 0x21, 0xe2, 0xb8, 0x61, 0x03, 0x22, 0x10, 0x06, 0x00, 0xc3, 0x81, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0xb6, 0x11, 0x00, 0xa6, 0x11, 0x3c, 0x00, 0x00, 0x01, 0x31, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5b, 0x06, 0x23, 0x20, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x61, 0x20, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x15, 0xb0, 0x40, 0x59, 0x0a, 0x14, 0xaf, 0x00, 0x4d, 0x25, 0x00,
0xb4, 0x05, 0x63, 0x26, 0x62, 0x89, 0x98, 0x51, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xae, 0x32, 0x84, 0x11, 0x03, 0x05, 0x00, 0x41, 0x30, 0xb0, 0x32, 0x23, 0x90, 0x24, 0x02, 0x1a, 0x4d,
0x08, 0x80, 0x11, 0x03, 0xa4, 0x00, 0x41, 0x30, 0xd8, 0xb2, 0x23, 0xa0, 0x08, 0x04, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x34, 0x95, 0x00, 0x45, 0x85, 0x29, 0x50, 0xc0, 0x02, 0x04, 0x8c, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xe4, 0x05, 0x83, 0xc0, 0x20, 0x18, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60,
0xd0, 0x59, 0x45, 0x30, 0x62, 0xe0, 0x00, 0x20, 0x08, 0x06, 0x58, 0x76, 0x04, 0xd3, 0x54, 0x10, 0x04, 0x81, 0x44, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xd0, 0x5d, 0xc6, 0x30, 0x62, 0xe0, 0x00,
0x20, 0x08, 0x06, 0x98, 0x86, 0x04, 0x14, 0x65, 0x14, 0x45, 0x91, 0x48, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
D3D12_SHADER_BYTECODE code;
code.pShaderBytecode = rt_lib_dxil;
code.BytecodeLength = sizeof(rt_lib_dxil);
return code;
}
static D3D12_SHADER_BYTECODE get_embedded_subobject_dupe_rt_lib(void)
{
static const BYTE rt_lib_dxil[] =
{
#if 0
RaytracingShaderConfig config = { 4, 8 };
RaytracingPipelineConfig pconfig = { 1 };
RaytracingShaderConfig config1 = { 8, 12 };
RaytracingPipelineConfig pconfig1 = { 2 };
[shader("raygeneration")]
void RayGen()
{
}
#endif
0x44, 0x58, 0x42, 0x43, 0x69, 0x86, 0x8c, 0x61, 0xc9, 0x37, 0x40, 0xe7, 0x79, 0x99, 0xb5, 0xf1, 0x92, 0x2d, 0x6a, 0xed, 0x01, 0x00, 0x00, 0x00, 0x48, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x52, 0x44, 0x41, 0x54, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0x52, 0x61, 0x79, 0x47, 0x65, 0x6e, 0x40, 0x40, 0x59, 0x41, 0x58, 0x58, 0x5a, 0x00, 0x52, 0x61, 0x79, 0x47, 0x65, 0x6e, 0x00, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x00, 0x70, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x00, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x00, 0x70, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x00, 0x04, 0x00, 0x00, 0x00,
0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00