Skip to content

Instantly share code, notes, and snippets.

@gwihlidal
Last active March 16, 2023 09:35
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save gwihlidal/ad83a0979eb33bbe5556a01904ddf2e5 to your computer and use it in GitHub Desktop.
Save gwihlidal/ad83a0979eb33bbe5556a01904ddf2e5 to your computer and use it in GitHub Desktop.
Example of Vulkan negative viewport height extension
// With the VK_KHR_maintenance1 extension, you can specify negative viewport height.
// This allows negative height to be specified in the height field to perform a
// y-inversion of the clip-space to framebuffer-space transform. This allows you
// to avoid having to use gl_Position.y = -gl_Position.y, and makes porting to other
// APIs like DirectX12 much easier.
// You negate the height *and* move the "origin" to the bottom left.
// Unlike the original AMD extension which just negated height.
VkViewport viewport = {};
viewport.x = drawState->viewport.x;
viewport.y = drawState->viewport.height - drawState->viewport.y;
viewport.width = drawState->viewport.width;
viewport.height = -drawState->viewport.height;
viewport.minDepth = drawState->viewport.minZ;
viewport.maxDepth = drawState->viewport.maxZ;
vkCmdSetViewport(commandBuffer, 0, 1, &viewport);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment