chromium/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.frag.00000000.inc

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

#pragma once
constexpr uint8_t kOverlayDraw_frag_00000000[] =;

// Generated from:
//
// #version 450 core
//
// #extension GL_GOOGLE_include_directive : require
//
// #line 1 "shaders/src/OverlayDraw.inc"
//
// #extension GL_EXT_samplerless_texture_functions : require
//
// struct TextWidgetData
// {
//     uvec4 coordinates;
//     vec4 color;
//     uvec4 fontSize;
//     uvec4 text[256 / 16];
// };
//
// struct GraphWidgetData
// {
//     uvec4 coordinates;
//     vec4 color;
//     uvec4 valueWidth;
//     uvec4 values[256 / 4];
// };
//
// layout(set = 0, binding = 0)uniform TextWidgets
// {
//     TextWidgetData textWidgetsData[32];
// };
//
// layout(set = 0, binding = 1)uniform GraphWidgets
// {
//     GraphWidgetData graphWidgetsData[32];
// };
//
// layout(set = 0, binding = 2)uniform texture2DArray font;
//
// layout(push_constant)uniform PushConstants
// {
//     uvec2 viewportSize;
//
//     bool isText;
//
//     bool rotateXY;
// } params;
// #line 18 "shaders/src/OverlayDraw.frag"
//
// layout(location = 0)flat in uint widgetIndex;
// layout(location = 0)out vec4 color;
//
// uint getChar(const uvec2 coordInWidget, const uint fontGlyphWidth)
// {
//     const uint charIndex = coordInWidget . x / fontGlyphWidth;
//     const uint packIndex = charIndex / 4;
//     const uvec4 arrayItem = textWidgetsData[widgetIndex]. text[packIndex / 4];
//     const uint col = packIndex % 4;
//
//     uint packedChars;
//     if(col == 0)
//     {
//         packedChars = arrayItem[0];
//     }
//     else if(col == 1)
//     {
//         packedChars = arrayItem[1];
//     }
//     else if(col == 2)
//     {
//         packedChars = arrayItem[2];
//     }
//     else
//     {
//         packedChars = arrayItem[3];
//     }
//
//     const uint shift =(charIndex % 4)* 8;
//
//     return(packedChars >> shift)& 0xFF;
//
// }
//
// float sampleFont(const uint textChar,
//                  const uvec2 coordInWidget,
//                  const uvec2 fontGlyphSize,
//                  const uint fontMip)
// {
//     const uvec2 coordInGlyph = coordInWidget % fontGlyphSize;
//     return texelFetch(font, ivec3(coordInGlyph, textChar), int(fontMip)). x;
// }
//
// vec4 renderText(uvec2 coordInWidget)
// {
//     const uvec4 fontSizePacked = textWidgetsData[widgetIndex]. fontSize;
//     const uvec2 fontGlyphSize = fontSizePacked . xy;
//     const uint fontMip = fontSizePacked . z;
//
//     const uint textChar = getChar(coordInWidget, fontGlyphSize . x);
//
//     if(textChar >= 95)
//     {
//         return vec4(0);
//     }
//
//     const float sampleValue = sampleFont(textChar, coordInWidget, fontGlyphSize, fontMip);
//
//     vec4 result = vec4(0, 0, 0, 0.4);
//     result = mix(result, textWidgetsData[widgetIndex]. color, sampleValue);
//
//     return result;
// }
//
// uint getValue(const uvec2 coordInWidget, const uint valueWidth)
// {
//     const uint valueIndex = coordInWidget . x / valueWidth . x;
//     const uvec4 arrayItem = graphWidgetsData[widgetIndex]. values[valueIndex / 4];
//     const uint col = valueIndex % 4;
//
//     if(col == 0)
//     {
//         return arrayItem[0];
//     }
//     else if(col == 1)
//     {
//         return arrayItem[1];
//     }
//     else if(col == 2)
//     {
//         return arrayItem[2];
//     }
//     else
//     {
//         return arrayItem[3];
//     }
// }
//
// vec4 renderGraph(uvec2 coordInWidget)
// {
//     const uvec4 widgetCoords = graphWidgetsData[widgetIndex]. coordinates;
//
//     if(coordInWidget . x == 0 || coordInWidget . y == 0 ||
//         coordInWidget . x + 1 ==(widgetCoords . z - widgetCoords . x)||
//         coordInWidget . y + 1 ==(widgetCoords . w - widgetCoords . y))
//     {
//         return vec4(0, 0, 0, 1);
//     }
//
//     const uint valueWidth = graphWidgetsData[widgetIndex]. valueWidth . x;
//
//     const uint value = getValue(coordInWidget, valueWidth);
//
//     const uint widgetHeight = widgetCoords . w - widgetCoords . y;
//
//     bool indicateOverflow = value > widgetHeight && coordInWidget . y + 4 >= widgetHeight
//             &&((coordInWidget . x ^ coordInWidget . y)& 1)== 0;
//
//     if((widgetHeight - coordInWidget . y)>= value || indicateOverflow)
//     {
//         return vec4(0);
//     }
//
//     return graphWidgetsData[widgetIndex]. color;
// }
//
// void main()
// {
//     const uvec4 widgetCoords = params . isText
//         ? textWidgetsData[widgetIndex]. coordinates
//         : graphWidgetsData[widgetIndex]. coordinates;
//     uvec2 fragCoords = uvec2(floor(gl_FragCoord . xy));
//
//     if(params . rotateXY)
//     {
//
//         fragCoords . x = params . viewportSize . x - 1 - fragCoords . x;
//         fragCoords = fragCoords . yx;
//     }
//
//     const uvec2 coordInWidget = fragCoords - widgetCoords . xy;
//
//     if(any(lessThan(coordInWidget, uvec2(0)))||
//         any(greaterThanEqual(coordInWidget, widgetCoords . zw - widgetCoords . xy)))
//     {
//         color = vec4(1, 0, 1, 1);
//         return;
//     }
//
//     if(params . isText)
//     {
//         color = renderText(coordInWidget);
//     }
//     else
//     {
//         color = renderGraph(coordInWidget);
//     }
// }