#include "pixel_formats.xesli" #include "xenos_draw.hlsli" struct XePSInput { XeVertexPrePS pre_ps; sample float4 position : SV_Position; }; precise float main(XePSInput xe_input) : SV_Depth { // Input Z may be outside the viewport range (it's clamped after the shader). // Assuming that 0...0.5 on the host corresponds to 0...1 on the guest, to // allow for safe reinterpretation of any 24-bit value to and from float24 // depth using depth output without unrestricted depth range. return asfloat(XeFloat20e4To32( XeFloat32To20e4(asuint(saturate(xe_input.position.z * 2.0f)), true), true)); }