// GENERATED FILE - DO NOT EDIT. // Generated by gen_vk_internal_shaders.py. // // Copyright 2018 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // shaders/gen/ImageCopy.frag.00000005.inc: // Pre-generated shader for the ANGLE Vulkan back-end. #pragma once constexpr uint8_t kImageCopy_frag_00000005[] = …; // Generated from: // // #version 450 core // // #extension GL_EXT_samplerless_texture_functions : require // // layout(set = 0, binding = 0)uniform texture2DArray src; // layout(location = 0)out ivec4 dst; // // layout(push_constant)uniform PushConstants { // // ivec2 srcOffset; // ivec2 dstOffset; // int srcMip; // int srcLayer; // // bool flipX; // bool flipY; // // bool premultiplyAlpha; // bool unmultiplyAlpha; // // bool dstHasLuminance; // bool dstIsAlpha; // // bool srcIsSRGB; // bool dstIsSRGB; // // int dstDefaultChannelsMask; // bool rotateXY; // } params; // // float linearToSRGB(float linear) // { // // if(linear <= 0.0031308) // { // return linear * 12.92; // } // else // { // return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; // } // } // // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; // // ivec2 srcSubImageCoords = dstSubImageCoords; // // if(params . flipX) // { // srcSubImageCoords . x = - srcSubImageCoords . x; // } // if(params . flipY) // { // srcSubImageCoords . y = - srcSubImageCoords . y; // } // if(params . rotateXY) // { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // // vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . srcIsSRGB) // { // // srcValue . r = linearToSRGB(srcValue . r); // srcValue . g = linearToSRGB(srcValue . g); // srcValue . b = linearToSRGB(srcValue . b); // } // // if(params . premultiplyAlpha) // { // srcValue . rgb *= srcValue . a; // } // else if(params . unmultiplyAlpha && srcValue . a > 0) // { // srcValue . rgb /= srcValue . a; // } // // srcValue *= 255.0; // // ivec4 dstValue = ivec4(srcValue); // // if(params . dstHasLuminance) // { // dstValue . rg = dstValue . ra; // } // else if(params . dstIsAlpha) // { // dstValue . r = dstValue . a; // } // else // { // int defaultChannelsMask = params . dstDefaultChannelsMask; // if((defaultChannelsMask & 2)!= 0) // { // dstValue . g = 0; // } // if((defaultChannelsMask & 4)!= 0) // { // dstValue . b = 0; // } // if((defaultChannelsMask & 8)!= 0) // { // dstValue . a = 1; // } // } // // dst = dstValue; // }