29 lines
1.1 KiB
Plaintext
29 lines
1.1 KiB
Plaintext
[vk::binding(0, 0)] __DynamicResource<__DynamicResourceKind.General> gBuffers[];
|
|
[vk::binding(1, 0)] __DynamicResource<__DynamicResourceKind.Sampler> gSamplers[];
|
|
[vk::binding(2, 0)] __DynamicResource<__DynamicResourceKind.General> gStorageTextures[];
|
|
|
|
bool IsValid<T>(DescriptorHandle<T> handle) where T : IOpaqueDescriptor
|
|
{
|
|
var handleVal = (uint2)handle;
|
|
return handleVal.x != 0xFFFFFFFF;
|
|
}
|
|
|
|
export T getDescriptorFromHandle<T>(DescriptorHandle<T> handle) where T : IOpaqueDescriptor
|
|
{
|
|
__target_switch
|
|
{
|
|
case spirv:
|
|
switch (T.kind) {
|
|
case DescriptorKind.Buffer:
|
|
return gBuffers[((uint2)handle).x].asOpaqueDescriptor<T>();
|
|
case DescriptorKind.CombinedTextureSampler:
|
|
return gSamplers[((uint2)handle).x].asOpaqueDescriptor<T>();
|
|
case DescriptorKind.Texture:
|
|
return gStorageTextures[((uint2)handle).x].asOpaqueDescriptor<T>();
|
|
default:
|
|
return defaultGetDescriptorFromHandle(handle);
|
|
}
|
|
default:
|
|
return defaultGetDescriptorFromHandle(handle);
|
|
}
|
|
} |