// 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.00000026.inc:
//   Pre-generated shader for the ANGLE Vulkan back-end.

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