feat(render3d): DLSS super resolution and Reflex through NVIDIA Streamline
streamline.ludic: slInit before the Vulkan instance, feature support per adapter, a frame token per frame, Reflex sleep and PCL latency markers, and DLSS super resolution on the lit HDR frame (Halton jitter, depth + zero motion vectors with camera motion from clipToPrevClip, matrices carrying the Vulkan path's y flip and depth remap). Bloom, tonemap and sharpen read the upscaled size. The device asks for privateData and present_id, which Streamline's hooks need. R3D_DLSS / R3D_REFLEX / R3D_SL_LOG for tests. gpu_feature_implemented: DLSS and Reflex. ludic bundle (Windows): app native "<dir>" copies native libraries beside the executable. Verified on an RTX 3070 Ti: DLSS Quality evaluates 1280x720 -> 1920x1080. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
ad8f44b78a
commit
ac539b0150
10 changed files with 529 additions and 6 deletions
|
|
@ -171,6 +171,9 @@ function gvk_tex_storage(tex: int, array: bool, ifmt: int, w: int, h: int, layer
|
|||
if samples > 1 { levels = 1 }
|
||||
var usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT
|
||||
if depth { usage = usage | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT } else { usage = usage | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT }
|
||||
# DLSS reads and writes the frame from compute: a float colour target is storage too while
|
||||
# Streamline is running (8-bit sRGB formats cannot be, so only the float ones)
|
||||
if gsl_on and samples == 1 and (vkfmt == VK_FORMAT_R16G16B16A16_SFLOAT or vkfmt == VK_FORMAT_R32_SFLOAT) { usage = usage | VK_IMAGE_USAGE_STORAGE_BIT }
|
||||
let ici = bytes(VkImageCreateInfo_sizeof)
|
||||
Vk.zero(ici, VkImageCreateInfo_sizeof)
|
||||
Vk.put_i32(ici, VkImageCreateInfo_sType, VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue