// GENERATED FILE - DO NOT EDIT.
// Generated by gen_vk_internal_shaders.py.
//
// Copyright 2020 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.00000025.inc:
//   Pre-generated shader for the ANGLE Vulkan back-end.

#pragma once
constexpr uint8_t kImageCopy_frag_00000025[] = {
    0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0x0b,0x53,0x95,0x55,
    0x14,0x86,0x3f,0xce,0x81,0x73,0x10,0xe4,0x22,0xa0,0x84,0x8a,0xe5,0x85,0x2e,0x62,
    0x88,0x05,0x46,0x02,0x2a,0x19,0x49,0x46,0xa9,0x68,0x56,0x62,0x11,0x06,0x96,0x98,
    0x24,0x49,0x9a,0x94,0xd7,0x14,0x2c,0xad,0xa4,0xbc,0x74,0x13,0x2b,0xd1,0x4a,0xc4,
    0xfa,0x17,0xfd,0xa2,0xa6,0xcb,0x4c,0x33,0xed,0xf5,0x9d,0x67,0x31,0xef,0x9c,0xb1,
    0x3a,0x33,0x7b,0xce,0xb7,0x9f,0xbd,0xf6,0xda,0xef,0x5a,0x7b,0x7d,0xeb,0x9c,0x64,
    0x62,0x69,0x3a,0x8a,0x72,0xa2,0x82,0x28,0x3f,0xfa,0x25,0xca,0x7c,0xe6,0x44,0x89,
    0x40,0xa2,0xa8,0x30,0x4a,0xc5,0xdf,0x1b,0x3b,0xb7,0x75,0xd6,0x1d,0x1c,0xee,0xab,
    0x6b,0x68,0xac,0xb7,0xf5,0xe2,0x28,0x19,0xdb,0xd9,0x5a,0x49,0x94,0x8e,0x72,0xc3,
    0xb7,0x8d,0xfd,0xbd,0x7b,0x07,0x8d,0x17,0x85,0x71,0x27,0x8c,0xd2,0x60,0x67,0x3c,
    0x6d,0x3e,0xc2,0x53,0x51,0xec,0xd3,0xf6,0x44,0x51,0x47,0x94,0x17,0x95,0x73,0xde,
    0x52,0xbe,0x9d,0xe5,0xc0,0xf2,0x85,0x25,0x60,0xa5,0xc2,0x92,0xb0,0x0a,0x61,0xb9,
    0xb0,0x7b,0x84,0xe5,0xc1,0x16,0x0a,0x4b,0xc1,0xee,0x13,0x96,0x86,0x2d,0x13,0x96,
    0x0f,0x7b,0x50,0xd8,0x2c,0xd8,0x0a,0x61,0x05,0xb0,0x7a,0x61,0x85,0xb0,0x06,0x61,
    0xb3,0x61,0x4d,0xc2,0x8a,0x60,0x2d,0x71,0x9e,0x92,0x33,0xf1,0x5a,0xce,0x36,0x84,
    0xef,0x25,0xe4,0xc7,0xe7,0x8b,0x65,0x6e,0x79,0x5e,0xc4,0xbc,0x3c,0xec,0x4a,0xc4,
    0xeb,0xc9,0x38,0x37,0xf6,0x3c,0x37,0xd8,0xa4,0x88,0xd3,0xf2,0x5a,0x19,0xe6,0x69,
    0xe2,0x4f,0xc4,0x3c,0x37,0x8e,0x31,0xcd,0x98,0x17,0x76,0x16,0x60,0x6f,0xb6,0x85,
    0xc4,0x96,0x8b,0xed,0x6c,0xfc,0x18,0x6f,0x66,0x5e,0x24,0xbe,0x8b,0xb1,0xf7,0xb3,
    0xcb,0xf0,0x15,0xc5,0x3a,0x4b,0x67,0xf2,0xec,0x1a,0x6c,0x94,0xfd,0xcf,0x70,0x1b,
    0x3b,0xbf,0x82,0xfc,0x97,0x73,0x7e,0x45,0x7c,0x4e,0x86,0xd5,0x12,0xeb,0x3c,0xf4,
    0x98,0x7d,0x25,0x6b,0x69,0x59,0xaf,0x96,0x78,0x16,0xb1,0x5e,0x16,0xd7,0x51,0x22,
    0xce,0x6d,0x2d,0xba,0x3d,0xef,0x66,0x77,0xbf,0x68,0x76,0x3f,0xb5,0xd4,0x96,0xdb,
    0xaf,0xe2,0x5c,0x5f,0x5f,0x4d,0x6e,0x2c,0x2f,0x6b,0xd9,0xeb,0xe7,0xae,0xc3,0x9f,
    0xf1,0xaa,0xa0,0xa0,0x4d,0xee,0x44,0x3f,0x39,0xa2,0xe1,0x09,0x9e,0xdb,0x88,0xdd,
    0xe6,0x1b,0x60,0x7e,0x66,0x7b,0xd6,0x7c,0x13,0xef,0x89,0xed,0x7f,0x86,0x58,0x53,
    0x68,0x7a,0x8e,0xe7,0xa4,0xd8,0x77,0xa1,0xc1,0xe7,0x3b,0x24,0x66,0x8b,0x71,0x57,
    0x96,0xfd,0x9e,0xac,0xdc,0x9e,0xe4,0x9d,0xf1,0xf9,0xf9,0xac,0xbb,0xb9,0xc2,0x3b,
    0xe0,0xfe,0x6e,0x48,0x1d,0x4e,0xe3,0x7b,0x2d,0xf1,0x4d,0xd3,0x47,0x92,0x71,0x2e,
    0xf3,0x62,0xbb,0x5c,0xe2,0x33,0xf6,0x47,0x20,0x79,0xd8,0xe6,0xcb,0x3d,0xfb,0x7c,
    0x81,0xcc,0x2d,0xdf,0xeb,0xb3,0xe6,0x23,0x32,0xb7,0xfb,0xbd,0xcc,0xbc,0x95,0xba,
    0x2f,0xe1,0xfe,0x36,0x07,0x5a,0x4c,0xef,0x29,0x61,0xf8,0xdd,0x0c,0xf2,0x3e,0xcd,
    0x61,0xbd,0x2d,0x28,0xaa,0xa4,0xff,0xcc,0xa5,0x16,0x5b,0xb1,0xa9,0x82,0x9f,0x0a,
    0x36,0x36,0x9f,0xcf,0xbe,0xaa,0x38,0xe6,0x64,0xac,0x7f,0xbe,0xd8,0x2f,0x24,0x26,
    0x5b,0x5b,0xc0,0xdc,0xfc,0x5b,0xcd,0xde,0x8b,0xff,0x6a,0xec,0xfd,0x3d,0x33,0x3e,
    0x15,0x6c,0x16,0x4b,0x7f,0xb3,0x3a,0xfe,0x3d,0xf8,0xa8,0x41,0xf7,0x5f,0xc1,0xde,
    0xfb,0x5c,0x0d,0x79,0x5c,0x86,0x6f,0xcb,0xc3,0x03,0xe4,0x6e,0x09,0xbe,0x53,0xf4,
    0x3f,0xe3,0xc7,0x98,0x3f,0x04,0xf3,0x3d,0xcb,0x65,0x8f,0xe9,0x5d,0x8e,0xcd,0x9f,
    0xc1,0xb7,0x9f,0x51,0x23,0xfa,0x57,0xa0,0xbf,0x56,0xf4,0x3f,0x0c,0x77,0xfd,0x75,
    0x30,0xd7,0x5f,0x2f,0xfa,0x6d,0x6d,0x25,0xfd,0xd6,0x7c,0xaf,0x14,0x2d,0x8f,0xa0,
    0x65,0x95,0xe8,0x7f,0x14,0xee,0xfa,0x1b,0x60,0xbe,0xa7,0x51,0xf6,0x98,0xfe,0x46,
    0x6c,0x4c,0xbf,0x9f,0x51,0x2f,0xfa,0x1f,0x43,0xff,0x6a,0xd1,0xdf,0x04,0x77,0xfd,
    0x8f,0xc3,0x5c,0x7f,0xb3,0xe8,0xb7,0xb5,0x35,0x71,0xed,0x65,0x7c,0xaf,0x91,0x7b,
    0x6f,0x41,0x8b,0xd5,0x5d,0xa6,0x1e,0x33,0xac,0x45,0xfa,0x81,0xd7,0x44,0x2b,0x1a,
    0xdd,0x4f,0x33,0x7e,0xac,0x47,0x3c,0x49,0x7f,0xf0,0x9a,0x7c,0x0a,0xcd,0xed,0x72,
    0xd6,0x46,0xb8,0xcf,0x3b,0x38,0xfb,0x04,0x35,0xfa,0x34,0x36,0x1d,0xf8,0xb1,0x1e,
    0xd2,0x89,0x9f,0x4d,0x92,0xdf,0x67,0xe1,0x5b,0x83,0x4d,0x2a,0xd6,0x9e,0xd9,0x1b,
    0x09,0xdb,0x02,0xcb,0x89,0x9f,0x53,0x71,0xff,0xd9,0x8a,0xed,0x16,0x7c,0xf8,0x19,
    0xdb,0x38,0xa3,0x4b,0xce,0xd8,0x0e,0xef,0x09,0xca,0xac,0x47,0x3c,0x4f,0x8c,0x5b,
    0xe9,0x21,0xdb,0xc9,0xcb,0x7a,0xd6,0xfc,0xae,0x5e,0xc0,0xd7,0x0e,0xb9,0xab,0x17,
    0xe1,0x7e,0x57,0x2f,0xc1,0xfc,0xae,0xba,0xe5,0xae,0x6c,0x6d,0x67,0x18,0xfd,0xe4,
    0x78,0xa7,0xd4,0xcd,0xcb,0xf4,0x95,0x5d,0xa2,0xf3,0x15,0x78,0x2b,0x7d,0xbf,0x07,
    0x9b,0xcd,0xa1,0x2b,0x59,0xcc,0xaf,0xc2,0x7a,0xa4,0x8f,0x24,0x24,0x27,0xbd,0xf8,
    0xf0,0x71,0x3a,0x9c,0x65,0x7c,0x37,0x7b,0x7b,0xc5,0xf7,0x6b,0x33,0xbe,0x67,0xc5,
    0xf3,0x3e,0xd8,0x6e,0x7a,0x65,0x9e,0xf4,0x78,0xcf,0x4d,0x1f,0x35,0xd3,0x4d,0x3c,
    0xfd,0x92,0xab,0xd7,0xc9,0xd5,0x1e,0xc9,0xd5,0x1b,0x70,0xcf,0xd5,0x5e,0x98,0xe7,
    0x6a,0x9f,0xe4,0xca,0xd6,0x06,0xc2,0xd8,0x87,0xef,0x01,0xc9,0xd5,0x9b,0x77,0xc9,
    0xd5,0x7e,0xf8,0x34,0xbe,0x07,0x61,0xed,0x68,0x74,0x3f,0xf6,0xfd,0x5b,0xb8,0x77,
    0xb3,0x79,0x0b,0x0d,0xfd,0xd8,0x0f,0xa0,0x63,0x48,0x74,0x98,0xcd,0x81,0x30,0x86,
    0xd8,0x7f,0x40,0x74,0xbc,0x7d,0x17,0x1d,0x07,0xe1,0x9e,0xd7,0xe1,0xac,0x3b,0x7b,
    0x07,0x36,0xfc,0x2f,0x77,0x76,0x08,0x1f,0x3e,0xc6,0xb8,0xb3,0xc3,0xec,0x3d,0x24,
    0xbe,0xdf,0xcd,0xba,0xb3,0x23,0xb0,0xc3,0xff,0x71,0x67,0x47,0xc8,0x87,0xc7,0x33,
    0x94,0x75,0x87,0xdd,0xe2,0xff,0x3d,0xfc,0xfb,0x7b,0xf7,0x3e,0x4c,0xdf,0xc5,0xa3,
    0xb0,0x1c,0x61,0xc7,0x60,0x09,0x61,0xc7,0x61,0xc9,0x38,0xd6,0xcc,0x7b,0x77,0x02,
    0x9f,0x47,0xd9,0x73,0x1c,0x9d,0x23,0xac,0x79,0x2d,0x9d,0xa2,0x96,0x4e,0x4a,0x2d,
    0x7d,0x00,0xf7,0x5a,0x3a,0x0d,0xf3,0x5a,0x1a,0x95,0x3b,0xb4,0xb5,0x33,0x61,0x9c,
    0x23,0xc6,0x33,0x12,0xe3,0x18,0xbf,0xdf,0xde,0x23,0xcf,0xc2,0xc6,0xe4,0xff,0x81,
    0xdb,0x7e,0x38,0x63,0x9b,0xc9,0xf7,0x47,0xb0,0xb3,0x92,0xef,0x84,0xe4,0x7b,0x04,
    0x1b,0xcb,0xef,0x28,0x67,0x9f,0x93,0xb8,0x3e,0x26,0xae,0xf3,0x12,0xd7,0x27,0x70,
    0x8f,0xeb,0x53,0x98,0xc7,0x35,0x2e,0x71,0xd9,0xda,0x85,0x30,0x2e,0xe1,0xfb,0x82,
    0xd4,0xe6,0x67,0x68,0xd5,0xda,0xfc,0x1c,0xee,0x36,0x17,0xb1,0xf1,0xdf,0xda,0x8b,
    0xd8,0x98,0xde,0x71,0x7c,0x5e,0x92,0x5e,0xfa,0x05,0x7a,0xaf,0x88,0xcf,0x2f,0xe1,
    0xb6,0xff,0x32,0x73,0x5f,0xfb,0x8a,0xff,0x42,0xbf,0x52,0x03,0x5f,0xc3,0xba,0x24,
    0xbe,0x6f,0xe0,0xed,0xc4,0x37,0x21,0xf1,0xd9,0xda,0xd5,0x30,0x26,0xd0,0x72,0x55,
    0xb4,0x5f,0x43,0xbb,0xff,0xce,0x5e,0x93,0x77,0xdd,0xed,0x27,0x44,0xcb,0xb7,0x59,
    0x5a,0xbe,0x83,0x55,0x8b,0x96,0xef,0xe1,0xae,0x65,0x52,0xb4,0xd8,0xda,0xf5,0x30,
    0x26,0xf1,0x7d,0x5d,0xb4,0xdc,0x44,0xcb,0x0d,0xb4,0xdc,0x14,0x2d,0x6e,0x3f,0x29,
    0x5a,0x7e,0xc8,0xd2,0xf2,0x23,0xec,0xa4,0x68,0xf9,0x09,0xee,0x5a,0xa6,0x44,0x8b,
    0xad,0xdd,0x8a,0x6d,0x33,0xbe,0x6f,0x89,0x96,0xdb,0x72,0xef,0xa6,0xe5,0x36,0xff,
    0x1d,0x4d,0x8b,0xdb,0x4f,0x65,0xdd,0xf1,0x78,0x56,0x8d,0x8e,0x4a,0xcd,0xff,0x8c,
    0x3f,0xf3,0x75,0x87,0xf9,0xdf,0xe1,0x6d,0x6f,0x0a,0xe3,0x1f,0x7e,0x58,0x71,0xc1,
    0xf4,0x0f,0x00,0x00
};

// Generated from:
//
// #version 450 core
//
// #extension GL_EXT_samplerless_texture_functions : require
//
// layout(set = 0, binding = 0)uniform itexture3D src;
// layout(location = 0)out ivec4 dest;
//
// layout(push_constant)uniform PushConstants {
//
//     ivec2 srcOffset;
//     ivec2 destOffset;
//     int srcMip;
//     int srcLayer;
//
//     bool flipX;
//     bool flipY;
//
//     bool premultiplyAlpha;
//     bool unmultiplyAlpha;
//
//     bool destHasLuminance;
//     bool destIsAlpha;
//
//     bool srcIsSRGB;
//     bool destIsSRGB;
//
//     int destDefaultChannelsMask;
//     bool rotateXY;
// } params;
//
// void main()
// {
//     ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
//
//     ivec2 srcSubImageCoords = destSubImageCoords;
//
//     if(params . flipX)
//     {
//         srcSubImageCoords . x = - srcSubImageCoords . x;
//     }
//     if(params . flipY)
//     {
//         srcSubImageCoords . y = - srcSubImageCoords . y;
//     }
//     if(params . rotateXY)
//     {
//         srcSubImageCoords . xy = srcSubImageCoords . yx;
//     }
//
//           ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip);
//
//     if(params . premultiplyAlpha)
//     {
//         srcValue . rgb *= srcValue . a;
//     }
//     else if(params . unmultiplyAlpha && srcValue . a > 0)
//     {
//         srcValue . rgb /= srcValue . a;
//     }
//
//            ivec4 destValue = ivec4(srcValue);
//
//     if(params . destHasLuminance)
//     {
//         destValue . rg = destValue . ra;
//     }
//     else if(params . destIsAlpha)
//     {
//         destValue . r = destValue . a;
//     }
//     else
//     {
//         int defaultChannelsMask = params . destDefaultChannelsMask;
//         if((defaultChannelsMask & 2)!= 0)
//         {
//             destValue . g = 0;
//         }
//         if((defaultChannelsMask & 4)!= 0)
//         {
//             destValue . b = 0;
//         }
//         if((defaultChannelsMask & 8)!= 0)
//         {
//             destValue . a = 1;
//         }
//     }
//
//     dest = destValue;
// }
