#version 140 #pragma optionNV(fastmath on) #pragma optionNV(ifcvt none) #pragma optionNV(inline all) #pragma optionNV(strict on) #pragma optionNV(unroll all) in vec4 POSITION; in vec2 TEXCOORD0; in vec2 TEXCOORD1; in vec2 TEXCOORD2; in vec2 TEXCOORD3; out vec2 frag_TEXCOORD0; out vec2 frag_TEXCOORD1; out vec2 frag_TEXCOORD2; out vec2 frag_TEXCOORD3; // // Structure definitions // struct VS_OUTPUT { vec4 position; vec2 uvr; vec2 uvg; vec2 uvb; vec2 uvn; }; // // Global variable definitions // layout (std140) uniform cBuffer { mat4 reproj; mat4 proj; mat4 invProj; vec4 colorMask; float vignette; float blackLevel; float gamma; }; // // Function declarations // VS_OUTPUT VS_REPROJECT( in vec4 position, in vec2 uvr, in vec2 uvg, in vec2 uvb, in vec2 uvn ); vec2 Reproject( in vec2 uv ); // // Function definitions // VS_OUTPUT VS_REPROJECT( in vec4 position, in vec2 uvr, in vec2 uvg, in vec2 uvb, in vec2 uvn ) { VS_OUTPUT o; o.position = position; o.uvr = Reproject( uvr); o.uvg = Reproject( uvg); o.uvb = Reproject( uvb); o.uvn = Reproject( uvn); return o; } vec2 Reproject( in vec2 uv ) { vec4 ndc; ndc = vec4( ((2.00000 * uv.x ) - 1.00000), ((2.00000 * uv.y ) - 1.00000), 0.000000, 1.00000); ndc = ( invProj * ndc ); ndc /= ndc.w ; ndc = ( reproj * ndc ); ndc = ( proj * ndc ); ndc /= ndc.w ; return ((ndc.xy * 0.500000) + 0.500000); } // // User varying // out vec4 xlat_varying_SV_POSITION; // // Translator's entry point // void main() { VS_OUTPUT xlat_retVal; xlat_retVal = VS_REPROJECT( POSITION, TEXCOORD0, TEXCOORD1, TEXCOORD2, TEXCOORD3); xlat_varying_SV_POSITION = xlat_retVal.position; frag_TEXCOORD0 = xlat_retVal.uvr; frag_TEXCOORD1 = xlat_retVal.uvg; frag_TEXCOORD2 = xlat_retVal.uvb; frag_TEXCOORD3 = xlat_retVal.uvn; gl_Position = xlat_varying_SV_POSITION; }