diff options
Diffstat (limited to '3rdparty/bgfx/tools')
36 files changed, 11453 insertions, 4300 deletions
diff --git a/3rdparty/bgfx/tools/geometryc/geometryc.cpp b/3rdparty/bgfx/tools/geometryc/geometryc.cpp index 1e1f175e102..ba0d0274da6 100644 --- a/3rdparty/bgfx/tools/geometryc/geometryc.cpp +++ b/3rdparty/bgfx/tools/geometryc/geometryc.cpp @@ -1,25 +1,24 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ -#include <stdio.h> - #include <algorithm> -#include <vector> #include <bx/string.h> #include <bgfx/bgfx.h> -#include "../../src/vertexdecl.h" +#include "../../src/vertexlayout.h" #include <tinystl/allocator.h> -#include <tinystl/unordered_map.h> -#include <tinystl/unordered_set.h> #include <tinystl/string.h> +#include <tinystl/vector.h> namespace stl = tinystl; -#include <forsyth-too/forsythtriangleorderoptimizer.h> -#include <ib-compress/indexbuffercompression.h> +#include <meshoptimizer/src/meshoptimizer.h> + +#define CGLTF_VALIDATE_ENABLE_ASSERTS BX_CONFIG_DEBUG +#define CGLTF_IMPLEMENTATION +#include <cgltf/cgltf.h> #define BGFX_GEOMETRYC_VERSION_MAJOR 1 #define BGFX_GEOMETRYC_VERSION_MINOR 0 @@ -27,7 +26,7 @@ namespace stl = tinystl; #if 0 # define BX_TRACE(_format, ...) \ do { \ - printf(BX_FILE_LINE_LITERAL "BGFX " _format "\n", ##__VA_ARGS__); \ + bx::printf(BX_FILE_LINE_LITERAL "BGFX " _format "\n", ##__VA_ARGS__); \ } while(0) # define BX_WARN(_condition, _format, ...) \ @@ -38,7 +37,7 @@ namespace stl = tinystl; } \ } while(0) -# define BX_CHECK(_condition, _format, ...) \ +# define BX_ASSERT(_condition, _format, ...) \ do { \ if (!(_condition) ) \ { \ @@ -49,42 +48,31 @@ namespace stl = tinystl; #endif // 0 #include <bx/bx.h> -#include <bx/debug.h> +#include <bx/bounds.h> #include <bx/commandline.h> -#include <bx/timer.h> +#include <bx/debug.h> +#include <bx/file.h> #include <bx/hash.h> -#include <bx/uint32_t.h> #include <bx/math.h> -#include <bx/file.h> - -#include "bounds.h" - -struct Vector3 -{ - float x; - float y; - float z; -}; +#include <bx/timer.h> +#include <bx/uint32_t.h> -typedef std::vector<Vector3> Vector3Array; +typedef stl::vector<bx::Vec3> Vec3Array; struct Index3 { int32_t m_position; int32_t m_texcoord; int32_t m_normal; - int32_t m_vertexIndex; - int32_t m_vbc; // Barycentric ID. Holds eigher 0, 1 or 2. + int32_t m_vbc; // Barycentric ID. Holds either 0, 1 or 2. }; -typedef stl::unordered_map<uint64_t, Index3> Index3Map; - -struct Triangle +struct TriIndices { - uint64_t m_index[3]; + Index3 m_index[3]; }; -typedef std::vector<Triangle> TriangleArray; +typedef stl::vector<TriIndices> TriangleArray; struct Group { @@ -94,7 +82,7 @@ struct Group stl::string m_material; }; -typedef std::vector<Group> GroupArray; +typedef stl::vector<Group> GroupArray; struct Primitive { @@ -105,62 +93,146 @@ struct Primitive stl::string m_name; }; -typedef std::vector<Primitive> PrimitiveArray; +typedef stl::vector<Primitive> PrimitiveArray; + +struct Axis +{ + enum Enum + { + NegativeX, + PositiveX, + NegativeY, + PositiveY, + NegativeZ, + PositiveZ, + }; +}; + +static bx::Vec3 s_axisVectors[6] = +{ + bx::Vec3(-1.0f, 0.0f, 0.0f), + bx::Vec3( 1.0f, 0.0f, 0.0f), + bx::Vec3( 0.0f,-1.0f, 0.0f), + bx::Vec3( 0.0f, 1.0f, 0.0f), + bx::Vec3( 0.0f, 0.0f,-1.0f), + bx::Vec3( 0.0f, 0.0f, 1.0f), +}; + +struct CoordinateSystem +{ + bx::Handedness::Enum m_handedness; + Axis::Enum m_up; + Axis::Enum m_forward; +}; + +struct CoordinateSystemMapping +{ + const char* m_param; + CoordinateSystem m_coordinateSystem; +}; + +static const CoordinateSystemMapping s_coordinateSystemMappings[] = +{ + { "lh-up+y", { bx::Handedness::Left, Axis::PositiveY, Axis::PositiveZ } }, + { "lh-up+z", { bx::Handedness::Left, Axis::PositiveZ, Axis::PositiveY } }, + { "rh-up+y", { bx::Handedness::Right, Axis::PositiveY, Axis::PositiveZ } }, + { "rh-up+z", { bx::Handedness::Right, Axis::PositiveZ, Axis::PositiveY } }, +}; + +struct Mesh +{ + Vec3Array m_positions; + Vec3Array m_normals; + Vec3Array m_texcoords; + TriangleArray m_triangles; + GroupArray m_groups; + + CoordinateSystem m_coordinateSystem; +}; static uint32_t s_obbSteps = 17; -#define BGFX_CHUNK_MAGIC_VB BX_MAKEFOURCC('V', 'B', ' ', 0x1) -#define BGFX_CHUNK_MAGIC_IB BX_MAKEFOURCC('I', 'B', ' ', 0x0) -#define BGFX_CHUNK_MAGIC_IBC BX_MAKEFOURCC('I', 'B', 'C', 0x0) -#define BGFX_CHUNK_MAGIC_PRI BX_MAKEFOURCC('P', 'R', 'I', 0x0) +constexpr uint32_t kChunkVertexBuffer = BX_MAKEFOURCC('V', 'B', ' ', 0x1); +constexpr uint32_t kChunkVertexBufferCompressed = BX_MAKEFOURCC('V', 'B', 'C', 0x0); +constexpr uint32_t kChunkIndexBuffer = BX_MAKEFOURCC('I', 'B', ' ', 0x0); +constexpr uint32_t kChunkIndexBufferCompressed = BX_MAKEFOURCC('I', 'B', 'C', 0x1); +constexpr uint32_t kChunkPrimitive = BX_MAKEFOURCC('P', 'R', 'I', 0x0); -long int fsize(FILE* _file) +void optimizeVertexCache(uint16_t* _indices, uint32_t _numIndices, uint32_t _numVertices) { - long int pos = ftell(_file); - fseek(_file, 0L, SEEK_END); - long int size = ftell(_file); - fseek(_file, pos, SEEK_SET); - return size; + uint16_t* newIndexList = new uint16_t[_numIndices]; + meshopt_optimizeVertexCache(newIndexList, _indices, _numIndices, _numVertices); + bx::memCopy(_indices, newIndexList, _numIndices * 2); + delete[] newIndexList; } -void triangleReorder(uint16_t* _indices, uint32_t _numIndices, uint32_t _numVertices, uint16_t _cacheSize) +uint32_t optimizeVertexFetch( + uint16_t* _indices + , uint32_t _numIndices + , uint8_t* _vertexData + , uint32_t _numVertices + , uint16_t _stride + ) { - uint16_t* newIndexList = new uint16_t[_numIndices]; - Forsyth::OptimizeFaces(_indices, _numIndices, _numVertices, 0, newIndexList, _cacheSize); - bx::memCopy(_indices, newIndexList, _numIndices*2); - delete [] newIndexList; + unsigned char* newVertices = (unsigned char*)malloc(_numVertices * _stride ); + size_t vertexCount = meshopt_optimizeVertexFetch(newVertices, _indices, _numIndices, _vertexData, _numVertices, _stride); + bx::memCopy(_vertexData, newVertices, _numVertices * _stride); + free(newVertices); + + return uint32_t(vertexCount); } -void triangleCompress(bx::WriterI* _writer, uint16_t* _indices, uint32_t _numIndices, uint8_t* _vertexData, uint32_t _numVertices, uint16_t _stride) +void writeCompressedIndices( + bx::WriterI* _writer + , const uint16_t* _indices + , uint32_t _numIndices + , uint32_t _numVertices + , bx::Error* _err + ) { - uint32_t* vertexRemap = (uint32_t*)malloc(_numVertices*sizeof(uint32_t) ); + size_t maxSize = meshopt_encodeIndexBufferBound(_numIndices, _numVertices); + unsigned char* compressedIndices = (unsigned char*)malloc(maxSize); + + size_t compressedSize = meshopt_encodeIndexBuffer(compressedIndices, maxSize, _indices, _numIndices); - WriteBitstream writer; - CompressIndexBuffer(_indices, _numIndices/3, vertexRemap, _numVertices, IBCF_AUTO, writer); - writer.Finish(); - printf( "uncompressed: %10d, compressed: %10d, ratio: %0.2f%%\n" + bx::printf("Indices uncompressed: %10d, compressed: %10d, ratio: %0.2f%%\n" , _numIndices*2 - , (uint32_t)writer.ByteSize() - , 100.0f - float(writer.ByteSize() ) / float(_numIndices*2)*100.0f + , (uint32_t)compressedSize + , 100.0f - float(compressedSize ) / float(_numIndices*2)*100.0f ); - BX_UNUSED(_vertexData, _stride); - uint8_t* outVertexData = (uint8_t*)malloc(_numVertices*_stride); - for (uint32_t ii = 0; ii < _numVertices; ++ii) - { - uint32_t remap = vertexRemap[ii]; - remap = UINT32_MAX == remap ? ii : remap; - bx::memCopy(&outVertexData[remap*_stride], &_vertexData[ii*_stride], _stride); - } - bx::memCopy(_vertexData, outVertexData, _numVertices*_stride); - free(outVertexData); + bx::write(_writer, (uint32_t)compressedSize, _err); + bx::write(_writer, compressedIndices, (uint32_t)compressedSize, _err); - free(vertexRemap); + free(compressedIndices); +} + +void writeCompressedVertices( + bx::WriterI* _writer + , const uint8_t* _vertices + , uint32_t _numVertices + , uint16_t _stride + , bx::Error* _err + ) +{ + size_t maxSize = meshopt_encodeVertexBufferBound(_numVertices, _stride); + unsigned char* compressedVertices = (unsigned char*)malloc(maxSize); + + size_t compressedSize = meshopt_encodeVertexBuffer(compressedVertices, maxSize, _vertices, _numVertices, _stride); + + bx::printf("Vertices uncompressed: %10d, compressed: %10d, ratio: %0.2f%%\n" + , _numVertices * _stride + , (uint32_t)compressedSize + , 100.0f - float(compressedSize) / float(_numVertices * _stride)*100.0f + ); + + bx::write(_writer, (uint32_t)compressedSize, _err); + bx::write(_writer, compressedVertices, (uint32_t)compressedSize, _err); - bx::write(_writer, writer.RawData(), (uint32_t)writer.ByteSize() ); + free(compressedVertices); } -void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexDecl _decl, const uint16_t* _indices, uint32_t _numIndices) +void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexLayout _layout, const uint16_t* _indices, uint32_t _numIndices) { struct PosTexcoord { @@ -188,14 +260,14 @@ void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexDecl _decl uint32_t i1 = indices[1]; uint32_t i2 = indices[2]; - bgfx::vertexUnpack(&v0.m_x, bgfx::Attrib::Position, _decl, _vertices, i0); - bgfx::vertexUnpack(&v0.m_u, bgfx::Attrib::TexCoord0, _decl, _vertices, i0); + bgfx::vertexUnpack(&v0.m_x, bgfx::Attrib::Position, _layout, _vertices, i0); + bgfx::vertexUnpack(&v0.m_u, bgfx::Attrib::TexCoord0, _layout, _vertices, i0); - bgfx::vertexUnpack(&v1.m_x, bgfx::Attrib::Position, _decl, _vertices, i1); - bgfx::vertexUnpack(&v1.m_u, bgfx::Attrib::TexCoord0, _decl, _vertices, i1); + bgfx::vertexUnpack(&v1.m_x, bgfx::Attrib::Position, _layout, _vertices, i1); + bgfx::vertexUnpack(&v1.m_u, bgfx::Attrib::TexCoord0, _layout, _vertices, i1); - bgfx::vertexUnpack(&v2.m_x, bgfx::Attrib::Position, _decl, _vertices, i2); - bgfx::vertexUnpack(&v2.m_u, bgfx::Attrib::TexCoord0, _decl, _vertices, i2); + bgfx::vertexUnpack(&v2.m_x, bgfx::Attrib::Position, _layout, _vertices, i2); + bgfx::vertexUnpack(&v2.m_u, bgfx::Attrib::TexCoord0, _layout, _vertices, i2); const float bax = v1.m_x - v0.m_x; const float bay = v1.m_y - v0.m_y; @@ -236,111 +308,131 @@ void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexDecl _decl for (uint32_t ii = 0; ii < _numVertices; ++ii) { - const float* tanu = &tangents[ii*6]; - const float* tanv = &tangents[ii*6 + 3]; + const bx::Vec3 tanu = bx::load<bx::Vec3>(&tangents[ii*6]); + const bx::Vec3 tanv = bx::load<bx::Vec3>(&tangents[ii*6 + 3]); - float normal[4]; - bgfx::vertexUnpack(normal, bgfx::Attrib::Normal, _decl, _vertices, ii); - float ndt = bx::vec3Dot(normal, tanu); + float nxyzw[4]; + bgfx::vertexUnpack(nxyzw, bgfx::Attrib::Normal, _layout, _vertices, ii); - float nxt[3]; - bx::vec3Cross(nxt, normal, tanu); - - float tmp[3]; - tmp[0] = tanu[0] - normal[0] * ndt; - tmp[1] = tanu[1] - normal[1] * ndt; - tmp[2] = tanu[2] - normal[2] * ndt; + const bx::Vec3 normal = bx::load<bx::Vec3>(nxyzw); + const float ndt = bx::dot(normal, tanu); + const bx::Vec3 nxt = bx::cross(normal, tanu); + const bx::Vec3 tmp = bx::sub(tanu, bx::mul(normal, ndt) ); float tangent[4]; - bx::vec3Norm(tangent, tmp); + bx::store(tangent, bx::normalize(tmp) ); + tangent[3] = bx::dot(nxt, tanv) < 0.0f ? -1.0f : 1.0f; - tangent[3] = bx::vec3Dot(nxt, tanv) < 0.0f ? -1.0f : 1.0f; - bgfx::vertexPack(tangent, true, bgfx::Attrib::Tangent, _decl, _vertices, ii); + bgfx::vertexPack(tangent, true, bgfx::Attrib::Tangent, _layout, _vertices, ii); } delete [] tangents; } -void write(bx::WriterI* _writer, const void* _vertices, uint32_t _numVertices, uint32_t _stride) +void write( + bx::WriterI* _writer + , const void* _vertices + , uint32_t _numVertices + , uint32_t _stride + , bx::Error* _err + ) { - Sphere maxSphere; - calcMaxBoundingSphere(maxSphere, _vertices, _numVertices, _stride); + bx::Sphere maxSphere; + bx::calcMaxBoundingSphere(maxSphere, _vertices, _numVertices, _stride); - Sphere minSphere; - calcMinBoundingSphere(minSphere, _vertices, _numVertices, _stride); + bx::Sphere minSphere; + bx::calcMinBoundingSphere(minSphere, _vertices, _numVertices, _stride); - if (minSphere.m_radius > maxSphere.m_radius) + if (minSphere.radius > maxSphere.radius) { - bx::write(_writer, maxSphere); + bx::write(_writer, maxSphere, _err); } else { - bx::write(_writer, minSphere); + bx::write(_writer, minSphere, _err); } - Aabb aabb; - toAabb(aabb, _vertices, _numVertices, _stride); - bx::write(_writer, aabb); + bx::Aabb aabb; + bx::toAabb(aabb, _vertices, _numVertices, _stride); + bx::write(_writer, aabb, _err); - Obb obb; - calcObb(obb, _vertices, _numVertices, _stride, s_obbSteps); - bx::write(_writer, obb); + bx::Obb obb; + bx::calcObb(obb, _vertices, _numVertices, _stride, s_obbSteps); + bx::write(_writer, obb, _err); } -void write(bx::WriterI* _writer - , const uint8_t* _vertices - , uint32_t _numVertices - , const bgfx::VertexDecl& _decl - , const uint16_t* _indices - , uint32_t _numIndices - , const uint8_t* _compressedIndices - , uint32_t _compressedSize - , const stl::string& _material - , const PrimitiveArray& _primitives - ) +void write( + bx::WriterI* _writer + , const uint8_t* _vertices + , uint32_t _numVertices + , const bgfx::VertexLayout& _layout + , const uint16_t* _indices + , uint32_t _numIndices + , bool _compress + , const stl::string& _material + , const PrimitiveArray& _primitives + , bx::Error* _err + ) { using namespace bx; using namespace bgfx; - uint32_t stride = _decl.getStride(); - write(_writer, BGFX_CHUNK_MAGIC_VB); - write(_writer, _vertices, _numVertices, stride); + uint32_t stride = _layout.getStride(); + + if (_compress) + { + write(_writer, kChunkVertexBufferCompressed, _err); + write(_writer, _vertices, _numVertices, stride, _err); + + write(_writer, _layout); + + write(_writer, uint16_t(_numVertices), _err); + writeCompressedVertices(_writer, _vertices, _numVertices, uint16_t(stride), _err); + } + else + { + write(_writer, kChunkVertexBuffer, _err); + write(_writer, _vertices, _numVertices, stride, _err); - write(_writer, _decl); + write(_writer, _layout, _err); - write(_writer, uint16_t(_numVertices) ); - write(_writer, _vertices, _numVertices*stride); + write(_writer, uint16_t(_numVertices), _err); + write(_writer, _vertices, _numVertices*stride, _err); + } - if (NULL != _compressedIndices) + if (_compress) { - write(_writer, BGFX_CHUNK_MAGIC_IBC); - write(_writer, _numIndices); - write(_writer, _compressedSize); - write(_writer, _compressedIndices, _compressedSize); + write(_writer, kChunkIndexBufferCompressed, _err); + write(_writer, _numIndices, _err); + + writeCompressedIndices(_writer, _indices, _numIndices, _numVertices, _err); } else { - write(_writer, BGFX_CHUNK_MAGIC_IB); - write(_writer, _numIndices); - write(_writer, _indices, _numIndices*2); + write(_writer, kChunkIndexBuffer, _err); + write(_writer, _numIndices, _err); + write(_writer, _indices, _numIndices*2, _err); } - write(_writer, BGFX_CHUNK_MAGIC_PRI); + write(_writer, kChunkPrimitive, _err); + uint16_t nameLen = uint16_t(_material.size() ); - write(_writer, nameLen); - write(_writer, _material.c_str(), nameLen); - write(_writer, uint16_t(_primitives.size() ) ); + write(_writer, nameLen, _err); + + write(_writer, _material.c_str(), nameLen, _err); + write(_writer, uint16_t(_primitives.size() ), _err); + for (PrimitiveArray::const_iterator primIt = _primitives.begin(); primIt != _primitives.end(); ++primIt) { const Primitive& prim = *primIt; nameLen = uint16_t(prim.m_name.size() ); - write(_writer, nameLen); - write(_writer, prim.m_name.c_str(), nameLen); - write(_writer, prim.m_startIndex); - write(_writer, prim.m_numIndices); - write(_writer, prim.m_startVertex); - write(_writer, prim.m_numVertices); - write(_writer, &_vertices[prim.m_startVertex*stride], prim.m_numVertices, stride); + write(_writer, nameLen, _err); + write(_writer, prim.m_name.c_str(), nameLen, _err); + write(_writer, prim.m_startIndex, _err); + write(_writer, prim.m_numIndices, _err); + write(_writer, prim.m_startVertex, _err); + write(_writer, prim.m_numVertices, _err); + write(_writer, &_vertices[prim.m_startVertex*stride], prim.m_numVertices, stride, _err); } } @@ -361,141 +453,61 @@ struct GroupSortByMaterial } }; -void help(const char* _error = NULL) +void mtxCoordinateTransform(float* _result, const CoordinateSystem& _cs) { - if (NULL != _error) + bx::Vec3 up = s_axisVectors[_cs.m_up]; + bx::Vec3 forward = s_axisVectors[_cs.m_forward]; + bx::Vec3 right = cross(forward,up); + + if (_cs.m_handedness == bx::Handedness::Left) { - fprintf(stderr, "Error:\n%s\n\n", _error); + right = bx::mul(right, -1.0f); } - fprintf(stderr - , "geometryc, bgfx geometry compiler tool, version %d.%d.%d.\n" - "Copyright 2011-2018 Branimir Karadzic. All rights reserved.\n" - "License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause\n\n" - , BGFX_GEOMETRYC_VERSION_MAJOR - , BGFX_GEOMETRYC_VERSION_MINOR - , BGFX_API_VERSION - ); - - fprintf(stderr - , "Usage: geometryc -f <in> -o <out>\n" - - "\n" - "Supported input file types:\n" - " *.obj Wavefront\n" - - "\n" - "Options:\n" - " -h, --help Help.\n" - " -v, --version Version information only.\n" - " -f <file path> Input file path.\n" - " -o <file path> Output file path.\n" - " -s, --scale <num> Scale factor.\n" - " --ccw Counter-clockwise winding order.\n" - " --flipv Flip texture coordinate V.\n" - " --obb <num> Number of steps for calculating oriented bounding box.\n" - " Default value is 17. Less steps less precise OBB is.\n" - " More steps slower calculation.\n" - " --packnormal <num> Normal packing.\n" - " 0 - unpacked 12 bytes (default).\n" - " 1 - packed 4 bytes.\n" - " --packuv <num> Texture coordinate packing.\n" - " 0 - unpacked 8 bytes (default).\n" - " 1 - packed 4 bytes.\n" - " --tangent Calculate tangent vectors (packing mode is the same as normal).\n" - " --barycentric Adds barycentric vertex attribute (packed in bgfx::Attrib::Color1).\n" - " -c, --compress Compress indices.\n" - - "\n" - "For additional information, see https://github.com/bkaradzic/bgfx\n" - ); + bx::mtxIdentity(_result); + bx::store(&_result[0], right); + bx::store(&_result[4], forward); + bx::store(&_result[8], up); } -int main(int _argc, const char* _argv[]) +float mtxDeterminant(const float* _a) { - bx::CommandLine cmdLine(_argc, _argv); - - if (cmdLine.hasArg('v', "version") ) - { - fprintf(stderr - , "geometryc, bgfx geometry compiler tool, version %d.%d.%d.\n" - , BGFX_GEOMETRYC_VERSION_MAJOR - , BGFX_GEOMETRYC_VERSION_MINOR - , BGFX_API_VERSION - ); - return bx::kExitSuccess; - } - - if (cmdLine.hasArg('h', "help") ) - { - help(); - return bx::kExitFailure; - } - - const char* filePath = cmdLine.findOption('f'); - if (NULL == filePath) - { - help("Input file name must be specified."); - return bx::kExitFailure; - } - - const char* outFilePath = cmdLine.findOption('o'); - if (NULL == outFilePath) - { - help("Output file name must be specified."); - return bx::kExitFailure; - } - - float scale = 1.0f; - const char* scaleArg = cmdLine.findOption('s', "scale"); - if (NULL != scaleArg) - { - if (!bx::fromString(&scale, scaleArg)) - { - scale = 1.0f; - } - } - - bool compress = cmdLine.hasArg('c', "compress"); - - cmdLine.hasArg(s_obbSteps, '\0', "obb"); - s_obbSteps = bx::uint32_min(bx::uint32_max(s_obbSteps, 1), 90); - - uint32_t packNormal = 0; - cmdLine.hasArg(packNormal, '\0', "packnormal"); - - uint32_t packUv = 0; - cmdLine.hasArg(packUv, '\0', "packuv"); - - bool ccw = cmdLine.hasArg("ccw"); - bool flipV = cmdLine.hasArg("flipv"); - bool hasTangent = cmdLine.hasArg("tangent"); - bool hasBc = cmdLine.hasArg("barycentric"); - - FILE* file = fopen(filePath, "r"); - if (NULL == file) - { - printf("Unable to open input file '%s'.", filePath); - exit(bx::kExitFailure); - } - - int64_t parseElapsed = -bx::getHPCounter(); - int64_t triReorderElapsed = 0; - - uint32_t size = (uint32_t)fsize(file); - char* data = new char[size+1]; - size = (uint32_t)fread(data, 1, size, file); - data[size] = '\0'; - fclose(file); + const float xx = _a[ 0]; + const float xy = _a[ 1]; + const float xz = _a[ 2]; + const float xw = _a[ 3]; + const float yx = _a[ 4]; + const float yy = _a[ 5]; + const float yz = _a[ 6]; + const float yw = _a[ 7]; + const float zx = _a[ 8]; + const float zy = _a[ 9]; + const float zz = _a[10]; + const float zw = _a[11]; + const float wx = _a[12]; + const float wy = _a[13]; + const float wz = _a[14]; + const float ww = _a[15]; + + float det = 0.0f; + det += xx * (yy*(zz*ww - zw*wz) - yz*(zy*ww - zw*wy) + yw*(zy*wz - zz*wy) ); + det -= xy * (yx*(zz*ww - zw*wz) - yz*(zx*ww - zw*wx) + yw*(zx*wz - zz*wx) ); + det += xz * (yx*(zy*ww - zw*wy) - yy*(zx*ww - zw*wx) + yw*(zx*wy - zy*wx) ); + det -= xw * (yx*(zy*wz - zz*wy) - yy*(zx*wz - zz*wx) + yz*(zx*wy - zy*wx) ); + + return det; +} - // https://en.wikipedia.org/wiki/Wavefront_.obj_file +void parseObj(char* _data, uint32_t _size, Mesh* _mesh, bool _hasBc) +{ + // Reference(s): + // - Wavefront .obj file + // https://en.wikipedia.org/wiki/Wavefront_.obj_file - Vector3Array positions; - Vector3Array normals; - Vector3Array texcoords; - Index3Map indexMap; - TriangleArray triangles; - GroupArray groups; + // Coordinate system is right-handed, but up/forward is not defined, but +Y Up, +Z Forward seems to be a common default + _mesh->m_coordinateSystem.m_handedness = bx::Handedness::Right; + _mesh->m_coordinateSystem.m_up = Axis::PositiveY; + _mesh->m_coordinateSystem.m_forward = Axis::PositiveZ; uint32_t num = 0; @@ -508,7 +520,7 @@ int main(int _argc, const char* _argv[]) int argc; char* argv[64]; - for (bx::StringView next(data, size); !next.isEmpty(); ) + for (bx::StringView next(_data, _size); !next.isEmpty(); ) { next = bx::tokenizeCommandLine(next, commandLine, len, argc, argv, BX_COUNTOF(argv), '\n'); @@ -523,47 +535,48 @@ int main(int _argc, const char* _argv[]) } else if (0 == bx::strCmp(argv[0], "f") ) { - Triangle triangle; - bx::memSet(&triangle, 0, sizeof(Triangle) ); + TriIndices triangle; + bx::memSet(&triangle, 0, sizeof(TriIndices) ); - const int numNormals = (int)normals.size(); - const int numTexcoords = (int)texcoords.size(); - const int numPositions = (int)positions.size(); + const int numNormals = (int)_mesh->m_normals.size(); + const int numTexcoords = (int)_mesh->m_texcoords.size(); + const int numPositions = (int)_mesh->m_positions.size(); for (uint32_t edge = 0, numEdges = argc-1; edge < numEdges; ++edge) { Index3 index; index.m_texcoord = -1; index.m_normal = -1; - index.m_vertexIndex = -1; - if (hasBc) + if (_hasBc) { index.m_vbc = edge < 3 ? edge : (1+(edge+1) )&1; } else { - index.m_vbc = 0; + index.m_vbc = 0; } { bx::StringView triplet(argv[edge + 1]); bx::StringView vertex(triplet); bx::StringView texcoord = bx::strFind(triplet, '/'); - if (!texcoord.isEmpty()) + if (!texcoord.isEmpty() ) { - vertex.set(vertex.getPtr(), texcoord.getPtr()); + vertex.set(vertex.getPtr(), texcoord.getPtr() ); - const bx::StringView normal = bx::strFind(bx::StringView(texcoord.getPtr() + 1, triplet.getTerm()), '/'); - if (!normal.isEmpty()) + const bx::StringView normal = bx::strFind(bx::StringView(texcoord.getPtr() + 1, triplet.getTerm() ), '/'); + if (!normal.isEmpty() ) { int32_t nn; - bx::fromString(&nn, bx::StringView(normal.getPtr() + 1, triplet.getTerm())); + bx::fromString(&nn, bx::StringView(normal.getPtr() + 1, triplet.getTerm() ) ); index.m_normal = (nn < 0) ? nn + numNormals : nn - 1; } - texcoord.set(texcoord.getPtr() + 1, normal.getPtr()); + texcoord.set(texcoord.getPtr() + 1, normal.getPtr() ); - // https://en.wikipedia.org/wiki/Wavefront_.obj_file#Vertex_Normal_Indices_Without_Texture_Coordinate_Indices - if (!texcoord.isEmpty()) + // Reference(s): + // - Wavefront .obj file / Vertex normal indices without texture coordinate indices + // https://en.wikipedia.org/wiki/Wavefront_.obj_file#Vertex_Normal_Indices_Without_Texture_Coordinate_Indices + if (!texcoord.isEmpty() ) { int32_t tex; bx::fromString(&tex, texcoord); @@ -576,52 +589,21 @@ int main(int _argc, const char* _argv[]) index.m_position = (pos < 0) ? pos + numPositions : pos - 1; } - const uint64_t hash0 = uint64_t(index.m_position)<< 0; - const uint64_t hash1 = uint64_t(index.m_texcoord)<<20; - const uint64_t hash2 = uint64_t(index.m_normal )<<40; - const uint64_t hash3 = uint64_t(index.m_vbc )<<60; - const uint64_t hash = hash0^hash1^hash2^hash3; - - stl::pair<Index3Map::iterator, bool> result = indexMap.insert(stl::make_pair(hash, index) ); - if (!result.second) - { - Index3& oldIndex = result.first->second; - BX_UNUSED(oldIndex); - BX_CHECK(true - && oldIndex.m_position == index.m_position - && oldIndex.m_texcoord == index.m_texcoord - && oldIndex.m_normal == index.m_normal - , "Hash collision!" - ); - } - switch (edge) { case 0: case 1: case 2: - triangle.m_index[edge] = hash; + triangle.m_index[edge] = index; if (2 == edge) { - if (ccw) - { - std::swap(triangle.m_index[1], triangle.m_index[2]); - } - triangles.push_back(triangle); + _mesh->m_triangles.push_back(triangle); } break; default: - if (ccw) - { - triangle.m_index[2] = triangle.m_index[1]; - triangle.m_index[1] = hash; - } - else - { - triangle.m_index[1] = triangle.m_index[2]; - triangle.m_index[2] = hash; - } + triangle.m_index[1] = triangle.m_index[2]; + triangle.m_index[2] = index; - triangles.push_back(triangle); + _mesh->m_triangles.push_back(triangle); break; } } @@ -632,22 +614,22 @@ int main(int _argc, const char* _argv[]) } else if (*argv[0] == 'v') { - group.m_numTriangles = (uint32_t)(triangles.size() ) - group.m_startTriangle; + group.m_numTriangles = (uint32_t)(_mesh->m_triangles.size() ) - group.m_startTriangle; if (0 < group.m_numTriangles) { - groups.push_back(group); - group.m_startTriangle = (uint32_t)(triangles.size() ); + _mesh->m_groups.push_back(group); + group.m_startTriangle = (uint32_t)(_mesh->m_triangles.size() ); group.m_numTriangles = 0; } if (0 == bx::strCmp(argv[0], "vn") ) { - Vector3 normal; + bx::Vec3 normal(bx::init::None); bx::fromString(&normal.x, argv[1]); bx::fromString(&normal.y, argv[2]); bx::fromString(&normal.z, argv[3]); - normals.push_back(normal); + _mesh->m_normals.push_back(normal); } else if (0 == bx::strCmp(argv[0], "vp") ) { @@ -655,12 +637,12 @@ int main(int _argc, const char* _argv[]) if (once) { once = false; - printf("warning: 'parameter space vertices' are unsupported.\n"); + bx::printf("warning: 'parameter space vertices' are unsupported.\n"); } } else if (0 == bx::strCmp(argv[0], "vt") ) { - Vector3 texcoord; + bx::Vec3 texcoord(bx::init::None); texcoord.y = 0.0f; texcoord.z = 0.0f; @@ -680,7 +662,7 @@ int main(int _argc, const char* _argv[]) break; } - texcoords.push_back(texcoord); + _mesh->m_texcoords.push_back(texcoord); } else { @@ -689,7 +671,7 @@ int main(int _argc, const char* _argv[]) bx::fromString(&py, argv[2]); bx::fromString(&pz, argv[3]); - if (argc > 4) + if (argc == 5 || argc == 8) { bx::fromString(&pw, argv[4]); } @@ -698,17 +680,12 @@ int main(int _argc, const char* _argv[]) pw = 1.0f; } - float invW = scale/pw; - px *= invW; - py *= invW; - pz *= invW; + bx::Vec3 pos(px, py, pz); - Vector3 pos; - pos.x = px; - pos.y = py; - pos.z = pz; + const float invW = bx::rcp(pw); + pos = bx::mul(pos, invW); - positions.push_back(pos); + _mesh->m_positions.push_back(pos); } } else if (0 == bx::strCmp(argv[0], "usemtl") ) @@ -717,11 +694,11 @@ int main(int _argc, const char* _argv[]) if (0 != bx::strCmp(material.c_str(), group.m_material.c_str() ) ) { - group.m_numTriangles = (uint32_t)(triangles.size() ) - group.m_startTriangle; + group.m_numTriangles = (uint32_t)(_mesh->m_triangles.size() ) - group.m_startTriangle; if (0 < group.m_numTriangles) { - groups.push_back(group); - group.m_startTriangle = (uint32_t)(triangles.size() ); + _mesh->m_groups.push_back(group); + group.m_startTriangle = (uint32_t)(_mesh->m_triangles.size() ); group.m_numTriangles = 0; } } @@ -743,75 +720,463 @@ int main(int _argc, const char* _argv[]) ++num; } - group.m_numTriangles = (uint32_t)(triangles.size() ) - group.m_startTriangle; + group.m_numTriangles = (uint32_t)(_mesh->m_triangles.size() ) - group.m_startTriangle; if (0 < group.m_numTriangles) { - groups.push_back(group); - group.m_startTriangle = (uint32_t)(triangles.size() ); + _mesh->m_groups.push_back(group); + group.m_startTriangle = (uint32_t)(_mesh->m_triangles.size() ); group.m_numTriangles = 0; } + bx::printf("obj parser # %d\n", num); +} + + +void gltfReadFloat(const float* _accessorData, cgltf_size _accessorNumComponents, cgltf_size _index, cgltf_float* _out, cgltf_size _outElementSize) +{ + const float* input = &_accessorData[_accessorNumComponents * _index]; + + for (cgltf_size ii = 0; ii < _outElementSize; ++ii) + { + _out[ii] = (ii < _accessorNumComponents) ? input[ii] : 0.0f; + } +} + +void processGltfNode(cgltf_node* _node, Mesh* _mesh, Group* _group, bool _hasBc) +{ + cgltf_mesh* mesh = _node->mesh; + if (NULL != mesh) + { + float nodeToWorld[16]; + cgltf_node_transform_world(_node, nodeToWorld); + float nodeToWorldNormal[16]; + bx::mtxCofactor(nodeToWorldNormal, nodeToWorld); + + for (cgltf_size primitiveIndex = 0; primitiveIndex < mesh->primitives_count; ++primitiveIndex) + { + cgltf_primitive* primitive = &mesh->primitives[primitiveIndex]; + + cgltf_size numVertex = primitive->attributes[0].data->count; + + int32_t basePositionIndex = (int32_t)_mesh->m_positions.size(); + int32_t baseNormalIndex = (int32_t)_mesh->m_normals.size(); + int32_t baseTexcoordIndex = (int32_t)_mesh->m_texcoords.size(); + + bool hasNormal = false; + bool hasTexcoord = false; + + for (cgltf_size attributeIndex = 0; attributeIndex < primitive->attributes_count; ++attributeIndex) + { + cgltf_attribute* attribute = &primitive->attributes[attributeIndex]; + cgltf_accessor* accessor = attribute->data; + cgltf_size accessorCount = accessor->count; + + BX_ASSERT(numVertex == accessorCount, "Invalid attribute count"); + + cgltf_size floatCount = cgltf_accessor_unpack_floats(accessor, NULL, 0); + float* accessorData = (float*)malloc(floatCount * sizeof(float) ); + cgltf_accessor_unpack_floats(accessor, accessorData, floatCount); + + cgltf_size numComponents = cgltf_num_components(accessor->type); + + if (attribute->type == cgltf_attribute_type_position && attribute->index == 0) + { + _mesh->m_positions.reserve(_mesh->m_positions.size() + accessorCount); + + bx::Vec3 pos(bx::init::None); + + for (cgltf_size v = 0; v < accessorCount; ++v) + { + gltfReadFloat(accessorData, numComponents, v, &pos.x, 3); + pos = mul(pos, nodeToWorld); + _mesh->m_positions.push_back(pos); + } + } + else if (attribute->type == cgltf_attribute_type_normal && attribute->index == 0) + { + _mesh->m_normals.reserve(_mesh->m_normals.size() + accessorCount); + + hasNormal = true; + bx::Vec3 normal(bx::init::None); + + for (cgltf_size v = 0; v < accessorCount; ++v) + { + gltfReadFloat(accessorData, numComponents, v, &normal.x, 3); + normal = mul(normal, nodeToWorldNormal); + _mesh->m_normals.push_back(normal); + } + } + else if (attribute->type == cgltf_attribute_type_texcoord && attribute->index == 0) + { + _mesh->m_texcoords.reserve(_mesh->m_texcoords.size() + accessorCount); + + hasTexcoord = true; + bx::Vec3 texcoord(bx::init::None); + + for (cgltf_size v = 0; v < accessorCount; ++v) + { + gltfReadFloat(accessorData, numComponents, v, &texcoord.x, 3); + _mesh->m_texcoords.push_back(texcoord); + } + } + + free(accessorData); + } + + if (primitive->indices != NULL) + { + cgltf_accessor* accessor = primitive->indices; + + for (cgltf_size v = 0; v < accessor->count; v += 3) + { + TriIndices triangle; + for (int i = 0; i < 3; ++i) + { + Index3 index; + int32_t vertexIndex = int32_t(cgltf_accessor_read_index(accessor, v+i) ); + index.m_position = basePositionIndex + vertexIndex; + index.m_normal = hasNormal ? baseNormalIndex + vertexIndex : -1; + index.m_texcoord = hasTexcoord ? baseTexcoordIndex + vertexIndex : -1; + index.m_vbc = _hasBc ? i : 0; + triangle.m_index[i] = index; + } + _mesh->m_triangles.push_back(triangle); + } + } + else + { + for (cgltf_size v = 0; v < numVertex; v += 3) + { + TriIndices triangle; + for (int i = 0; i < 3; ++i) + { + Index3 index; + int32_t vertexIndex = int32_t(v * 3 + i); + index.m_position = basePositionIndex + vertexIndex; + index.m_normal = hasNormal ? baseNormalIndex + vertexIndex : -1; + index.m_texcoord = hasTexcoord ? baseTexcoordIndex + vertexIndex : -1; + index.m_vbc = _hasBc ? i : 0; + triangle.m_index[i] = index; + } + _mesh->m_triangles.push_back(triangle); + } + } + + _group->m_numTriangles = (uint32_t)(_mesh->m_triangles.size() ) - _group->m_startTriangle; + if (0 < _group->m_numTriangles) + { + _mesh->m_groups.push_back(*_group); + _group->m_startTriangle = (uint32_t)(_mesh->m_triangles.size() ); + _group->m_numTriangles = 0; + } + } + } + + for (cgltf_size childIndex = 0; childIndex < _node->children_count; ++childIndex) + processGltfNode(_node->children[childIndex], _mesh, _group, _hasBc); +} + +void parseGltf(char* _data, uint32_t _size, Mesh* _mesh, bool _hasBc, const bx::StringView& _path) +{ + // Reference(s): + // - Gltf 2.0 specification + // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0 + + _mesh->m_coordinateSystem.m_handedness = bx::Handedness::Right; + _mesh->m_coordinateSystem.m_forward = Axis::PositiveZ; + _mesh->m_coordinateSystem.m_up = Axis::PositiveY; + + Group group; + group.m_startTriangle = 0; + group.m_numTriangles = 0; + + cgltf_options options = { }; + cgltf_data* data = NULL; + cgltf_result result = cgltf_parse(&options, _data, _size, &data); + + if (result == cgltf_result_success) + { + char* path = (char*)malloc(_path.getLength()+1); + bx::memCopy(path, _path.getPtr(), _path.getLength() ); + path[_path.getLength()] = 0; + result = cgltf_load_buffers(&options, data, path); + free(path); + + if (result == cgltf_result_success) + { + for (cgltf_size sceneIndex = 0; sceneIndex < data->scenes_count; ++sceneIndex) + { + cgltf_scene* scene = &data->scenes[sceneIndex]; + + for (cgltf_size nodeIndex = 0; nodeIndex < scene->nodes_count; ++nodeIndex) + { + cgltf_node* node = scene->nodes[nodeIndex]; + + processGltfNode(node, _mesh, &group, _hasBc); + } + } + } + + cgltf_free(data); + } +} + + +void help(const char* _error = NULL) +{ + if (NULL != _error) + { + bx::printf("Error:\n%s\n\n", _error); + } + + bx::printf( + "geometryc, bgfx geometry compiler tool, version %d.%d.%d.\n" + "Copyright 2011-2022 Branimir Karadzic. All rights reserved.\n" + "License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE\n\n" + , BGFX_GEOMETRYC_VERSION_MAJOR + , BGFX_GEOMETRYC_VERSION_MINOR + , BGFX_API_VERSION + ); + + bx::printf( + "Usage: geometryc -f <in> -o <out>\n" + + "\n" + "Supported input file types:\n" + " *.obj Wavefront\n" + " *.gltf,*.glb glTF 2.0\n" + + "\n" + "Options:\n" + " -h, --help Display this help and exit.\n" + " -v, --version Output version information and exit.\n" + " -f <file path> Input's file path.\n" + " -o <file path> Output's file path.\n" + " -s, --scale <num> Scale factor.\n" + " --ccw Front face is counter-clockwise winding order.\n" + " --flipv Flip texture coordinate V.\n" + " --obb <num> Number of steps for calculating oriented bounding box.\n" + " Defaults to 17.\n" + " Less steps = less precise OBB.\n" + " More steps = slower calculation.\n" + " --packnormal <num> Normal packing.\n" + " 0 - unpacked 12 bytes. (default)\n" + " 1 - packed 4 bytes.\n" + " --packuv <num> Texture coordinate packing.\n" + " 0 - unpacked 8 bytes. (default)\n" + " 1 - packed 4 bytes.\n" + " --tangent Calculate tangent vectors. (packing mode is the same as normal)\n" + " --barycentric Adds barycentric vertex attribute. (Packed in bgfx::Attrib::Color1)\n" + " -c, --compress Compress indices.\n" + " --[l/r]h-up+[y/z] Coordinate system. Defaults to '--lh-up+y' — Left-Handed +Y is up.\n" + + "\n" + "For additional information, see https://github.com/bkaradzic/bgfx\n" + ); +} + +int main(int _argc, const char* _argv[]) +{ + bx::CommandLine cmdLine(_argc, _argv); + + if (cmdLine.hasArg('v', "version") ) + { + bx::printf( + "geometryc, bgfx geometry compiler tool, version %d.%d.%d.\n" + , BGFX_GEOMETRYC_VERSION_MAJOR + , BGFX_GEOMETRYC_VERSION_MINOR + , BGFX_API_VERSION + ); + return bx::kExitSuccess; + } + + if (cmdLine.hasArg('h', "help") ) + { + help(); + return bx::kExitFailure; + } + + const char* filePath = cmdLine.findOption('f'); + if (NULL == filePath) + { + help("Input file name must be specified."); + return bx::kExitFailure; + } + + const char* outFilePath = cmdLine.findOption('o'); + if (NULL == outFilePath) + { + help("Output file name must be specified."); + return bx::kExitFailure; + } + + float scale = 1.0f; + const char* scaleArg = cmdLine.findOption('s', "scale"); + if (NULL != scaleArg) + { + if (!bx::fromString(&scale, scaleArg) ) + { + scale = 1.0f; + } + } + + bool compress = cmdLine.hasArg('c', "compress"); + + cmdLine.hasArg(s_obbSteps, '\0', "obb"); + s_obbSteps = bx::uint32_min(bx::uint32_max(s_obbSteps, 1), 90); + + uint32_t packNormal = 0; + cmdLine.hasArg(packNormal, '\0', "packnormal"); + + uint32_t packUv = 0; + cmdLine.hasArg(packUv, '\0', "packuv"); + + bool ccw = cmdLine.hasArg("ccw"); + bool flipV = cmdLine.hasArg("flipv"); + bool hasTangent = cmdLine.hasArg("tangent"); + bool hasBc = cmdLine.hasArg("barycentric"); + + CoordinateSystem outputCoordinateSystem; + outputCoordinateSystem.m_handedness = bx::Handedness::Left; + outputCoordinateSystem.m_forward = Axis::PositiveZ; + outputCoordinateSystem.m_up = Axis::PositiveY; + for (uint32_t ii = 0; ii < BX_COUNTOF(s_coordinateSystemMappings); ++ii) + { + if (cmdLine.hasArg(s_coordinateSystemMappings[ii].m_param) ) + { + outputCoordinateSystem = s_coordinateSystemMappings[ii].m_coordinateSystem; + } + } + + bx::FileReader fr; + if (!bx::open(&fr, filePath) ) + { + bx::printf("Unable to open input file '%s'.", filePath); + return bx::kExitFailure; + } + + int64_t parseElapsed = -bx::getHPCounter(); + int64_t triReorderElapsed = 0; + + uint32_t size = (uint32_t)bx::getSize(&fr); + char* data = new char[size+1]; + size = bx::read(&fr, data, size, bx::ErrorAssert{}); + data[size] = '\0'; + bx::close(&fr); + + Mesh mesh; + bx::StringView ext = bx::FilePath(filePath).getExt(); + if (0 == bx::strCmpI(ext, ".obj") ) + { + parseObj(data, size, &mesh, hasBc); + } + else if (0 == bx::strCmpI(ext, ".gltf") || 0 == bx::strCmpI(ext, ".glb") ) + { + parseGltf(data, size, &mesh, hasBc, bx::FilePath(filePath).getPath() ); + } + else + { + bx::printf("Unsupported input file format '%s'.", filePath); + exit(bx::kExitFailure); + } + delete [] data; int64_t now = bx::getHPCounter(); parseElapsed += now; int64_t convertElapsed = -now; - std::sort(groups.begin(), groups.end(), GroupSortByMaterial() ); + std::sort(mesh.m_groups.begin(), mesh.m_groups.end(), GroupSortByMaterial() ); + + bool changeWinding = ccw; + + if (scale != 1.0f) + { + for (Vec3Array::iterator it = mesh.m_positions.begin(), itEnd = mesh.m_positions.end(); it != itEnd; ++it) + { + it->x *= scale; + it->y *= scale; + it->z *= scale; + } + } - bool hasColor = false; - bool hasNormal; - bool hasTexcoord; { - Index3Map::const_iterator it = indexMap.begin(); - hasNormal = -1 != it->second.m_normal; - hasTexcoord = -1 != it->second.m_texcoord; + float meshTransform[16]; + mtxCoordinateTransform(meshTransform, mesh.m_coordinateSystem); + + float meshInvTranform[16]; + bx::mtxTranspose(meshInvTranform, meshTransform); + + float outTransform[16]; + mtxCoordinateTransform(outTransform, outputCoordinateSystem); + + float transform[16]; + bx::mtxMul(transform, meshInvTranform, outTransform); + + if ( mtxDeterminant(transform) < 0.0f ) + { + changeWinding = !changeWinding; + } + + float identity[16]; + bx::mtxIdentity(identity); - if (!hasTexcoord) + if ( 0 != bx::memCmp(identity, transform, sizeof(transform) ) ) { - for (Index3Map::iterator jt = indexMap.begin(), jtEnd = indexMap.end(); jt != jtEnd && !hasTexcoord; ++jt) + for (Vec3Array::iterator it = mesh.m_positions.begin(), itEnd = mesh.m_positions.end(); it != itEnd; ++it) { - hasTexcoord |= -1 != jt->second.m_texcoord; + *it = bx::mul(*it, transform); } - if (hasTexcoord) + for (Vec3Array::iterator it = mesh.m_normals.begin(), itEnd = mesh.m_normals.end(); it != itEnd; ++it) { - for (Index3Map::iterator jt = indexMap.begin(), jtEnd = indexMap.end(); jt != jtEnd; ++jt) - { - jt->second.m_texcoord = -1 == jt->second.m_texcoord ? 0 : jt->second.m_texcoord; - } + *it = bx::mul(*it, transform); } } + } + - if (!hasNormal) + bool hasColor = false; + bool hasNormal = false; + bool hasTexcoord = false; + { + for (TriangleArray::iterator jt = mesh.m_triangles.begin(), jtEnd = mesh.m_triangles.end(); jt != jtEnd && !hasTexcoord; ++jt) { - for (Index3Map::iterator jt = indexMap.begin(), jtEnd = indexMap.end(); jt != jtEnd && !hasNormal; ++jt) + for (uint32_t i = 0; i < 3; ++i) { - hasNormal |= -1 != jt->second.m_normal; + hasTexcoord |= -1 != jt->m_index[i].m_texcoord; } + } - if (hasNormal) + for (TriangleArray::iterator jt = mesh.m_triangles.begin(), jtEnd = mesh.m_triangles.end(); jt != jtEnd && !hasNormal; ++jt) + { + for (uint32_t i = 0; i < 3; ++i) { - for (Index3Map::iterator jt = indexMap.begin(), jtEnd = indexMap.end(); jt != jtEnd; ++jt) - { - jt->second.m_normal = -1 == jt->second.m_normal ? 0 : jt->second.m_normal; - } + hasNormal |= -1 != jt->m_index[i].m_normal; + } + } + + if (changeWinding) + { + for (TriangleArray::iterator jt = mesh.m_triangles.begin(), jtEnd = mesh.m_triangles.end(); jt != jtEnd; ++jt) + { + bx::swap(jt->m_index[1], jt->m_index[2]); } } } - bgfx::VertexDecl decl; - decl.begin(); - decl.add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float); + bgfx::VertexLayout layout; + layout.begin(); + layout.add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float); if (hasColor) { - decl.add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true); + layout.add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true); } if (hasBc) { - decl.add(bgfx::Attrib::Color1, 4, bgfx::AttribType::Uint8, true); + layout.add(bgfx::Attrib::Color1, 4, bgfx::AttribType::Uint8, true); } if (hasTexcoord) @@ -820,11 +1185,11 @@ int main(int _argc, const char* _argv[]) { default: case 0: - decl.add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float); + layout.add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float); break; case 1: - decl.add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Half); + layout.add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Half); break; } } @@ -837,43 +1202,51 @@ int main(int _argc, const char* _argv[]) { default: case 0: - decl.add(bgfx::Attrib::Normal, 3, bgfx::AttribType::Float); + layout.add(bgfx::Attrib::Normal, 3, bgfx::AttribType::Float); if (hasTangent) { - decl.add(bgfx::Attrib::Tangent, 4, bgfx::AttribType::Float); + layout.add(bgfx::Attrib::Tangent, 4, bgfx::AttribType::Float); } break; case 1: - decl.add(bgfx::Attrib::Normal, 4, bgfx::AttribType::Uint8, true, true); + layout.add(bgfx::Attrib::Normal, 4, bgfx::AttribType::Uint8, true, true); if (hasTangent) { - decl.add(bgfx::Attrib::Tangent, 4, bgfx::AttribType::Uint8, true, true); + layout.add(bgfx::Attrib::Tangent, 4, bgfx::AttribType::Uint8, true, true); } break; } } - decl.end(); + layout.end(); - uint32_t stride = decl.getStride(); - uint8_t* vertexData = new uint8_t[triangles.size() * 3 * stride]; - uint16_t* indexData = new uint16_t[triangles.size() * 3]; + uint32_t stride = layout.getStride(); + uint8_t* vertexData = new uint8_t[mesh.m_triangles.size() * 3 * stride]; + uint16_t* indexData = new uint16_t[mesh.m_triangles.size() * 3]; int32_t numVertices = 0; int32_t numIndices = 0; - int32_t numPrimitives = 0; + + int32_t writtenPrimitives = 0; + int32_t writtenVertices = 0; + int32_t writtenIndices = 0; uint8_t* vertices = vertexData; uint16_t* indices = indexData; - stl::string material = groups.begin()->m_material; + const uint32_t tableSize = 65536 * 2; + const uint32_t hashmod = tableSize - 1; + uint32_t* table = new uint32_t[tableSize]; + bx::memSet(table, 0xff, tableSize * sizeof(uint32_t) ); + + stl::string material = mesh.m_groups.empty() ? "" : mesh.m_groups.begin()->m_material; PrimitiveArray primitives; bx::FileWriter writer; if (!bx::open(&writer, outFilePath) ) { - printf("Unable to open output file '%s'.", outFilePath); + bx::printf("Unable to open output file '%s'.", outFilePath); exit(bx::kExitFailure); } @@ -881,22 +1254,30 @@ int main(int _argc, const char* _argv[]) prim.m_startVertex = 0; prim.m_startIndex = 0; - uint32_t positionOffset = decl.getOffset(bgfx::Attrib::Position); - uint32_t color0Offset = decl.getOffset(bgfx::Attrib::Color0); + uint32_t positionOffset = layout.getOffset(bgfx::Attrib::Position); + uint32_t color0Offset = layout.getOffset(bgfx::Attrib::Color0); + + Group sentinelGroup; + sentinelGroup.m_startTriangle = 0; + sentinelGroup.m_numTriangles = UINT32_MAX; + mesh.m_groups.push_back(sentinelGroup); - bx::DefaultAllocator crtAllocator; - bx::MemoryBlock memBlock(&crtAllocator); + bx::Error err; uint32_t ii = 0; - for (GroupArray::const_iterator groupIt = groups.begin(); groupIt != groups.end(); ++groupIt, ++ii) + for (GroupArray::const_iterator groupIt = mesh.m_groups.begin(); groupIt != mesh.m_groups.end(); ++groupIt, ++ii) { + const bool sentinel = groupIt->m_startTriangle == 0 && groupIt->m_numTriangles == UINT32_MAX; + for (uint32_t tri = groupIt->m_startTriangle, end = tri + groupIt->m_numTriangles; tri < end; ++tri) { if (0 != bx::strCmp(material.c_str(), groupIt->m_material.c_str() ) + || sentinel || 65533 <= numVertices) { prim.m_numVertices = numVertices - prim.m_startVertex; prim.m_numIndices = numIndices - prim.m_startIndex; + if (0 < prim.m_numVertices) { primitives.push_back(prim); @@ -904,47 +1285,43 @@ int main(int _argc, const char* _argv[]) if (hasTangent) { - calcTangents(vertexData, uint16_t(numVertices), decl, indexData, numIndices); + calcTangents(vertexData, uint16_t(numVertices), layout, indexData, numIndices); } - bx::MemoryWriter memWriter(&memBlock); - triReorderElapsed -= bx::getHPCounter(); + for (PrimitiveArray::const_iterator primIt = primitives.begin(); primIt != primitives.end(); ++primIt) { const Primitive& prim1 = *primIt; - triangleReorder(indexData + prim1.m_startIndex, prim1.m_numIndices, numVertices, 32); - if (compress) - { - triangleCompress( - &memWriter - , indexData + prim1.m_startIndex - , prim1.m_numIndices - , vertexData + prim1.m_startVertex - , numVertices - , uint16_t(stride) - ); - } + optimizeVertexCache(indexData + prim1.m_startIndex, prim1.m_numIndices, numVertices); } - triReorderElapsed += bx::getHPCounter(); - write(&writer - , vertexData - , numVertices - , decl - , indexData - , numIndices - , (uint8_t*)memBlock.more() - , memBlock.getSize() - , material - , primitives - ); - primitives.clear(); + numVertices = optimizeVertexFetch(indexData, numIndices, vertexData, numVertices, uint16_t(stride) ); + + triReorderElapsed += bx::getHPCounter(); - for (Index3Map::iterator indexIt = indexMap.begin(); indexIt != indexMap.end(); ++indexIt) + if (0 < numVertices + && 0 < numIndices) { - indexIt->second.m_vertexIndex = -1; + write(&writer + , vertexData + , numVertices + , layout + , indexData + , numIndices + , compress + , material + , primitives + , &err + ); } + primitives.clear(); + + bx::memSet(table, 0xff, tableSize * sizeof(uint32_t) ); + + ++writtenPrimitives; + writtenVertices += numVertices; + writtenIndices += numIndices; vertices = vertexData; indices = indexData; @@ -952,64 +1329,94 @@ int main(int _argc, const char* _argv[]) numIndices = 0; prim.m_startVertex = 0; prim.m_startIndex = 0; - ++numPrimitives; material = groupIt->m_material; + + if (sentinel) + { + break; + } } - Triangle& triangle = triangles[tri]; + TriIndices& triangle = mesh.m_triangles[tri]; for (uint32_t edge = 0; edge < 3; ++edge) { - uint64_t hash = triangle.m_index[edge]; - Index3& index = indexMap[hash]; - if (index.m_vertexIndex == -1) - { - index.m_vertexIndex = numVertices++; + Index3& index = triangle.m_index[edge]; - float* position = (float*)(vertices + positionOffset); - bx::memCopy(position, &positions[index.m_position], 3*sizeof(float) ); + float* position = (float*)(vertices + positionOffset); + bx::memCopy(position, &mesh.m_positions[index.m_position], 3*sizeof(float) ); - if (hasColor) + if (hasColor) + { + uint32_t* color0 = (uint32_t*)(vertices + color0Offset); + *color0 = rgbaToAbgr(numVertices%255, numIndices%255, 0, 0xff); + } + + if (hasBc) + { + const float bc[4] = { - uint32_t* color0 = (uint32_t*)(vertices + color0Offset); - *color0 = rgbaToAbgr(numVertices%255, numIndices%255, 0, 0xff); - } + (index.m_vbc == 0) ? 1.0f : 0.0f, + (index.m_vbc == 1) ? 1.0f : 0.0f, + (index.m_vbc == 2) ? 1.0f : 0.0f, + 0.0f + }; + bgfx::vertexPack(bc, true, bgfx::Attrib::Color1, layout, vertices); + } + + if (hasTexcoord) + { + float uv[2]; + bx::memCopy(uv, &mesh.m_texcoords[index.m_texcoord == -1 ? 0 : index.m_texcoord], 2*sizeof(float) ); - if (hasBc) + if (flipV) { - const float bc[3] = - { - (index.m_vbc == 0) ? 1.0f : 0.0f, - (index.m_vbc == 1) ? 1.0f : 0.0f, - (index.m_vbc == 2) ? 1.0f : 0.0f, - }; - bgfx::vertexPack(bc, true, bgfx::Attrib::Color1, decl, vertices); + uv[1] = -uv[1]; } - if (hasTexcoord) - { - float uv[2]; - bx::memCopy(uv, &texcoords[index.m_texcoord], 2*sizeof(float) ); + bgfx::vertexPack(uv, true, bgfx::Attrib::TexCoord0, layout, vertices); + } - if (flipV) - { - uv[1] = -uv[1]; - } + if (hasNormal) + { + float normal[4]; + bx::store(normal, bx::normalize(bx::load<bx::Vec3>(&mesh.m_normals[index.m_normal == -1 ? 0 : index.m_normal]) ) ); + normal[3] = 0.0f; + bgfx::vertexPack(normal, true, bgfx::Attrib::Normal, layout, vertices); + } + + uint32_t hash = bx::hash<bx::HashMurmur2A>(vertices, stride); + size_t bucket = hash & hashmod; + uint32_t vertexIndex = UINT32_MAX; + + for (size_t probe = 0; probe <= hashmod; ++probe) + { + uint32_t& item = table[bucket]; - bgfx::vertexPack(uv, true, bgfx::Attrib::TexCoord0, decl, vertices); + if (item == ~0u) + { + vertices += stride; + item = numVertices++; + vertexIndex = item; + break; } - if (hasNormal) + if (0 == bx::memCmp(vertexData + item * stride, vertices, stride) ) { - float normal[4]; - bx::vec3Norm(normal, (float*)&normals[index.m_normal]); - bgfx::vertexPack(normal, true, bgfx::Attrib::Normal, decl, vertices); + vertexIndex = item; + break; } - vertices += stride; + bucket = (bucket + probe + 1) & hashmod; } - *indices++ = (uint16_t)index.m_vertexIndex; + if ( vertexIndex == UINT32_MAX ) + { + bx::printf("hash table insert failed"); + exit(bx::kExitFailure); + } + + *indices++ = (uint16_t)vertexIndex; ++numIndices; } } @@ -1032,64 +1439,26 @@ int main(int _argc, const char* _argv[]) ); } - if (0 < primitives.size() ) - { - if (hasTangent) - { - calcTangents(vertexData, uint16_t(numVertices), decl, indexData, numIndices); - } - - bx::MemoryWriter memWriter(&memBlock); - - triReorderElapsed -= bx::getHPCounter(); - for (PrimitiveArray::const_iterator primIt = primitives.begin(); primIt != primitives.end(); ++primIt) - { - const Primitive& prim1 = *primIt; - triangleReorder(indexData + prim1.m_startIndex, prim1.m_numIndices, numVertices, 32); - if (compress) - { - triangleCompress(&memWriter - , indexData + prim1.m_startIndex - , prim1.m_numIndices - , vertexData + prim1.m_startVertex - , numVertices - , uint16_t(stride) - ); - } - } - triReorderElapsed += bx::getHPCounter(); - - write(&writer - , vertexData - , numVertices - , decl - , indexData - , numIndices - , (uint8_t*)memBlock.more() - , memBlock.getSize() - , material - , primitives - ); - } + BX_ASSERT(0 == primitives.size(), "Not all primitives are written"); - printf("size: %d\n", uint32_t(bx::seek(&writer) ) ); + bx::printf("size: %d\n", uint32_t(bx::seek(&writer) ) ); bx::close(&writer); + delete [] table; delete [] indexData; delete [] vertexData; now = bx::getHPCounter(); convertElapsed += now; - printf("parse %f [s]\ntri reorder %f [s]\nconvert %f [s]\n# %d, g %d, p %d, v %d, i %d\n" + bx::printf("parse %f [s]\ntri reorder %f [s]\nconvert %f [s]\ng %d, p %d, v %d, i %d\n" , double(parseElapsed)/bx::getHPFrequency() , double(triReorderElapsed)/bx::getHPFrequency() , double(convertElapsed)/bx::getHPFrequency() - , num - , uint32_t(groups.size() ) - , numPrimitives - , numVertices - , numIndices + , uint32_t(mesh.m_groups.size()-1) + , writtenPrimitives + , writtenVertices + , writtenIndices ); return bx::kExitSuccess; diff --git a/3rdparty/bgfx/tools/geometryv/fs_mesh.bin.h b/3rdparty/bgfx/tools/geometryv/fs_mesh.bin.h new file mode 100644 index 00000000000..6bf1cfdfb91 --- /dev/null +++ b/3rdparty/bgfx/tools/geometryv/fs_mesh.bin.h @@ -0,0 +1,525 @@ +static const uint8_t fs_mesh_glsl[1011] = +{ + 0x46, 0x53, 0x48, 0x0b, 0xe3, 0xc2, 0x5c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, // FSH....e........ + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ..varying vec3 v + 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // _normal;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, // in ().{. vec3 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_1;. tmpva + 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, // r_1 = normalize( + 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, // v_normal);. vec + 0x33, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, // 3 rgb_2;. rgb_2 + 0x20, 0x3d, 0x20, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x32, 0x37, 0x32, 0x39, 0x39, // = (vec3(0.27299 + 0x39, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x37, 0x35, 0x34, 0x37, 0x30, 0x31, 0x2c, 0x20, 0x30, // 92, 0.2754701, 0 + 0x2e, 0x32, 0x35, 0x31, 0x34, 0x30, 0x38, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x76, 0x65, 0x63, // .251408) + ((vec + 0x33, 0x28, 0x30, 0x2e, 0x33, 0x37, 0x35, 0x34, 0x30, 0x36, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x34, // 3(0.3754065, 0.4 + 0x31, 0x33, 0x38, 0x33, 0x38, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x35, 0x38, 0x33, 0x32, // 138388, 0.415832 + 0x37, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x29, // 7) * tmpvar_1.x) + 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x5f, // / 2.5));. rgb_ + 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x76, // 2 = (rgb_2 + ((v + 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x35, 0x34, 0x36, 0x33, 0x31, 0x39, 0x31, 0x2c, 0x20, // ec3(0.05463191, + 0x30, 0x2e, 0x30, 0x35, 0x35, 0x33, 0x33, 0x36, 0x36, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x36, // 0.05533662, 0.06 + 0x38, 0x33, 0x37, 0x34, 0x39, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 837498) * tmpvar + 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, // _1.y) / 2.5));. + 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, // rgb_2 = (rgb_2 + 0x2b, 0x20, 0x28, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x31, 0x31, 0x38, 0x32, // + ((vec3(-0.1182 + 0x32, 0x37, 0x33, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x31, 0x36, 0x35, 0x37, 0x38, 0x36, 0x2c, // 273, -0.1165786, + 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x31, 0x34, 0x34, 0x34, 0x32, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x74, // -0.1144424) * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x35, // mpvar_1.z) / 2.5 + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, // ));. rgb_2 = (r + 0x67, 0x62, 0x5f, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // gb_2 + ((tmpvar_ + 0x31, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x76, 0x65, 0x63, 0x33, // 1.x * . (vec3 + 0x28, 0x2d, 0x30, 0x2e, 0x31, 0x39, 0x33, 0x30, 0x36, 0x36, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, // (-0.193066, -0.1 + 0x38, 0x36, 0x30, 0x39, 0x35, 0x33, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x36, 0x35, 0x33, 0x35, // 860953, -0.16535 + 0x31, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, // 18) * tmpvar_1.z + 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, // ). ) / 2.5));. + 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, // rgb_2 = (rgb_2 + 0x2b, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x2a, // + ((tmpvar_1.x * + 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x36, 0x38, 0x31, 0x31, 0x30, 0x36, 0x33, // vec3(0.06811063 + 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x36, 0x35, 0x31, 0x39, 0x32, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x30, // , 0.0651928, 0.0 + 0x35, 0x32, 0x36, 0x30, 0x36, 0x34, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // 526064)) * tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, // r_1.y));. rgb_2 + 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x76, 0x65, 0x63, // = (rgb_2 + (vec + 0x33, 0x28, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x32, 0x39, 0x32, 0x31, 0x31, 0x32, 0x33, 0x2c, 0x20, // 3(0.0002921123, + 0x2d, 0x30, 0x2e, 0x30, 0x30, 0x35, 0x31, 0x33, 0x39, 0x37, 0x34, 0x35, 0x2c, 0x20, 0x2d, 0x30, // -0.005139745, -0 + 0x2e, 0x30, 0x31, 0x33, 0x39, 0x30, 0x39, 0x34, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x0a, 0x20, // .01390948) * (. + 0x20, 0x20, 0x20, 0x28, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ((3.0 * tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // r_1.y) * tmpvar_ + 0x31, 0x2e, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, // 1.y). - 1.0))) + 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, // ;. rgb_2 = (rgb + 0x5f, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // _2 + ((tmpvar_1. + 0x7a, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x31, 0x36, 0x31, 0x38, // z * vec3(-0.1618 + 0x39, 0x36, 0x38, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x35, 0x33, 0x36, 0x34, 0x39, 0x38, 0x2c, // 968, -0.1536498, + 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x33, 0x32, 0x39, 0x32, 0x33, 0x39, 0x29, 0x29, 0x20, 0x2a, 0x20, // -0.1329239)) * + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_1.y));. + 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x2b, // rgb_2 = (rgb_2 + + 0x20, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x30, 0x32, 0x31, 0x38, 0x30, 0x33, // (vec3(-0.021803 + 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x32, 0x39, 0x38, 0x36, 0x35, 0x30, 0x37, 0x2c, // 63, -0.02986507, + 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, 0x39, 0x33, 0x39, 0x35, 0x38, 0x29, 0x20, 0x2a, 0x20, // -0.04293958) * + 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // (. (tmpvar_1. + 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x29, 0x0a, // z * tmpvar_1.z). + 0x20, 0x20, 0x20, 0x2d, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // - . (tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_1.x * tmpvar_1 + 0x2e, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // .x). )));. gl_ + 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // FragColor.xyz = + 0x72, 0x67, 0x62, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, // rgb_2;. gl_Frag + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x7d, // Color.w = 1.0;.} + 0x0a, 0x0a, 0x00, // ... +}; +static const uint8_t fs_mesh_essl[1029] = +{ + 0x46, 0x53, 0x48, 0x0b, 0xe3, 0xc2, 0x5c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x03, // FSH....e........ + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ..varying highp + 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x76, // vec3 v_normal;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec3 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, // r_1;. tmpvar_1 + 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x5f, 0x6e, 0x6f, // = normalize(v_no + 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // rmal);. highp v + 0x65, 0x63, 0x33, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, // ec3 rgb_2;. rgb + 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x32, 0x37, 0x32, // _2 = (vec3(0.272 + 0x39, 0x39, 0x39, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x37, 0x35, 0x34, 0x37, 0x30, 0x31, 0x2c, // 9992, 0.2754701, + 0x20, 0x30, 0x2e, 0x32, 0x35, 0x31, 0x34, 0x30, 0x38, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x76, // 0.251408) + ((v + 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x33, 0x37, 0x35, 0x34, 0x30, 0x36, 0x35, 0x2c, 0x20, 0x30, // ec3(0.3754065, 0 + 0x2e, 0x34, 0x31, 0x33, 0x38, 0x33, 0x38, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x35, 0x38, // .4138388, 0.4158 + 0x33, 0x32, 0x37, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // 327) * tmpvar_1. + 0x78, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, // x) / 2.5));. rg + 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x2b, 0x20, 0x28, // b_2 = (rgb_2 + ( + 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x35, 0x34, 0x36, 0x33, 0x31, 0x39, 0x31, // (vec3(0.05463191 + 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x33, 0x33, 0x36, 0x36, 0x32, 0x2c, 0x20, 0x30, 0x2e, // , 0.05533662, 0. + 0x30, 0x36, 0x38, 0x33, 0x37, 0x34, 0x39, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // 06837498) * tmpv + 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x35, 0x29, 0x29, 0x3b, // ar_1.y) / 2.5)); + 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, 0x5f, // . rgb_2 = (rgb_ + 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x31, 0x31, // 2 + ((vec3(-0.11 + 0x38, 0x32, 0x32, 0x37, 0x33, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x31, 0x36, 0x35, 0x37, 0x38, // 82273, -0.116578 + 0x36, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x31, 0x34, 0x34, 0x34, 0x32, 0x34, 0x29, 0x20, 0x2a, // 6, -0.1144424) * + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x32, // tmpvar_1.z) / 2 + 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, // .5));. rgb_2 = + 0x28, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // (rgb_2 + ((tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x76, 0x65, // r_1.x * . (ve + 0x63, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x31, 0x39, 0x33, 0x30, 0x36, 0x36, 0x2c, 0x20, 0x2d, 0x30, // c3(-0.193066, -0 + 0x2e, 0x31, 0x38, 0x36, 0x30, 0x39, 0x35, 0x33, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x36, 0x35, // .1860953, -0.165 + 0x33, 0x35, 0x31, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // 3518) * tmpvar_1 + 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x35, 0x29, 0x29, 0x3b, // .z). ) / 2.5)); + 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, 0x5f, // . rgb_2 = (rgb_ + 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // 2 + ((tmpvar_1.x + 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x36, 0x38, 0x31, 0x31, 0x30, // * vec3(0.068110 + 0x36, 0x33, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x36, 0x35, 0x31, 0x39, 0x32, 0x38, 0x2c, 0x20, 0x30, // 63, 0.0651928, 0 + 0x2e, 0x30, 0x35, 0x32, 0x36, 0x30, 0x36, 0x34, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // .0526064)) * tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, // var_1.y));. rgb + 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x76, // _2 = (rgb_2 + (v + 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x32, 0x39, 0x32, 0x31, 0x31, 0x32, 0x33, // ec3(0.0002921123 + 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x30, 0x35, 0x31, 0x33, 0x39, 0x37, 0x34, 0x35, 0x2c, 0x20, // , -0.005139745, + 0x2d, 0x30, 0x2e, 0x30, 0x31, 0x33, 0x39, 0x30, 0x39, 0x34, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x28, // -0.01390948) * ( + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // . ((3.0 * tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // var_1.y) * tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, // r_1.y). - 1.0) + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, // ));. rgb_2 = (r + 0x67, 0x62, 0x5f, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // gb_2 + ((tmpvar_ + 0x31, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x31, 0x36, // 1.z * vec3(-0.16 + 0x31, 0x38, 0x39, 0x36, 0x38, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x35, 0x33, 0x36, 0x34, 0x39, // 18968, -0.153649 + 0x38, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x33, 0x32, 0x39, 0x32, 0x33, 0x39, 0x29, 0x29, 0x20, // 8, -0.1329239)) + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, // * tmpvar_1.y));. + 0x20, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x67, 0x62, 0x5f, 0x32, // rgb_2 = (rgb_2 + 0x20, 0x2b, 0x20, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x30, 0x32, 0x31, 0x38, // + (vec3(-0.0218 + 0x30, 0x33, 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x32, 0x39, 0x38, 0x36, 0x35, 0x30, // 0363, -0.0298650 + 0x37, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, 0x39, 0x33, 0x39, 0x35, 0x38, 0x29, 0x20, // 7, -0.04293958) + 0x2a, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // * (. (tmpvar_ + 0x31, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, // 1.z * tmpvar_1.z + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, // ). - . (tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // var_1.x * tmpvar + 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, // _1.x). )));. g + 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x20, // l_FragColor.xyz + 0x3d, 0x20, 0x72, 0x67, 0x62, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, // = rgb_2;. gl_Fr + 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, // agColor.w = 1.0; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... +}; +static const uint8_t fs_mesh_spv[2642] = +{ + 0x46, 0x53, 0x48, 0x0b, 0xe3, 0xc2, 0x5c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0a, // FSH....e......<. + 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x23, 0x02, // ....#.........#. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // ................ + 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, // ......GLSL.std.4 + 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // 50.............. + 0x00, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma + 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x01, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x29, 0x01, // in............). + 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x1a, 0x01, // ..main.......... + 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, // ..gl_FragCoord.. + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, // ..........v_norm + 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x29, 0x01, 0x00, 0x00, 0x62, 0x67, // al........)...bg + 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, // fx_FragData0..G. + 0x04, 0x00, 0x1a, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, // ..............G. + 0x04, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..............G. + 0x04, 0x00, 0x29, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, // ..)............. + 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ......!......... + 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, // .......... ..... + 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..............+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x14, 0xb1, 0xc4, 0xbe, 0x2b, 0x00, // ......8.......+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xfb, 0xd3, 0xd8, 0xbe, 0x2b, 0x00, // ......9.......+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x6d, 0xdf, 0xd9, 0xbe, 0x2c, 0x00, // ......:...m...,. + 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, // ......;...8...9. + 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..:...+.......>. + 0x00, 0x00, 0x00, 0xfe, 0x64, 0x3d, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3f, 0x00, // ....d=+.......?. + 0x00, 0x00, 0x2c, 0xf2, 0x67, 0x3d, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, // ..,.g=+.......@. + 0x00, 0x00, 0x66, 0x4c, 0x8f, 0x3d, 0x2c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, // ..fL.=,.......A. + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..>...?...@...+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x11, 0xc7, 0xf7, 0x3d, 0x2b, 0x00, // ......D......=+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x82, 0x52, 0xf4, 0x3d, 0x2b, 0x00, // ......E....R.=+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x66, 0xd8, 0xef, 0x3d, 0x2c, 0x00, // ......F...f..=,. + 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, // ......G...D...E. + 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4a, 0x00, // ..F...+.......J. + 0x00, 0x00, 0xe5, 0xf3, 0x34, 0xbe, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4b, 0x00, // ....4.+.......K. + 0x00, 0x00, 0x5b, 0x6b, 0x2e, 0xbe, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4c, 0x00, // ..[k..+.......L. + 0x00, 0x00, 0x30, 0xfa, 0x1a, 0xbe, 0x2c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4d, 0x00, // ..0...,.......M. + 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..J...K...L...+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x56, 0x59, 0xff, 0xbd, 0x2b, 0x00, // ......P...VY..+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf1, 0x68, 0xf4, 0xbd, 0x2b, 0x00, // ......Q....h..+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x1f, 0x39, 0xc5, 0xbd, 0x2c, 0x00, // ......R....9..,. + 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, // ......S...P...Q. + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, // ..R...+.......V. + 0x00, 0x00, 0x83, 0xcb, 0xf2, 0x3a, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, // .....:+.......W. + 0x00, 0x00, 0x03, 0x80, 0x05, 0xbd, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, // ......+.......X. + 0x00, 0x00, 0x8f, 0xa4, 0xb4, 0xbd, 0x2c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x59, 0x00, // ......,.......Y. + 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..V...W...X...+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x37, 0xbd, 0x97, 0x3e, 0x2b, 0x00, // ..........7..>+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x73, 0x02, 0x90, 0x3e, 0x2b, 0x00, // ......]...s..>+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x09, 0x2b, 0x79, 0x3e, 0x2c, 0x00, // ......^....+y>,. + 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, // ......_.......]. + 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x62, 0x00, // ..^...+.......b. + 0x00, 0x00, 0x2a, 0x7c, 0xa3, 0xbd, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x63, 0x00, // ..*|..+.......c. + 0x00, 0x00, 0x27, 0xee, 0xdf, 0xbd, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x64, 0x00, // ..'...+.......d. + 0x00, 0x00, 0x5c, 0xfb, 0x20, 0xbe, 0x2c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x65, 0x00, // .... .,.......e. + 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..b...c...d...+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x1c, 0x2a, 0xfa, 0xbe, 0x2b, 0x00, // ......o....*..+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x1c, 0x2a, 0xfa, 0x3e, 0x2b, 0x00, // ......u....*.>+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xa1, 0xd8, 0x8b, 0x3f, 0x2b, 0x00, // .............?+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0xa1, 0xd8, 0x8b, 0xbf, 0x2b, 0x00, // ..............+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x7b, 0xa1, 0x3e, 0x2b, 0x00, // ...........{.>+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x2b, 0x00, // ............@@+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, // .............?+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa1, 0xd8, 0x0b, 0x3f, 0x2b, 0x00, // .............?+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, // .............@+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x00, // .............? . + 0x04, 0x00, 0x19, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x19, 0x01, 0x00, 0x00, 0x1a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x28, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..(...........;. + 0x04, 0x00, 0x28, 0x01, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..(...).......+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, 0x8e, 0xc6, 0x8b, 0x3e, 0x2b, 0x00, // .............>+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x6b, 0x0a, 0x8d, 0x3e, 0x2b, 0x00, // ..........k..>+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x02, 0x00, 0x00, 0x8e, 0xb8, 0x80, 0x3e, 0x2c, 0x00, // .............>,. + 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, 0x1c, 0x02, // ................ + 0x00, 0x00, 0x1d, 0x02, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x02, // ......+....... . + 0x00, 0x00, 0xcd, 0xcc, 0xcc, 0x3e, 0x2c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x21, 0x02, // .....>,.......!. + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x01, 0x00, // .. ... ... ..... + 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, // ......"...6..... + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, // ................ + 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1f, 0x01, // ......=......... + 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x47, 0x01, // ..............G. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x51, 0x00, // ......E.......Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, // ......h...G..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x6f, 0x00, // ..........i...o. + 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x01, // ..h...Q.......l. + 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, // ..G............. + 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x51, 0x00, // ..m...u...l...Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x02, 0x00, // ......p...G..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x6f, 0x00, // ..........q...o. + 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x74, 0x01, // ..p...Q.......t. + 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, // ..G............. + 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x51, 0x00, // ..u.......t...Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x02, 0x00, // ......w...G..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x75, 0x01, // ..........x...u. + 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7b, 0x01, // ..w...Q.......{. + 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, // ..G............. + 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x7b, 0x01, 0x00, 0x00, 0x51, 0x00, // ..|.......{...Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x01, 0x00, // ......~...G..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x7c, 0x01, // ..............|. + 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x82, 0x01, // ..~...Q......... + 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, // ..G............. + 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x01, 0x00, // ..........G..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x83, 0x01, // ................ + 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x87, 0x01, // ................ + 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, // ................ + 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x02, 0x00, // ..........G..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x88, 0x00, // ................ + 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8e, 0x01, // ......Q......... + 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, // ..G............. + 0x00, 0x00, 0x8f, 0x01, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x02, 0x00, // ..........G..... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x47, 0x01, // ..Q...........G. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x95, 0x01, // ................ + 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ..........Q..... + 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ......G.......Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, // ..........G..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, 0x97, 0x01, // ................ + 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x01, // ................ + 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, // ................ + 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x9b, 0x01, 0x00, 0x00, 0x8e, 0x00, // ................ + 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x69, 0x01, // ..........;...i. + 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0xab, 0x01, // ................ + 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xae, 0x01, // ................ + 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0x21, 0x02, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x08, 0x00, // ......!......... + 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0x8e, 0x00, // ................ + 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xb5, 0x01, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x6d, 0x01, // ..........A...m. + 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x00, 0xb5, 0x01, // ................ + 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xb8, 0x01, // ................ + 0x00, 0x00, 0xb6, 0x01, 0x00, 0x00, 0x21, 0x02, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x08, 0x00, // ......!......... + 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x8e, 0x00, // ................ + 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x71, 0x01, // ..........G...q. + 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xbf, 0x01, // ................ + 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xc2, 0x01, // ................ + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x21, 0x02, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x08, 0x00, // ......!......... + 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x8e, 0x00, // ................ + 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x78, 0x01, // ..........M...x. + 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0x00, 0xc9, 0x01, // ................ + 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xcc, 0x01, // ................ + 0x00, 0x00, 0xca, 0x01, 0x00, 0x00, 0x21, 0x02, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x08, 0x00, // ......!......... + 0x00, 0x00, 0xce, 0x01, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, 0xcc, 0x01, 0x00, 0x00, 0x8e, 0x00, // ................ + 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xd3, 0x01, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x7f, 0x01, // ..........S..... + 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0xd3, 0x01, // ................ + 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xd6, 0x01, // ................ + 0x00, 0x00, 0xce, 0x01, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x08, 0x00, // ................ + 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x8e, 0x00, // ......Y......... + 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0xec, 0x00, // ................ + 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xde, 0x01, 0x00, 0x00, 0xd6, 0x01, // ................ + 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xe3, 0x01, // ................ + 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x8f, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x08, 0x00, // .._............. + 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0xe3, 0x01, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x81, 0x00, // ................ + 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0xde, 0x01, 0x00, 0x00, 0xe4, 0x01, // ................ + 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0x65, 0x00, // ..............e. + 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xec, 0x01, // ................ + 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x08, 0x00, // ................ + 0x00, 0x00, 0xee, 0x01, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, 0x4f, 0x00, // ..............O. + 0x09, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, 0xee, 0x01, // ......K..."..... + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x98, 0x00, // ..R............. + 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x29, 0x01, // ..K.......>...). + 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..........8..... + 0x00, 0x00, // .. +}; +static const uint8_t fs_mesh_dx9[663] = +{ + 0x46, 0x53, 0x48, 0x0b, 0xe3, 0xc2, 0x5c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x02, // FSH....e........ + 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ..........CTAB.. + 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ..#............. + 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 + 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H + 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi + 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, // ler 10.1..Q..... + 0x0f, 0xa0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, // ....@@.......?.. + 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x8e, 0xc6, 0x8b, 0x3e, 0x6b, 0x0a, // ..Q..........>k. + 0x8d, 0x3e, 0x8e, 0xb8, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, // .>...>....Q..... + 0x0f, 0xa0, 0x3a, 0xc4, 0x19, 0x3e, 0x25, 0x82, 0x29, 0x3e, 0x39, 0x53, 0x2a, 0x3e, 0x00, 0x00, // ..:..>%.)>9S*>.. + 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0x92, 0x04, 0xb3, 0x3c, 0xb8, 0x53, // ..Q..........<.S + 0xb5, 0x3c, 0x16, 0x0d, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x04, 0x00, // .<...<....Q..... + 0x0f, 0xa0, 0x20, 0xb4, 0x41, 0xbd, 0x9c, 0x00, 0x3f, 0xbd, 0xa0, 0x80, 0x3b, 0xbd, 0x00, 0x00, // .. .A...?...;... + 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x05, 0x00, 0x0f, 0xa0, 0xe2, 0x28, 0x9e, 0xbd, 0x04, 0x73, // ..Q........(...s + 0x98, 0xbd, 0xc8, 0x74, 0x87, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x06, 0x00, // ...t......Q..... + 0x0f, 0xa0, 0x96, 0x7d, 0x8b, 0x3d, 0xcd, 0x83, 0x85, 0x3d, 0xd0, 0x79, 0x57, 0x3d, 0x00, 0x00, // ...}.=...=.yW=.. + 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x07, 0x00, 0x0f, 0xa0, 0xa6, 0x26, 0x99, 0x39, 0x4e, 0x6b, // ..Q........&.9Nk + 0xa8, 0xbb, 0x93, 0xe4, 0x63, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x08, 0x00, // ....c.....Q..... + 0x0f, 0xa0, 0x48, 0xc8, 0x25, 0xbe, 0x62, 0x56, 0x1d, 0xbe, 0x37, 0x1d, 0x08, 0xbe, 0x00, 0x00, // ..H.%.bV..7..... + 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x09, 0x00, 0x0f, 0xa0, 0x85, 0x9d, 0xb2, 0xbc, 0x9a, 0xa7, // ..Q............. + 0xf4, 0xbc, 0x69, 0xe1, 0x2f, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x03, 0x00, // ..i./........... + 0x00, 0x80, 0x00, 0x00, 0x07, 0x90, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ + 0xe4, 0x90, 0x00, 0x00, 0xe4, 0x90, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ + 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ + 0x90, 0x90, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x04, 0x00, // ................ + 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, // ........U....... + 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x03, 0x00, // ................ + 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, // ................ + 0xff, 0x80, 0x04, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, // ................ + 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xab, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, // ................ + 0x07, 0x80, 0x02, 0x00, 0x00, 0x80, 0x05, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, // ................ + 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0x55, 0x80, 0x06, 0x00, 0xe4, 0xa0, 0x01, 0x00, // ........U....... + 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x00, 0x00, // ................ + 0x00, 0xa0, 0x00, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, // ....U........... + 0x00, 0x80, 0x07, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, // ................ + 0x07, 0x80, 0x02, 0x00, 0xff, 0x80, 0x08, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x55, 0x80, 0x04, 0x00, // ........U...U... + 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, // ................ + 0x00, 0x81, 0x04, 0x00, 0x00, 0x04, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, // ................ + 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, // ................ + 0xaa, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... +}; +static const uint8_t fs_mesh_dx11[878] = +{ + 0x46, 0x53, 0x48, 0x0b, 0xe3, 0xc2, 0x5c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x03, // FSH....e......X. + 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x44, 0x44, 0xd1, 0x1e, 0x9d, 0xd3, 0x3f, 0xa4, 0x1f, 0x99, // ..DXBCDD....?... + 0x9d, 0x06, 0x1d, 0x10, 0x35, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x03, 0x00, // ....5.....X..... + 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS + 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, // GNL...........8. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......D......... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x53, 0x56, // ..............SV + 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, // _POSITION.NORMAL + 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR + 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x9c, 0x02, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@. + 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, // ......b...r..... + 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, // ..e.... ......h. + 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, // ..F.......F..... + 0x00, 0x00, 0x44, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, // ..D............. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8......... + 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, // ..2...r.......V. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x3a, 0xc4, 0x19, 0x3e, 0x25, 0x82, // .......@..:..>%. + 0x29, 0x3e, 0x39, 0x53, 0x2a, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x8e, 0xc6, // )>9S*>.....@.... + 0x8b, 0x3e, 0x6b, 0x0a, 0x8d, 0x3e, 0x8e, 0xb8, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, // .>k..>...>....2. + 0x00, 0x0c, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, // ..r............. + 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x92, 0x04, 0xb3, 0x3c, 0xb8, 0x53, 0xb5, 0x3c, 0x16, 0x0d, // ...@.....<.S.<.. + 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, // .<....F.......2. + 0x00, 0x0c, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, // ..r............. + 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x20, 0xb4, 0x41, 0xbd, 0x9c, 0x00, 0x3f, 0xbd, 0xa0, 0x80, // ...@.. .A...?... + 0x3b, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, // ;.....F.......8. + 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, // ..........F..... + 0x00, 0x00, 0xb6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0x72, 0x00, // ..........2...r. + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, // ...............@ + 0x00, 0x00, 0xe2, 0x28, 0x9e, 0xbd, 0x04, 0x73, 0x98, 0xbd, 0xc8, 0x74, 0x87, 0xbd, 0x00, 0x00, // ...(...s...t.... + 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0x72, 0x00, // ..F.......2...r. + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, // ......V........@ + 0x00, 0x00, 0x96, 0x7d, 0x8b, 0x3d, 0xcd, 0x83, 0x85, 0x3d, 0xd0, 0x79, 0x57, 0x3d, 0x00, 0x00, // ...}.=...=.yW=.. + 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x12, 0x00, // ..F.......2..... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, // ......*........@ + 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x32, 0x00, // ....@@.@......2. + 0x00, 0x0c, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, // ..r............. + 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xa6, 0x26, 0x99, 0x39, 0x4e, 0x6b, 0xa8, 0xbb, 0x93, 0xe4, // ...@...&.9Nk.... + 0x63, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, // c.....F.......2. + 0x00, 0x0c, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x02, 0x00, // ..r............. + 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x48, 0xc8, 0x25, 0xbe, 0x62, 0x56, 0x1d, 0xbe, 0x37, 0x1d, // ...@..H.%.bV..7. + 0x08, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, // ......F.......8. + 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x12, 0x00, // ..........2..... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, // ......:.......:. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........A..... + 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, // ..2...r ........ + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x85, 0x9d, 0xb2, 0xbc, 0x9a, 0xa7, // .......@........ + 0xf4, 0xbc, 0x69, 0xe1, 0x2f, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, // ..i./.....F..... + 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, // ..6.... .......@ + 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // .....?>....... +}; +static const uint8_t fs_mesh_mtl[1798] = +{ + 0x46, 0x53, 0x48, 0x0b, 0xe3, 0xc2, 0x5c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x06, // FSH....e........ + 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, // ..#include <meta + 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, // l_stdlib>.#inclu + 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, // de <simd/simd.h> + 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac + 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, // e metal;..consta + 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x35, 0x34, 0x33, 0x20, 0x3d, // nt float4 _543 = + 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // {};..struct xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, // tMtlMain_out.{. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // float4 bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ragData0 [[color + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // (0)]];.};..struc + 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, // t xlatMtlMain_in + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, // .{. float3 v_ + 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // normal [[user(lo + 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, // cn0)]];.};..frag + 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // ment xlatMtlMain + 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // _out xlatMtlMain + 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, // (xlatMtlMain_in + 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x29, // in [[stage_in]]) + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // .{. xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, // in_out out = {}; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x34, // . float3 _324 + 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x69, 0x6e, 0x2e, // = normalize(in. + 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // v_normal);. f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, 0x39, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, // loat3 _491 = ((( + 0x28, 0x28, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x32, 0x37, 0x32, // ((((float3(0.272 + 0x39, 0x39, 0x39, 0x32, 0x32, 0x37, 0x30, 0x34, 0x36, 0x39, 0x36, 0x36, 0x35, 0x35, 0x2c, 0x20, // 99922704696655, + 0x30, 0x2e, 0x32, 0x37, 0x35, 0x34, 0x37, 0x30, 0x31, 0x30, 0x37, 0x37, 0x39, 0x33, 0x38, 0x30, // 0.27547010779380 + 0x37, 0x39, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x31, 0x34, 0x30, 0x38, 0x30, 0x34, 0x30, // 798, 0.251408040 + 0x35, 0x32, 0x33, 0x35, 0x32, 0x39, 0x30, 0x35, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x66, // 52352905) + (((f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x33, 0x38, 0x34, 0x31, 0x36, 0x33, 0x34, // loat3(-0.3841634 + 0x39, 0x38, 0x38, 0x37, 0x38, 0x34, 0x37, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x34, 0x32, 0x33, // 98878479, -0.423 + 0x34, 0x39, 0x32, 0x32, 0x38, 0x32, 0x36, 0x32, 0x39, 0x30, 0x31, 0x33, 0x30, 0x36, 0x2c, 0x20, // 49228262901306, + 0x2d, 0x30, 0x2e, 0x34, 0x32, 0x35, 0x35, 0x33, 0x32, 0x37, 0x32, 0x38, 0x34, 0x33, 0x33, 0x36, // -0.4255327284336 + 0x30, 0x39, 0x30, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x28, 0x2d, 0x30, 0x2e, 0x34, 0x38, 0x38, // 0901) * ((-0.488 + 0x36, 0x30, 0x32, 0x35, 0x31, 0x39, 0x30, 0x33, 0x35, 0x33, 0x33, 0x39, 0x33, 0x36, 0x29, 0x20, // 60251903533936) + 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, // * _324.x)) * 2.0 + 0x29, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x30, 0x30, // ) * float3(0.400 + 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x39, 0x36, 0x30, 0x34, 0x36, 0x34, 0x34, 0x38, 0x29, 0x29, // 00000596046448)) + 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, // ) + (((float3(0. + 0x30, 0x35, 0x35, 0x39, 0x30, 0x36, 0x32, 0x39, 0x35, 0x37, 0x37, 0x36, 0x33, 0x36, 0x37, 0x31, // 0559062957763671 + 0x38, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x36, 0x36, 0x32, 0x37, 0x34, 0x33, 0x37, 0x34, // 88, 0.0566274374 + 0x37, 0x32, 0x33, 0x34, 0x33, 0x34, 0x34, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x36, 0x39, 0x39, // 72343445, 0.0699 + 0x36, 0x39, 0x39, 0x33, 0x37, 0x32, 0x30, 0x35, 0x33, 0x31, 0x34, 0x36, 0x33, 0x36, 0x29, 0x20, // 69937205314636) + 0x2a, 0x20, 0x28, 0x30, 0x2e, 0x34, 0x38, 0x38, 0x36, 0x30, 0x32, 0x35, 0x31, 0x39, 0x30, 0x33, // * (0.48860251903 + 0x35, 0x33, 0x33, 0x39, 0x33, 0x36, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x79, 0x29, // 533936 * _324.y) + 0x29, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // ) * 2.0) * float + 0x33, 0x28, 0x30, 0x2e, 0x34, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x39, 0x36, 0x30, // 3(0.400000005960 + 0x34, 0x36, 0x34, 0x34, 0x38, 0x29, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x66, 0x6c, // 46448))) + (((fl + 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x31, 0x32, 0x30, 0x39, 0x38, 0x35, 0x31, 0x35, 0x37, // oat3(0.120985157 + 0x37, 0x38, 0x37, 0x37, 0x39, 0x39, 0x38, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x32, // 78779984, 0.1192 + 0x39, 0x37, 0x39, 0x39, 0x36, 0x31, 0x36, 0x33, 0x33, 0x36, 0x38, 0x32, 0x33, 0x2c, 0x20, 0x30, // 9799616336823, 0 + 0x2e, 0x31, 0x31, 0x37, 0x31, 0x31, 0x31, 0x39, 0x36, 0x36, 0x30, 0x31, 0x33, 0x39, 0x30, 0x38, // .117111966013908 + 0x33, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x28, 0x2d, 0x30, 0x2e, 0x34, 0x38, 0x38, 0x36, 0x30, // 39) * ((-0.48860 + 0x32, 0x35, 0x31, 0x39, 0x30, 0x33, 0x35, 0x33, 0x33, 0x39, 0x33, 0x36, 0x29, 0x20, 0x2a, 0x20, // 251903533936) * + 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, // _324.z)) * 2.0) + 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x30, 0x30, 0x30, 0x30, // * float3(0.40000 + 0x30, 0x30, 0x30, 0x35, 0x39, 0x36, 0x30, 0x34, 0x36, 0x34, 0x34, 0x38, 0x29, 0x29, 0x29, 0x20, // 000596046448))) + 0x2b, 0x20, 0x28, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x31, // + (((float3(-0.1 + 0x37, 0x36, 0x37, 0x31, 0x31, 0x36, 0x33, 0x33, 0x38, 0x30, 0x31, 0x34, 0x36, 0x30, 0x32, 0x37, // 7671163380146027 + 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x37, 0x30, 0x33, 0x33, 0x31, 0x34, 0x30, 0x33, 0x36, 0x31, // , -0.17033140361 + 0x33, 0x30, 0x39, 0x30, 0x35, 0x32, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x35, 0x31, 0x33, 0x34, // 309052, -0.15134 + 0x35, 0x30, 0x31, 0x34, 0x35, 0x37, 0x32, 0x31, 0x34, 0x33, 0x35, 0x35, 0x29, 0x20, 0x2a, 0x20, // 501457214355) * + 0x28, 0x28, 0x31, 0x2e, 0x30, 0x39, 0x32, 0x35, 0x34, 0x38, 0x34, 0x38, 0x39, 0x35, 0x37, 0x30, // ((1.092548489570 + 0x36, 0x31, 0x37, 0x37, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x78, 0x29, 0x20, 0x2a, // 6177 * _324.x) * + 0x20, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x31, 0x2e, 0x30, 0x29, // _324.z)) * 1.0) + 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x30, 0x30, 0x30, // * float3(0.4000 + 0x30, 0x30, 0x30, 0x30, 0x35, 0x39, 0x36, 0x30, 0x34, 0x36, 0x34, 0x34, 0x38, 0x29, 0x29, 0x29, // 0000596046448))) + 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x31, // + ((float3(-0.1 + 0x32, 0x34, 0x36, 0x38, 0x32, 0x31, 0x31, 0x33, 0x35, 0x32, 0x38, 0x32, 0x35, 0x31, 0x36, 0x35, // 2468211352825165 + 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x33, 0x34, 0x30, 0x37, 0x38, 0x34, 0x38, 0x34, // , -0.11934078484 + 0x37, 0x37, 0x33, 0x36, 0x33, 0x36, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x39, 0x36, 0x33, 0x30, // 773636, -0.09630 + 0x30, 0x33, 0x35, 0x36, 0x30, 0x39, 0x30, 0x30, 0x36, 0x38, 0x38, 0x31, 0x37, 0x29, 0x20, 0x2a, // 0356090068817) * + 0x20, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x39, 0x32, 0x35, 0x34, 0x38, 0x34, 0x38, 0x39, // (((-1.092548489 + 0x35, 0x37, 0x30, 0x36, 0x31, 0x37, 0x37, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x34, 0x2e, // 5706177) * _324. + 0x78, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2a, 0x20, // x) * _324.y)) * + 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // 0.5)) + ((float3 + 0x28, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x38, 0x35, 0x32, 0x33, 0x37, 0x38, 0x35, 0x39, 0x38, 0x34, // (0.0018523785984 + 0x31, 0x34, 0x33, 0x36, 0x31, 0x35, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x33, 0x32, 0x35, 0x39, // 143615, -0.03259 + 0x32, 0x37, 0x38, 0x34, 0x36, 0x31, 0x33, 0x33, 0x37, 0x30, 0x38, 0x39, 0x35, 0x2c, 0x20, 0x2d, // 2784613370895, - + 0x30, 0x2e, 0x30, 0x38, 0x38, 0x32, 0x30, 0x34, 0x34, 0x39, 0x35, 0x36, 0x30, 0x38, 0x38, 0x30, // 0.08820449560880 + 0x36, 0x36, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x30, 0x2e, 0x33, 0x31, 0x35, 0x33, 0x39, 0x31, // 661) * (0.315391 + 0x35, 0x37, 0x30, 0x33, 0x32, 0x39, 0x36, 0x36, 0x36, 0x31, 0x34, 0x20, 0x2a, 0x20, 0x28, 0x28, // 57032966614 * (( + 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x79, 0x29, 0x20, 0x2a, // (3.0 * _324.y) * + 0x20, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x79, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, // _324.y) - 1.0)) + 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x6c, // ) * 0.5)) + ((fl + 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x32, 0x39, 0x36, 0x33, 0x36, 0x35, 0x34, 0x36, 0x39, // oat3(0.296365469 + 0x36, 0x39, 0x34, 0x31, 0x33, 0x37, 0x35, 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x38, 0x31, 0x32, // 69413757, 0.2812 + 0x36, 0x38, 0x36, 0x38, 0x36, 0x30, 0x35, 0x36, 0x31, 0x33, 0x37, 0x30, 0x38, 0x2c, 0x20, 0x30, // 6868605613708, 0 + 0x2e, 0x32, 0x34, 0x33, 0x33, 0x32, 0x38, 0x32, 0x32, 0x38, 0x35, 0x39, 0x32, 0x38, 0x37, 0x32, // .243328228592872 + 0x36, 0x32, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x39, 0x32, 0x35, // 62) * (((-1.0925 + 0x34, 0x38, 0x34, 0x38, 0x39, 0x35, 0x37, 0x30, 0x36, 0x31, 0x37, 0x37, 0x29, 0x20, 0x2a, 0x20, // 484895706177) * + 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x79, // _324.z) * _324.y + 0x29, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, // )) * 0.5)) + ((f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x30, 0x37, 0x39, 0x38, 0x32, 0x36, 0x36, // loat3(-0.0798266 + 0x36, 0x37, 0x39, 0x30, 0x34, 0x38, 0x35, 0x33, 0x38, 0x32, 0x31, 0x2c, 0x20, 0x2d, 0x30, 0x2e, // 67904853821, -0. + 0x31, 0x30, 0x39, 0x33, 0x34, 0x30, 0x39, 0x35, 0x38, 0x32, 0x39, 0x37, 0x32, 0x35, 0x32, 0x36, // 1093409582972526 + 0x36, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x35, 0x37, 0x32, 0x30, 0x38, 0x38, 0x35, 0x39, 0x39, // 6, -0.1572088599 + 0x32, 0x30, 0x35, 0x30, 0x31, 0x37, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x34, // 2050171) * (0.54 + 0x36, 0x32, 0x37, 0x34, 0x32, 0x34, 0x34, 0x37, 0x38, 0x35, 0x33, 0x30, 0x38, 0x38, 0x34, 0x20, // 627424478530884 + 0x2a, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, // * ((_324.z * _32 + 0x34, 0x2e, 0x7a, 0x29, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x78, 0x20, 0x2a, // 4.z) - (_324.x * + 0x20, 0x5f, 0x33, 0x32, 0x34, 0x2e, 0x78, 0x29, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, // _324.x)))) * 0. + 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, // 5);. float4 _ + 0x35, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x34, 0x39, // 533 = float4(_49 + 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x34, 0x39, 0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x34, 0x39, // 1.x, _491.y, _49 + 0x31, 0x2e, 0x7a, 0x2c, 0x20, 0x5f, 0x35, 0x34, 0x33, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 1.z, _543.w);. + 0x20, 0x20, 0x5f, 0x35, 0x33, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, // _533.w = 1.0;. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, // out.bgfx_Fra + 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x33, 0x33, 0x3b, 0x0a, 0x20, // gData0 = _533;. + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, // return out;.} + 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, // ...... +}; +extern const uint8_t* fs_mesh_pssl; +extern const uint32_t fs_mesh_pssl_size; diff --git a/3rdparty/bgfx/tools/geometryv/fs_mesh.sc b/3rdparty/bgfx/tools/geometryv/fs_mesh.sc new file mode 100644 index 00000000000..de56ba5c571 --- /dev/null +++ b/3rdparty/bgfx/tools/geometryv/fs_mesh.sc @@ -0,0 +1,64 @@ +$input v_normal + +/* + * Copyright 2019 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include <bgfx_shader.sh> + + +// this is from 28-wireframe/fs_wf_mesh.sc by Dario Manesku +vec3 evalSh(vec3 _dir) +{ +# define k01 0.2820947918 // sqrt( 1/PI)/2 +# define k02 0.4886025119 // sqrt( 3/PI)/2 +# define k03 1.0925484306 // sqrt(15/PI)/2 +# define k04 0.3153915652 // sqrt( 5/PI)/4 +# define k05 0.5462742153 // sqrt(15/PI)/4 + + vec3 shEnv[9]; + shEnv[0] = vec3( 0.967757057878229854, 0.976516067990363390, 0.891218272348969998); /* Band 0 */ + shEnv[1] = vec3(-0.384163503608655643, -0.423492289131209787, -0.425532726148547868); /* Band 1 */ + shEnv[2] = vec3( 0.055906294587354334, 0.056627436881069373, 0.069969936396987467); + shEnv[3] = vec3( 0.120985157386215209, 0.119297994074027414, 0.117111965829213599); + shEnv[4] = vec3(-0.176711633774331106, -0.170331404095516392, -0.151345020570876621); /* Band 2 */ + shEnv[5] = vec3(-0.124682114349692147, -0.119340785411183953, -0.096300354204368860); + shEnv[6] = vec3( 0.001852378550138503, -0.032592784164597745, -0.088204495001329680); + shEnv[7] = vec3( 0.296365482782109446, 0.281268696656263029, 0.243328223888495510); + shEnv[8] = vec3(-0.079826665303240341, -0.109340956251195970, -0.157208859664677764); + + vec3 nn = _dir.zxy; + + float sh[9]; + sh[0] = k01; + sh[1] = -k02*nn.y; + sh[2] = k02*nn.z; + sh[3] = -k02*nn.x; + sh[4] = k03*nn.y*nn.x; + sh[5] = -k03*nn.y*nn.z; + sh[6] = k04*(3.0*nn.z*nn.z-1.0); + sh[7] = -k03*nn.x*nn.z; + sh[8] = k05*(nn.x*nn.x-nn.y*nn.y); + + vec3 rgb = vec3_splat(0.0); + rgb += shEnv[0] * sh[0] * 1.0; + rgb += shEnv[1] * sh[1] * 2.0/2.5; + rgb += shEnv[2] * sh[2] * 2.0/2.5; + rgb += shEnv[3] * sh[3] * 2.0/2.5; + rgb += shEnv[4] * sh[4] * 1.0/2.5; + rgb += shEnv[5] * sh[5] * 0.5; + rgb += shEnv[6] * sh[6] * 0.5; + rgb += shEnv[7] * sh[7] * 0.5; + rgb += shEnv[8] * sh[8] * 0.5; + + return rgb; +} + +void main() +{ + vec3 nn = normalize(v_normal); + + gl_FragColor.xyz = evalSh(nn); + gl_FragColor.w = 1.0; +} diff --git a/3rdparty/bgfx/tools/geometryv/geometryv.cpp b/3rdparty/bgfx/tools/geometryv/geometryv.cpp new file mode 100644 index 00000000000..ea3e075faae --- /dev/null +++ b/3rdparty/bgfx/tools/geometryv/geometryv.cpp @@ -0,0 +1,1332 @@ +/* + * Copyright 2019-2019 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "common.h" + +#include <bgfx/bgfx.h> + +#include <bx/commandline.h> +#include <bx/easing.h> +#include <bx/file.h> +#include <bx/math.h> +#include <bx/os.h> +#include <bx/settings.h> + +#include <entry/entry.h> +#include <entry/input.h> +#include <entry/cmd.h> +#include <entry/dialog.h> +#include <imgui/imgui.h> +#include <debugdraw/debugdraw.h> +#include <bgfx_utils.h> + +#include <tinystl/allocator.h> +#include <tinystl/vector.h> +namespace stl = tinystl; +#include <string> +#include <algorithm> + +#include <bgfx/embedded_shader.h> + +#include "vs_mesh.bin.h" +#include "fs_mesh.bin.h" + +#define SCENE_VIEW_ID 0 + +#define BGFX_GEOMETRYV_VERSION_MAJOR 1 +#define BGFX_GEOMETRYV_VERSION_MINOR 0 + +static const bgfx::EmbeddedShader s_embeddedShaders[] = +{ + BGFX_EMBEDDED_SHADER(vs_mesh), + BGFX_EMBEDDED_SHADER(fs_mesh), + + BGFX_EMBEDDED_SHADER_END() +}; + +static const char* s_attribShortNames[] = +{ + "P", // Position + "N", // Normal + "T", // Tangent + "B", // Bitangent + "C0", // Color0 + "C1", // Color1 + "C2", // Color2 + "C3", // Color3 + "I", // Indices + "W", // Weight + "TC0", // TexCoord0 + "TC1", // TexCoord1 + "TC2", // TexCoord2 + "TC3", // TexCoord3 + "TC4", // TexCoord4 + "TC5", // TexCoord5 + "TC6", // TexCoord6 + "TC7", // TexCoord7 +}; +BX_STATIC_ASSERT(BX_COUNTOF(s_attribShortNames) == bgfx::Attrib::Count); + + +static const char* s_supportedExt[] = +{ + "bin", +}; + +struct Binding +{ + enum Enum + { + App, + View, + Help, + About, + + Count + }; +}; + +static const InputBinding s_bindingApp[] = +{ + { entry::Key::KeyQ, entry::Modifier::None, 1, NULL, "exit" }, + { entry::Key::KeyF, entry::Modifier::None, 1, NULL, "graphics fullscreen" }, + + INPUT_BINDING_END +}; + +const char* s_resetCmd = + "view dolly\n" + "view orbit\n" + ; + +static const InputBinding s_bindingView[] = +{ + { entry::Key::Esc, entry::Modifier::None, 1, NULL, "exit" }, + + { entry::Key::Key1, entry::Modifier::None, 1, NULL, "view dolly" }, + + { entry::Key::Key0, entry::Modifier::None, 1, NULL, s_resetCmd }, + { entry::Key::Plus, entry::Modifier::None, 1, NULL, "view dolly +0.1" }, + { entry::Key::Minus, entry::Modifier::None, 1, NULL, "view dolly -0.1" }, + + { entry::Key::KeyW, entry::Modifier::None, 1, NULL, "view orbit y -0.1" }, + { entry::Key::KeyS, entry::Modifier::None, 1, NULL, "view orbit y +0.1" }, + { entry::Key::KeyA, entry::Modifier::None, 1, NULL, "view orbit x +0.1" }, + { entry::Key::KeyD, entry::Modifier::None, 1, NULL, "view orbit x -0.1" }, + + { entry::Key::Up, entry::Modifier::None, 1, NULL, "view file-up" }, + { entry::Key::Down, entry::Modifier::None, 1, NULL, "view file-down" }, + + { entry::Key::KeyI, entry::Modifier::None, 1, NULL, "view info" }, + + { entry::Key::KeyH, entry::Modifier::None, 1, NULL, "view help" }, + + { entry::Key::Return, entry::Modifier::None, 1, NULL, "view files" }, + + { entry::Key::Space, entry::Modifier::None, 1, NULL, "view geo\n" }, + + INPUT_BINDING_END +}; + +static const InputBinding s_bindingHelp[] = +{ + { entry::Key::Esc, entry::Modifier::None, 1, NULL, "view help" }, + { entry::Key::KeyH, entry::Modifier::None, 1, NULL, "view help" }, + INPUT_BINDING_END +}; + +static const InputBinding s_bindingAbout[] = +{ + { entry::Key::Esc, entry::Modifier::None, 1, NULL, "view about" }, + INPUT_BINDING_END +}; + +static const char* s_bindingName[] = +{ + "App", + "View", + "Help", + "About", +}; +BX_STATIC_ASSERT(Binding::Count == BX_COUNTOF(s_bindingName) ); + +static const InputBinding* s_binding[] = +{ + s_bindingApp, + s_bindingView, + s_bindingHelp, + s_bindingAbout, +}; +BX_STATIC_ASSERT(Binding::Count == BX_COUNTOF(s_binding) ); + +static const char* s_filter = "" + "Bgfx geometry (bin) | *.bin\n" + ; + +struct Camera +{ + Camera() + { + init(bx::init::Zero, 2.0f, 0.01f, 100.0f); + } + + void init(const bx::Vec3& _center, float _distance, float _near, float _far) + { + m_target.curr = _center; + m_target.dest = _center; + + m_pos.curr = _center; + m_pos.curr.z += _distance; + m_pos.dest = _center; + m_pos.dest.z += _distance; + + m_orbit[0] = 0.0f; + m_orbit[1] = 0.0f; + + m_near = _near; + m_far = _far; + } + + void mtxLookAt(float* _outViewMtx) + { + bx::mtxLookAt(_outViewMtx, m_pos.curr, m_target.curr); + } + + void orbit(float _dx, float _dy) + { + m_orbit[0] += _dx; + m_orbit[1] += _dy; + } + + void distance(float _z) + { + _z = bx::clamp(_z, m_near, m_far); + + bx::Vec3 toTarget = bx::sub(m_target.dest, m_pos.dest); + bx::Vec3 toTargetNorm = bx::normalize(toTarget); + + m_pos.dest = bx::mad(toTargetNorm, -_z, m_target.dest); + } + + void dolly(float _dz) + { + const bx::Vec3 toTarget = bx::sub(m_target.dest, m_pos.dest); + const float toTargetLen = bx::length(toTarget); + const float invToTargetLen = 1.0f / (toTargetLen + bx::kFloatSmallest); + const bx::Vec3 toTargetNorm = bx::mul(toTarget, invToTargetLen); + + float delta = toTargetLen * _dz; + float newLen = toTargetLen - delta; + + if ( (m_near < newLen || _dz < 0.0f) + && (newLen < m_far || _dz > 0.0f) ) + { + m_pos.dest = bx::mad(toTargetNorm, delta, m_pos.dest); + } + } + + void consumeOrbit(float _amount) + { + float consume[2]; + consume[0] = m_orbit[0] * _amount; + consume[1] = m_orbit[1] * _amount; + m_orbit[0] -= consume[0]; + m_orbit[1] -= consume[1]; + + const bx::Vec3 toPos = bx::sub(m_pos.curr, m_target.curr); + const float toPosLen = bx::length(toPos); + const float invToPosLen = 1.0f / (toPosLen + bx::kFloatSmallest); + const bx::Vec3 toPosNorm = bx::mul(toPos, invToPosLen); + + float ll[2]; + bx::toLatLong(&ll[0], &ll[1], toPosNorm); + ll[0] += consume[0]; + ll[1] -= consume[1]; + ll[1] = bx::clamp(ll[1], 0.02f, 0.98f); + + const bx::Vec3 tmp = bx::fromLatLong(ll[0], ll[1]); + const bx::Vec3 diff = bx::mul(bx::sub(tmp, toPosNorm), toPosLen); + + m_pos.curr = bx::add(m_pos.curr, diff); + m_pos.dest = bx::add(m_pos.dest, diff); + } + + void update(float _dt) + { + const float amount = bx::min(_dt / 0.12f, 1.0f); + + consumeOrbit(amount); + + m_target.curr = bx::lerp(m_target.curr, m_target.dest, amount); + m_pos.curr = bx::lerp(m_pos.curr, m_pos.dest, amount); + } + + struct Interp3f + { + bx::Vec3 curr = bx::init::None; + bx::Vec3 dest = bx::init::None; + }; + + Interp3f m_target; + Interp3f m_pos; + float m_orbit[2]; + float m_near, m_far; +}; + +struct Mouse +{ + Mouse() + { + m_dx = 0.0f; + m_dy = 0.0f; + m_prevMx = 0.0f; + m_prevMx = 0.0f; + m_scroll = 0; + m_scrollPrev = 0; + } + + void update(float _mx, float _my, int32_t _mz, uint32_t _width, uint32_t _height) + { + const float widthf = float(int32_t(_width)); + const float heightf = float(int32_t(_height)); + + // Delta movement. + m_dx = float(_mx - m_prevMx)/widthf; + m_dy = float(_my - m_prevMy)/heightf; + + m_prevMx = _mx; + m_prevMy = _my; + + // Scroll. + m_scroll = _mz - m_scrollPrev; + m_scrollPrev = _mz; + } + + float m_dx; // Screen space. + float m_dy; + float m_prevMx; + float m_prevMy; + int32_t m_scroll; + int32_t m_scrollPrev; +}; + +struct View +{ + View() + : m_fileIndex(0) + , m_width(1280) + , m_height(720) + , m_help(false) + , m_about(false) + , m_info(false) + , m_files(false) + , m_axes(false) + , m_meshCenter(0.0f,0.0f,0.0f) + , m_meshRadius(1.0f) + , m_idleTimer(0.0f) + { + load(); + } + + ~View() + { + } + int32_t cmd(int32_t _argc, char const* const* _argv) + { + if (_argc >= 2) + { + if (0 == bx::strCmp(_argv[1], "file-up") ) + { + m_fileIndex = bx::uint32_satsub(m_fileIndex, 1); + } + else if (0 == bx::strCmp(_argv[1], "file-down") ) + { + uint32_t numFiles = bx::uint32_satsub(uint32_t(m_fileList.size() ), 1); + ++m_fileIndex; + m_fileIndex = bx::uint32_min(m_fileIndex, numFiles); + } + else if (0 == bx::strCmp(_argv[1], "help") ) + { + m_help ^= true; + } + else if (0 == bx::strCmp(_argv[1], "about") ) + { + m_about ^= true; + } + else if (0 == bx::strCmp(_argv[1], "save") ) + { + save(); + } + else if (0 == bx::strCmp(_argv[1], "info") ) + { + m_info ^= true; + } + else if (0 == bx::strCmp(_argv[1], "files") ) + { + m_files ^= true; + } + else if (0 == bx::strCmp(_argv[1], "dolly") ) + { + if (_argc >= 3) + { + float dolly; + bx::fromString(&dolly, _argv[2]); + + if (_argv[2][0] == '+' + || _argv[2][0] == '-') + { + m_camera.dolly(dolly); + m_idleTimer = 0.0f; + } + } + else + { + m_camera.distance(m_meshRadius * 2.0f); + } + } + else if (0 == bx::strCmp(_argv[1], "orbit") ) + { + if (_argc >= 4) + { + int axis = (_argv[2][0] == 'x' ? 0 : 1); + float orbit[2] = { 0.0f, 0.0f}; + bx::fromString(&orbit[axis], _argv[3]); + + m_camera.orbit(orbit[0], orbit[1]); + m_idleTimer = 0.0f; + } + else + { + m_camera.m_target.dest = m_meshCenter; + + m_camera.m_pos.dest = m_meshCenter; + m_camera.m_pos.dest.z -= m_meshRadius * 2.0f; + + m_camera.m_orbit[0] = 0.0f; + m_camera.m_orbit[1] = 0.0f; + } + } + else if (0 == bx::strCmp(_argv[1], "axes") ) + { + m_axes ^= true; + } + } + + return 0; + } + + static bool sortNameAscending(const std::string& _lhs, const std::string& _rhs) + { + return 0 > bx::strCmpV(_lhs.c_str(), _rhs.c_str() ); + } + + void updateFileList(const bx::FilePath& _filePath) + { + bx::DirectoryReader dr; + + if (bx::open(&dr, _filePath) ) + { + m_path = _filePath; + } + else if (bx::open(&dr, _filePath.getPath()) ) + { + m_path = _filePath.getPath(); + } + else + { + DBG("File path `%s` not found.", _filePath.getCPtr() ); + return; + } + + bx::Error err; + + m_fileList.clear(); + + while (err.isOk() ) + { + bx::FileInfo fi; + bx::read(&dr, fi, &err); + + if (err.isOk() + && bx::FileType::File == fi.type) + { + bx::StringView ext = fi.filePath.getExt(); + + if (!ext.isEmpty() ) + { + ext.set(ext.getPtr()+1, ext.getTerm() ); + + bool supported = false; + for (uint32_t ii = 0; ii < BX_COUNTOF(s_supportedExt); ++ii) + { + const bx::StringView supportedExt(s_supportedExt[ii]); + + if (0 == bx::strCmpI(bx::max(ext.getPtr(), ext.getTerm() - supportedExt.getLength() ), supportedExt) ) + { + supported = true; + break; + } + } + + if (supported) + { + const bx::StringView fileName = fi.filePath.getFileName(); + m_fileList.push_back(std::string(fileName.getPtr(), fileName.getTerm() ) ); + } + } + } + } + + bx::close(&dr); + + std::sort(m_fileList.begin(), m_fileList.end(), sortNameAscending); + + m_fileIndex = 0; + uint32_t idx = 0; + + const bx::StringView fileName = _filePath.getFileName(); + + for (FileList::const_iterator it = m_fileList.begin(); it != m_fileList.end(); ++it, ++idx) + { + if (0 == bx::strCmpI(it->c_str(), fileName) ) + { + // If it is case-insensitive match then might be correct one, but keep + // searching. + m_fileIndex = idx; + + if (0 == bx::strCmp(it->c_str(), fileName) ) + { + // If it is exact match we're done. + break; + } + } + } + } + + void load() + { + bx::FilePath filePath(bx::Dir::Home); + filePath.join(".config/bgfx/geometryv.ini"); + + bx::Settings settings(entry::getAllocator() ); + + bx::FileReader reader; + if (bx::open(&reader, filePath) ) + { + bx::read(&reader, settings, bx::ErrorAssert{}); + bx::close(&reader); + + if (!bx::fromString(&m_width, settings.get("view/width") ) ) + { + m_width = 1280; + } + + if (!bx::fromString(&m_height, settings.get("view/height") ) ) + { + m_height = 720; + } + } + } + + void save() + { + bx::FilePath filePath(bx::Dir::Home); + filePath.join(".config/bgfx/geometryv.ini"); + + if (bx::makeAll(filePath.getPath() ) ) + { + bx::Settings settings(entry::getAllocator() ); + + char tmp[256]; + + bx::toString(tmp, sizeof(tmp), m_width); + settings.set("view/width", tmp); + + bx::toString(tmp, sizeof(tmp), m_height); + settings.set("view/height", tmp); + + bx::FileWriter writer; + if (bx::open(&writer, filePath) ) + { + bx::write(&writer, settings, bx::ErrorAssert{}); + bx::close(&writer); + } + } + } + + bx::FilePath m_path; + + typedef stl::vector<std::string> FileList; + FileList m_fileList; + + uint32_t m_fileIndex; + uint32_t m_width; + uint32_t m_height; + bool m_help; + bool m_about; + bool m_info; + bool m_files; + bool m_axes; + + Camera m_camera; + Mouse m_mouse; + bx::Vec3 m_meshCenter; + float m_meshRadius; + float m_idleTimer; + +}; + +int cmdView(CmdContext* /*_context*/, void* _userData, int _argc, char const* const* _argv) +{ + View* view = static_cast<View*>(_userData); + return view->cmd(_argc, _argv); +} + +template<bx::LerpFn lerpT, bx::EaseFn easeT> +struct InterpolatorT +{ + float from; + float to; + float duration; + int64_t offset; + + InterpolatorT(float _value) + { + reset(_value); + } + + void reset(float _value) + { + from = _value; + to = _value; + duration = 0.0; + offset = bx::getHPCounter(); + } + + void set(float _value, float _duration) + { + if (_value != to) + { + from = getValue(); + to = _value; + duration = _duration; + offset = bx::getHPCounter(); + } + } + + float getValue() + { + if (isActive() ) + { + const double freq = double(bx::getHPFrequency() ); + int64_t now = bx::getHPCounter(); + float time = (float)(double(now - offset) / freq); + float lerp = bx::clamp(time, 0.0f, duration) / duration; + return lerpT(from, to, easeT(lerp) ); + } + + return to; + } + + bool isActive() const + { + const double freq = double(bx::getHPFrequency() ); + int64_t now = bx::getHPCounter(); + float time = (float)(double(now - offset) / freq); + float lerp = bx::clamp(time, 0.0f, duration) / duration; + return lerp < 1.0f; + } +}; + +typedef InterpolatorT<bx::lerp, bx::easeInOutQuad> Interpolator; + +void keyBindingHelp(const char* _bindings, const char* _description) +{ + ImGui::TextColored(ImVec4(1.0f, 1.0f, 0.0f, 1.0f), "%s", _bindings); + ImGui::SameLine(140); + ImGui::Text("%s", _description); +} + +void help(const char* _error = NULL) +{ + if (NULL != _error) + { + bx::printf("Error:\n%s\n\n", _error); + } + + bx::printf( + "geometryv, bgfx geometry viewer tool, version %d.%d.%d.\n" + "Copyright 2019-2019 Attila Kocsis. All rights reserved.\n" + "License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE\n\n" + , BGFX_GEOMETRYV_VERSION_MAJOR + , BGFX_GEOMETRYV_VERSION_MINOR + , BGFX_API_VERSION + ); + + bx::printf( + "Usage: geometryv <file path>\n" + "\n" + "Supported input file types:\n" + ); + + for (uint32_t ii = 0; ii < BX_COUNTOF(s_supportedExt); ++ii) + { + bx::printf(" *.%s\n", s_supportedExt[ii]); + } + + bx::printf( + "\n" + "Options:\n" + " -h, --help Help.\n" + " -v, --version Version information only.\n" + "\n" + "For additional information, see https://github.com/bkaradzic/bgfx\n" + ); +} + +int _main_(int _argc, char** _argv) +{ + bx::CommandLine cmdLine(_argc, _argv); + + if (cmdLine.hasArg('v', "version") ) + { + bx::printf( + "geometryv, bgfx geometry viewer tool, version %d.%d.%d.\n" + , BGFX_GEOMETRYV_VERSION_MAJOR + , BGFX_GEOMETRYV_VERSION_MINOR + , BGFX_API_VERSION + ); + return bx::kExitSuccess; + } + + if (cmdLine.hasArg('h', "help") ) + { + help(); + return bx::kExitFailure; + } + + uint32_t debug = BGFX_DEBUG_TEXT; + + inputAddBindings(s_bindingName[Binding::App], s_binding[Binding::App]); + inputAddBindings(s_bindingName[Binding::View], s_binding[Binding::View]); + + View view; + cmdAdd("view", cmdView, &view); + + entry::setWindowFlags(entry::kDefaultWindowHandle, ENTRY_WINDOW_FLAG_ASPECT_RATIO, false); + entry::setWindowSize(entry::kDefaultWindowHandle, view.m_width, view.m_height); + + bgfx::Init init; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.resolution.width = view.m_width; + init.resolution.width = view.m_height; + init.resolution.reset = 0 + | BGFX_RESET_VSYNC + | BGFX_RESET_MSAA_X16 + ; + + bgfx::init(init); + + // Set view 0 clear state. + bgfx::setViewClear(SCENE_VIEW_ID + , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH + , 0x000000ff + , 1.0f + , 0 + ); + + imguiCreate(); + + ddInit(); + + const bgfx::Caps* caps = bgfx::getCaps(); + bgfx::RendererType::Enum type = caps->rendererType; + + bgfx::ShaderHandle vsMesh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_mesh"); + bgfx::ShaderHandle fsMesh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_mesh"); + + bgfx::ProgramHandle meshProgram = bgfx::createProgram( + vsMesh + , fsMesh + , true + ); + + float speed = 0.37f; + float time = 0.0f; + + Interpolator menuFade(5.0f); + + auto anyActive = [&]() -> bool + { + return false + || ImGui::MouseOverArea() + || menuFade.isActive() + ; + }; + + const char* filePath = _argc < 2 ? "" : _argv[1]; + + std::string path = filePath; + { + bx::FilePath fp(filePath); + view.updateFileList(fp); + } + + int exitcode = bx::kExitSuccess; + Mesh* mesh = NULL; + + { + uint32_t fileIndex = 0; + + entry::WindowState windowState; + while (!entry::processWindowEvents(windowState, debug, init.resolution.reset) ) + { + const entry::MouseState& mouseState = windowState.m_mouse; + view.m_width = windowState.m_width; + view.m_height = windowState.m_height; + + if (!windowState.m_dropFile.isEmpty() ) + { + view.updateFileList(windowState.m_dropFile); + windowState.m_dropFile.clear(); + } + + imguiBeginFrame(mouseState.m_mx + , mouseState.m_my + , (mouseState.m_buttons[entry::MouseButton::Left ] ? IMGUI_MBUT_LEFT : 0) + | (mouseState.m_buttons[entry::MouseButton::Right ] ? IMGUI_MBUT_RIGHT : 0) + | (mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , mouseState.m_mz + , uint16_t(view.m_width) + , uint16_t(view.m_height) + ); + + bool modalWindow = view.m_help || view.m_about; + bool overArea = false + || ImGui::GetMousePos().y <= ImGui::GetTextLineHeightWithSpacing() + || ImGui::MouseOverArea() + ; + overArea &= !modalWindow; + + if (overArea) + { + menuFade.set(5.0f, 0.25f); + } + else if (modalWindow) + { + menuFade.reset(0.0f); + } + else + { + menuFade.set(0.0f, 2.0f); + } + + ImGui::PushStyleVar(ImGuiStyleVar_Alpha, bx::clamp(menuFade.getValue(), 0.0f, 1.0f) ); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 0.0f); + + if (ImGui::BeginMainMenuBar() ) + { + if (ImGui::BeginMenu("File")) + { + if (ImGui::MenuItem("Open File") ) + { + bx::FilePath tmp = view.m_path; + if (openFileSelectionDialog( + tmp + , FileSelectionDialogType::Open + , "geometryv: Open File" + , s_filter + ) ) + { + view.updateFileList(tmp); + } + } + + if (ImGui::MenuItem("Show File List", NULL, view.m_files) ) + { + cmdExec("view files"); + } + + ImGui::Separator(); + if (ImGui::MenuItem("Exit") ) + { + cmdExec("exit"); + } + + ImGui::EndMenu(); + } + + if (ImGui::BeginMenu("View") ) + { + if (ImGui::MenuItem("Info", NULL, view.m_info) ) + { + cmdExec("view info"); + } + + if (ImGui::MenuItem("Reset") ) + { + cmdExec(s_resetCmd); + } + + ImGui::Separator(); + + bool axes = view.m_axes; + if (ImGui::MenuItem("XYZ Axes", NULL, &axes) ) + { + cmdExec("view axes"); + } + + ImGui::Separator(); + + if (ImGui::MenuItem("Save Options") ) + { + cmdExec("view save"); + } + + ImGui::EndMenu(); + } + + if (ImGui::BeginMenu("Help") ) + { + if (ImGui::MenuItem("View Help") ) + { + cmdExec("view help"); + } + + ImGui::Separator(); + if (ImGui::MenuItem("About") ) + { + cmdExec("view about"); + } + + ImGui::EndMenu(); + } + + if (0 != view.m_fileList.size() ) + { + ImGui::Separator(); + ImGui::TextColored( + ImVec4(0.0f, 1.0f, 1.0f, 1.0f) + , "%s" + , view.m_fileList[view.m_fileIndex].c_str() + ); + } + + ImGui::EndMainMenuBar(); + } + + ImGui::PopStyleVar(2); + + static bool help = false; + static bool about = false; + + view.m_mouse.update(float(mouseState.m_mx), float(mouseState.m_my), mouseState.m_mz, view.m_width, view.m_height); + if (!overArea) + { + if (mouseState.m_buttons[entry::MouseButton::Left]) + { + view.m_idleTimer = 0.0f; + view.m_camera.orbit(view.m_mouse.m_dx, view.m_mouse.m_dy); + } + else if (mouseState.m_buttons[entry::MouseButton::Right]) + { + view.m_idleTimer = 0.0f; + view.m_camera.dolly(view.m_mouse.m_dx + view.m_mouse.m_dy); + } + else if (0 != view.m_mouse.m_scroll) + { + view.m_idleTimer = 0.0f; + view.m_camera.dolly(float(view.m_mouse.m_scroll)*0.1f); + } + } + + if (help != view.m_help) + { + if (!help) + { + ImGui::OpenPopup("Help"); + inputRemoveBindings(s_bindingName[Binding::View]); + inputAddBindings(s_bindingName[Binding::Help], s_binding[Binding::Help]); + } + else + { + inputRemoveBindings(s_bindingName[Binding::Help]); + inputAddBindings(s_bindingName[Binding::View], s_binding[Binding::View]); + } + + help = view.m_help; + } + + if (about != view.m_about) + { + if (!about) + { + ImGui::OpenPopup("About"); + inputRemoveBindings(s_bindingName[Binding::View]); + inputAddBindings(s_bindingName[Binding::About], s_binding[Binding::About]); + } + else + { + inputRemoveBindings(s_bindingName[Binding::About]); + inputAddBindings(s_bindingName[Binding::View], s_binding[Binding::View]); + } + + about = view.m_about; + } + + if (view.m_info) + { + ImGui::SetNextWindowSize( + ImVec2(450.0f, 320.0f) + , ImGuiCond_FirstUseEver + ); + + if (ImGui::Begin("Info", &view.m_info) ) + { + if (ImGui::BeginChild("##info", ImVec2(0.0f, 0.0f) ) ) + { + if (NULL == mesh) + { + ImGui::Text("Geometry is not loaded."); + } + else + { + char layout[128] = {0}; + for(int32_t attrib = bgfx::Attrib::Position; attrib < bgfx::Attrib::Count; attrib++) + { + if ( mesh->m_layout.has(bgfx::Attrib::Enum(attrib)) ) + bx::strCat(layout, sizeof(layout), s_attribShortNames[attrib]); + } + + ImGui::Text("Name: %s %s", view.m_fileList[view.m_fileIndex].c_str(), layout); + + ImGui::Indent(); + for (GroupArray::const_iterator itGroup = mesh->m_groups.begin(), itGroupEnd = mesh->m_groups.end() + ; itGroup != itGroupEnd + ; ++itGroup + ) + { + ImGui::Text("Group v %d i %d c %.2f %.2f %.2f r %.2f" + , itGroup->m_numVertices + , itGroup->m_numIndices + , itGroup->m_sphere.center.x + , itGroup->m_sphere.center.y + , itGroup->m_sphere.center.z + , itGroup->m_sphere.radius + ); + + ImGui::Indent(); + + for (PrimitiveArray::const_iterator itPrim = itGroup->m_prims.begin(), itPrimEnd = itGroup->m_prims.end() + ; itPrim != itPrimEnd + ; ++itPrim + ) + { + ImGui::Text("Primitive v %d i %d c %.2f %.2f %.2f r %.2f" + , itPrim->m_numVertices + , itPrim->m_numIndices + , itPrim->m_sphere.center.x + , itPrim->m_sphere.center.y + , itPrim->m_sphere.center.z + , itPrim->m_sphere.radius + ); + } + + ImGui::Unindent(); + } + + ImGui::Unindent(); + + ImGui::Separator(); + } + + ImGui::EndChild(); + } + + } + + ImGui::End(); + } + + if (view.m_files) + { + char temp[bx::kMaxFilePath]; + bx::snprintf(temp, BX_COUNTOF(temp), "%s##File", view.m_path.getCPtr() ); + + ImGui::SetNextWindowSize( + ImVec2(400.0f, 400.0f) + , ImGuiCond_FirstUseEver + ); + + if (ImGui::Begin(temp, &view.m_files) ) + { + if (ImGui::BeginChild("##file_list", ImVec2(0.0f, 0.0f) ) ) + { + ImGui::PushFont(ImGui::Font::Mono); + const float itemHeight = ImGui::GetTextLineHeightWithSpacing(); + const float listHeight = + bx::max(1.0f, bx::floor(ImGui::GetWindowHeight()/itemHeight) ) + * itemHeight + ; + + ImGui::PushItemWidth(-1); + if (ImGui::BeginListBox("##empty", ImVec2(0.0f, listHeight) ) ) + { + const int32_t itemCount = int32_t(view.m_fileList.size() ); + + ImGuiListClipper clipper; + clipper.Begin(itemCount, itemHeight); + + int32_t start = clipper.DisplayStart; + int32_t end = clipper.DisplayEnd; + + const int32_t index = int32_t(view.m_fileIndex); + if (index <= start) + { + ImGui::SetScrollY(ImGui::GetScrollY() - (start-index+1)*itemHeight); + } + else if (index >= end) + { + ImGui::SetScrollY(ImGui::GetScrollY() + (index-end+1)*itemHeight); + } + + while (clipper.Step() ) + { + for (int32_t pos = clipper.DisplayStart; pos < clipper.DisplayEnd; ++pos) + { + ImGui::PushID(pos); + + bool isSelected = uint32_t(pos) == view.m_fileIndex; + if (ImGui::Selectable(view.m_fileList[pos].c_str(), &isSelected) ) + { + view.m_fileIndex = pos; + } + + ImGui::PopID(); + } + } + + clipper.End(); + + ImGui::EndListBox(); + } + + ImGui::PopFont(); + ImGui::EndChild(); + } + } + + ImGui::End(); + } + + if (ImGui::BeginPopupModal("About", &view.m_about, ImGuiWindowFlags_AlwaysAutoResize) ) + { + ImGui::SetWindowFontScale(1.0f); + + ImGui::Text( + "geometryv, bgfx geometry viewer tool " ICON_KI_WRENCH ", version %d.%d.%d.\n" + "Copyright 2019-2019 Attila Kocsis. All rights reserved.\n" + "License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE\n" + , BGFX_GEOMETRYV_VERSION_MAJOR + , BGFX_GEOMETRYV_VERSION_MINOR + , BGFX_API_VERSION + ); + + ImGui::Dummy(ImVec2(0.0f, 0.0f) ); + ImGui::SameLine(ImGui::GetWindowWidth() - 136.0f); + if (ImGui::Button("Close", ImVec2(128.0f, 0.0f) ) + || !view.m_about) + { + view.m_about = false; + ImGui::CloseCurrentPopup(); + } + + ImGui::EndPopup(); + } + + if (ImGui::BeginPopupModal("Help", &view.m_help, ImGuiWindowFlags_AlwaysAutoResize) ) + { + ImGui::SetWindowFontScale(1.0f); + + ImGui::Text("Key bindings:\n\n"); + + ImGui::PushFont(ImGui::Font::Mono); + keyBindingHelp("ESC", "Exit."); + keyBindingHelp("h", "Toggle help screen."); + keyBindingHelp("i", "Toggle info screen."); + keyBindingHelp("f", "Toggle full-screen."); + ImGui::NextLine(); + + keyBindingHelp("LMB+drag", "Orbit."); + keyBindingHelp("W/A/S/D", "Orbit."); + keyBindingHelp("RMB+drag or MW", "Dolly."); + keyBindingHelp("=/-", "Dolly."); + keyBindingHelp("0", "Reset."); + keyBindingHelp("1", "Fit to window."); + ImGui::NextLine(); + + keyBindingHelp("up", "Previous geometry."); + keyBindingHelp("down", "Next geometry."); + ImGui::NextLine(); + + ImGui::NextLine(); + + ImGui::PopFont(); + + ImGui::Dummy(ImVec2(0.0f, 0.0f) ); + ImGui::SameLine(ImGui::GetWindowWidth() - 136.0f); + if (ImGui::Button("Close", ImVec2(128.0f, 0.0f) ) + || !view.m_help) + { + view.m_help = false; + ImGui::CloseCurrentPopup(); + } + + ImGui::EndPopup(); + } + + imguiEndFrame(); + + if ( (NULL == mesh || view.m_fileIndex != fileIndex) + && 0 != view.m_fileList.size() ) + { + if (NULL != mesh ) + { + meshUnload(mesh); + } + + fileIndex = view.m_fileIndex; + + bx::FilePath fp = view.m_path; + fp.join(view.m_fileList[view.m_fileIndex].c_str() ); + + mesh = meshLoad(fp.getCPtr()); + + std::string title; + if (NULL != mesh ) + { + uint32_t numPrimitives = 0; + uint32_t numVertices = 0; + uint32_t numIndices = 0; + bx::Aabb boundingBox = {}; + + for (GroupArray::const_iterator it = mesh->m_groups.begin(), itEnd = mesh->m_groups.end(); it != itEnd; ++it) + { + if ( it == mesh->m_groups.begin()) + { + boundingBox = it->m_aabb; + } + else + { + aabbExpand(boundingBox, it->m_aabb.min); + aabbExpand(boundingBox, it->m_aabb.max); + } + + numPrimitives += (uint32_t)it->m_prims.size(); + numVertices += (uint32_t)it->m_numVertices; + numIndices += (uint32_t)it->m_numIndices; + } + + bx::stringPrintf( + title + , "%s (g %d, p %d, v %d, i %d)" + , fp.getCPtr() + , mesh->m_groups.size() + , numPrimitives + , numVertices + , numIndices + ); + + view.m_meshCenter = bx::getCenter(boundingBox); + view.m_meshRadius = bx::length(bx::getExtents(boundingBox) ); + + view.m_camera.init( view.m_meshCenter, view.m_meshRadius * 2.0f, 0.01f, view.m_meshRadius * 10.0f); + } + else + { + bx::stringPrintf(title, "Failed to load %s!", filePath); + } + + entry::setWindowTitle(entry::kDefaultWindowHandle, title.c_str() ); + } + + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency() ); + const float deltaTime = float(frameTime/freq); + + time += (float)(frameTime*speed/freq); + + // Update camera. + float viewMatrix[16]; + view.m_camera.update(deltaTime); + view.m_camera.mtxLookAt(viewMatrix); + + float projMatrix[16]; + const float aspect = float(view.m_width)/float(view.m_height); + bx::mtxProj(projMatrix, 60.0f, aspect, 0.01f, 1000.0f, caps->homogeneousDepth); + + bgfx::setViewTransform(SCENE_VIEW_ID, viewMatrix, projMatrix); + bgfx::setViewRect(SCENE_VIEW_ID, 0, 0, uint16_t(view.m_width), uint16_t(view.m_height) ); + + bgfx::touch(SCENE_VIEW_ID); + + if ( view.m_axes ) + { + DebugDrawEncoder dde; + dde.begin(SCENE_VIEW_ID); + dde.drawAxis(0.0f, 0.0f, 0.0f); + dde.drawGrid(Axis::Y, {0.0f, 0.0f, 0.0f}); + dde.end(); + } + + bgfx::dbgTextClear(); + + float orientation[16]; + bx::mtxIdentity(orientation); + bgfx::setTransform(orientation); + + float mtx[16]; + bx::mtxIdentity(mtx); + + if (NULL != mesh) + { + meshSubmit(mesh + , SCENE_VIEW_ID + , meshProgram + , mtx); + } + + bgfx::frame(); + + // Slow down when nothing is animating... + if (view.m_idleTimer > 2.0f + && !anyActive() ) + { + bx::sleep(100); + } + + view.m_idleTimer += deltaTime; + } + } + + if (NULL != mesh ) + { + meshUnload(mesh); + } + + bgfx::destroy(meshProgram); + + ddShutdown(); + + imguiDestroy(); + + bgfx::shutdown(); + + return exitcode; +} diff --git a/3rdparty/bgfx/tools/geometryv/makefile b/3rdparty/bgfx/tools/geometryv/makefile new file mode 100644 index 00000000000..d1033a73cbb --- /dev/null +++ b/3rdparty/bgfx/tools/geometryv/makefile @@ -0,0 +1,6 @@ +# +# Copyright 2019-2019 Attila Kocsis. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +include ../../scripts/shader-embeded.mk diff --git a/3rdparty/bgfx/tools/geometryv/varying.def.sc b/3rdparty/bgfx/tools/geometryv/varying.def.sc new file mode 100644 index 00000000000..4282621c47f --- /dev/null +++ b/3rdparty/bgfx/tools/geometryv/varying.def.sc @@ -0,0 +1,4 @@ +vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); + +vec3 a_position : POSITION; +vec3 a_normal : NORMAL; diff --git a/3rdparty/bgfx/tools/geometryv/vs_mesh.bin.h b/3rdparty/bgfx/tools/geometryv/vs_mesh.bin.h new file mode 100644 index 00000000000..269edf1f2d7 --- /dev/null +++ b/3rdparty/bgfx/tools/geometryv/vs_mesh.bin.h @@ -0,0 +1,298 @@ +static const uint8_t vs_mesh_glsl[446] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xc2, 0x5c, 0x65, 0x02, 0x00, 0x07, 0x75, // VSH........e...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. .. ..... + 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // .u_modelViewProj + 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x61, 0x74, // ..............at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x6e, // tribute vec3 a_n + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // ormal;.attribute + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // vec3 a_position + 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ;.varying vec3 v + 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // _normal;.uniform + 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, // mat4 u_model[32 + 0x5d, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // ];.uniform mat4 + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; + 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec4 tmpvar_1; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_1.w = + 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // 1.0;. tmpvar_1. + 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // xyz = a_position + 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // ;. gl_Position + 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, // = (u_modelViewPr + 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, // oj * tmpvar_1);. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, // vec4 tmpvar_2; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_2.w = + 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, // 0.0;. tmpvar_2. + 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, // xyz = ((a_normal + 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // * 2.0) - 1.0);. + 0x20, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, // v_normal = (u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // model[0] * tmpva + 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // r_2).xyz;.}... +}; +static const uint8_t vs_mesh_essl[482] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xc2, 0x5c, 0x65, 0x02, 0x00, 0x07, 0x75, // VSH........e...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. .. ..... + 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // .u_modelViewProj + 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, 0x61, 0x74, // ..............at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // tribute highp ve + 0x63, 0x33, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x61, 0x74, 0x74, // c3 a_normal;.att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec + 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, // 3 a_position;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // rying highp vec3 + 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // v_normal;.unifo + 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, // rm mat4 u_model[ + 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, // 32];.uniform hig + 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // hp mat4 u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // iewProj;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // in ().{. highp + 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 tmpvar_1;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, // tmpvar_1.w = 1. + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // 0;. tmpvar_1.xy + 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // z = a_position;. + 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, // gl_Position = + 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // (u_modelViewProj + 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, // * tmpvar_1);. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, // r_2;. tmpvar_2. + 0x77, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // w = 0.0;. tmpva + 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x61, 0x5f, 0x6e, 0x6f, // r_2.xyz = ((a_no + 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, // rmal * 2.0) - 1. + 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, // 0);. v_normal = + 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, // (u_model[0] * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x7d, 0x0a, // mpvar_2).xyz;.}. + 0x0a, 0x00, // .. +}; +static const uint8_t vs_mesh_spv[1514] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xc2, 0x5c, 0x65, 0x02, 0x00, 0x0f, 0x75, // VSH........e...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // .........u_model + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x05, 0x00, 0x00, 0x03, 0x02, // ................ + 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, // #............... + 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. + 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x50, 0x00, // ..@...C...L...P. + 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, // ................ + 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ......main...... + 0x06, 0x00, 0x22, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, // .."...UniformBlo + 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ck........"..... + 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x22, 0x00, // ..u_model.....". + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // ......u_modelVie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // wProj.....$..... + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, // ......@...a_norm + 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x61, 0x5f, // al........C...a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x4c, 0x00, // position......L. + 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // ..@entryPointOut + 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, // put.gl_Position. + 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x50, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, // ......P...@entry + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x6e, 0x6f, // PointOutput.v_no + 0x72, 0x6d, 0x61, 0x6c, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, // rmal..G...!..... + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..@...H..."..... + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ......H..."..... + 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x22, 0x00, // ..#.......H...". + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, // ..............H. + 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, // .."...........H. + 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, // ..".......#..... + 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, // ..H..."......... + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, // ......G..."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...$..."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...$...!..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...@......... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G...C......... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...L......... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...P......... + 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, // ..........!..... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, // .......... ..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, // ..+............. + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+............. + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+............. + 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, // .?+............. + 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // .......... ..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, // ..+....... ... . + 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, // ......!....... . + 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......"...!..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x22, 0x00, // .. ...#.......". + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, // ..;...#...$..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, // .. ...%......... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+.......-..... + 0x00, 0x40, 0x20, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, // .@ ...?......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...?...@..... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...?...C..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, // .. ...K......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...K...L..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, // .. ...O......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...O...P..... + 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x15, 0x00, // ..,............. + 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, // ..........6..... + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, // ................ + 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x41, 0x00, // ......=.......A. + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x44, 0x00, // ..@...=.......D. + 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x65, 0x00, // ..C...Q.......e. + 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ..D.......Q..... + 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ..f...D.......Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, // ......g...D..... + 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x09, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x65, 0x00, // ..P.......h...e. + 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x41, 0x00, // ..f...g.......A. + 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x13, 0x00, // ..%...i...$..... + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, // ..=.......j...i. + 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x68, 0x00, // ..........k...h. + 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6e, 0x00, // ..j...........n. + 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, // ..A...-......... + 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x51, 0x00, // ..p...n.......Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, // ......r...p..... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x70, 0x00, // ..Q.......s...p. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x74, 0x00, // ......Q.......t. + 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x09, 0x00, // ..p.......P..... + 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x74, 0x00, // ..u...r...s...t. + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x76, 0x00, // ......A...%...v. + 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..$...........=. + 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x90, 0x00, // ......w...v..... + 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x77, 0x00, // ......x...u...w. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x78, 0x00, // ..O.......y...x. + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ..x............. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..>...L...k...>. + 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, // ..P...y.......8. + 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x00, 0x40, 0x08, // ........@. +}; +static const uint8_t vs_mesh_dx9[471] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xc2, 0x5c, 0x65, 0x02, 0x00, 0x07, 0x75, // VSH........e...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. ........ + 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // .u_modelViewProj + 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x00, 0x03, // ................ + 0xfe, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, // ....,.CTAB...... + 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, // ................ + 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, // ..|...D......... + 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, // ..L............. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ......l.......u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, // model......... . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // ......u_modelVie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, // wProj........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, // ......vs_3_0.Mic + 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, // rosoft (R) HLSL + 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, // Shader Compiler + 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x07, 0x00, 0x0f, 0xa0, 0x00, 0x00, // 10.1..Q......... + 0x00, 0x40, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, // .@.............. + 0x00, 0x02, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ + 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x07, 0xe0, 0x05, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, // ............U... + 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, // ................ + 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x01, 0x00, // ................ + 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, // ................ + 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, // ................ + 0xe4, 0x90, 0x07, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, // ........U....... + 0x07, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ....U........... + 0x0b, 0x80, 0x04, 0x00, 0xa4, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xa4, 0x80, 0x04, 0x00, // ................ + 0x00, 0x04, 0x01, 0x00, 0x07, 0xe0, 0x06, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, // ................ + 0xf4, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... +}; +static const uint8_t vs_mesh_dx11[690] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xc2, 0x5c, 0x65, 0x02, 0x00, 0x07, 0x75, // VSH........e...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. ........ + 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // .u_modelViewProj + 0x04, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x44, 0x58, // ..........l...DX + 0x42, 0x43, 0xb4, 0x48, 0x12, 0xfe, 0xc5, 0x93, 0x9f, 0x35, 0x29, 0x47, 0xbd, 0x09, 0x87, 0xcd, // BC.H.....5)G.... + 0x71, 0xa2, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, // q.....l.......,. + 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x48, 0x00, // ..|.......ISGNH. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........8..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // ................ + 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ..?............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, // ..........NORMAL + 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x4c, 0x00, // .POSITION.OSGNL. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........8..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ + 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ..D............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, // ..........SV_POS + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x00, 0xab, 0x53, 0x48, // ITION.NORMAL..SH + 0x44, 0x52, 0x94, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x65, 0x00, 0x00, 0x00, 0x59, 0x00, // DR....@...e...Y. + 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x5f, 0x00, // ..F. ........._. + 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, // ..r......._...r. + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // ......g.... .... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, // ......e...r .... + 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, // ..h.......8..... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, // ......V.......F. + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, // .........2..... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, // ......F. ....... + 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, // ..........F..... + 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ..2...........F. + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, // ............... + 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, // ..F............ + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ......F.......F. + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, // .........2...r. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, // ......F........@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, // .....@...@...@.. + 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, // ...@............ + 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, // ......8...r..... + 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, // ..V.......F. ... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xb2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2......... + 0x00, 0x00, 0x46, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, // ..F. ........... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x08, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, // ......F.......2. + 0x00, 0x0a, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, // ..r ......F. ... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x03, // ..............F. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x00, 0x01, 0x00, // ......>......... + 0x40, 0x08, // @. +}; +static const uint8_t vs_mesh_mtl[790] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xc2, 0x5c, 0x65, 0x02, 0x00, 0x0f, 0x75, // VSH........e...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // .........u_model + 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x23, 0x69, // ..............#i + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, // nclude <metal_st + 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, // dlib>.#include < + 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, // simd/simd.h>..us + 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me + 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, // tal;..struct _Gl + 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // obal.{. float + 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, // 4x4 u_model[32]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, // . float4x4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, // modelViewProj;.} + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // ;..struct xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // lMain_out.{. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, // float3 _entryPoi + 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, // ntOutput_v_norma + 0x6c, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, // l [[user(locn0)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, // ];. float4 gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, // _Position [[posi + 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, // tion]];.};..stru + 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // ct xlatMtlMain_i + 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, // n.{. float3 a + 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // _normal [[attrib + 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // ute(0)]];. fl + 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // oat3 a_position + 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, // [[attribute(1)]] + 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, // ;.};..vertex xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, // tMtlMain_out xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // tMtlMain(xlatMtl + 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, // Main_in in [[sta + 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // ge_in]], constan + 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // t _Global& _mtl_ + 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, // u [[buffer(0)]]) + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // .{. xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, // in_out out = {}; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, // . out.gl_Posi + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, // tion = _mtl_u.u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, // modelViewProj * + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // float4(in.a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // tion, 1.0);. + 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // out._entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, // utput_v_normal = + 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // (_mtl_u.u_model + 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x28, 0x69, 0x6e, // [0] * float4((in + 0x2e, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, // .a_normal * 2.0) + 0x20, 0x2d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, // - float3(1.0), + 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, // 0.0)).xyz;. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x02, // eturn out;.}.... + 0x02, 0x00, 0x01, 0x00, 0x80, 0x00, // ...... +}; +extern const uint8_t* vs_mesh_pssl; +extern const uint32_t vs_mesh_pssl_size; diff --git a/3rdparty/bgfx/tools/geometryv/vs_mesh.sc b/3rdparty/bgfx/tools/geometryv/vs_mesh.sc new file mode 100644 index 00000000000..dba9b532129 --- /dev/null +++ b/3rdparty/bgfx/tools/geometryv/vs_mesh.sc @@ -0,0 +1,17 @@ +$input a_position, a_normal +$output v_normal + +/* + * Copyright 2019-2019 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include <bgfx_shader.sh> + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) ); + + vec3 normal = a_normal.xyz*2.0 - 1.0; + v_normal = mul(u_model[0], vec4(normal, 0.0) ).xyz; +} diff --git a/3rdparty/bgfx/tools/shaderc/shaderc.cpp b/3rdparty/bgfx/tools/shaderc/shaderc.cpp index bc92f90570d..a8c284c14af 100644 --- a/3rdparty/bgfx/tools/shaderc/shaderc.cpp +++ b/3rdparty/bgfx/tools/shaderc/shaderc.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "shaderc.h" @@ -13,18 +13,114 @@ extern "C" #include <fpp.h> } // extern "C" -#define BGFX_SHADER_BIN_VERSION 6 +#define BGFX_SHADER_BIN_VERSION 11 #define BGFX_CHUNK_MAGIC_CSH BX_MAKEFOURCC('C', 'S', 'H', BGFX_SHADER_BIN_VERSION) #define BGFX_CHUNK_MAGIC_FSH BX_MAKEFOURCC('F', 'S', 'H', BGFX_SHADER_BIN_VERSION) #define BGFX_CHUNK_MAGIC_VSH BX_MAKEFOURCC('V', 'S', 'H', BGFX_SHADER_BIN_VERSION) #define BGFX_SHADERC_VERSION_MAJOR 1 -#define BGFX_SHADERC_VERSION_MINOR 16 +#define BGFX_SHADERC_VERSION_MINOR 18 namespace bgfx { bool g_verbose = false; + struct ShadingLang + { + enum Enum + { + ESSL, + GLSL, + HLSL, + Metal, + PSSL, + SpirV, + + Count + }; + }; + + static const char* s_shadingLangName[] = + { + "OpenGL ES Shading Language / WebGL (ESSL)", + "OpenGL Shading Language (GLSL)", + "High-Level Shading Language (HLSL)", + "Metal Shading Language (MSL)", + "PlayStation Shader Language (PSSL)", + "Standard Portable Intermediate Representation - V (SPIR-V)", + + "Unknown?!" + }; + BX_STATIC_ASSERT(BX_COUNTOF(s_shadingLangName) == ShadingLang::Count+1, "ShadingLang::Enum and s_shadingLangName mismatch"); + + const char* getName(ShadingLang::Enum _lang) + { + return s_shadingLangName[_lang]; + } + + // c - compute + // d - domain + // f - fragment + // g - geometry + // h - hull + // v - vertex + // + // OpenGL #version Features Direct3D Features Shader Model + // 2.1 120 vf 9.0 vf 2.0 + // 3.0 130 + // 3.1 140 + // 3.2 150 vgf + // 3.3 330 10.0 vgf 4.0 + // 4.0 400 vhdgf + // 4.1 410 + // 4.2 420 11.0 vhdgf+c 5.0 + // 4.3 430 vhdgf+c + // 4.4 440 + // + // SPIR-V profile naming convention: + // spirv<SPIR-V version>-<Vulkan version> + // + // SPIR-V version | Vulkan version | shaderc encoding + // 1.0 | 1.0 | 1010 + // 1.3 | 1.1 | 1311 + // 1.4 | 1.1 | 1411 + // 1.5 | 1.2 | 1512 + + struct Profile + { + ShadingLang::Enum lang; + uint32_t id; + const char* name; + }; + + static const Profile s_profiles[] = + { + { ShadingLang::ESSL, 100, "100_es" }, + { ShadingLang::ESSL, 300, "300_es" }, + { ShadingLang::ESSL, 310, "310_es" }, + { ShadingLang::ESSL, 320, "320_es" }, + { ShadingLang::HLSL, 300, "s_3_0" }, + { ShadingLang::HLSL, 400, "s_4_0" }, + { ShadingLang::HLSL, 500, "s_5_0" }, + { ShadingLang::Metal, 1000, "metal" }, + { ShadingLang::PSSL, 1000, "pssl" }, + { ShadingLang::SpirV, 1311, "spirv13-11" }, + { ShadingLang::SpirV, 1411, "spirv14-11" }, + { ShadingLang::SpirV, 1512, "spirv15-12" }, + { ShadingLang::SpirV, 1010, "spirv10-10" }, + { ShadingLang::SpirV, 1010, "spirv" }, + { ShadingLang::GLSL, 120, "120" }, + { ShadingLang::GLSL, 130, "130" }, + { ShadingLang::GLSL, 140, "140" }, + { ShadingLang::GLSL, 150, "150" }, + { ShadingLang::GLSL, 330, "330" }, + { ShadingLang::GLSL, 400, "400" }, + { ShadingLang::GLSL, 410, "410" }, + { ShadingLang::GLSL, 420, "420" }, + { ShadingLang::GLSL, 430, "430" }, + { ShadingLang::GLSL, 440, "440" }, + }; + static const char* s_ARB_shader_texture_lod[] = { "texture2DLod", @@ -87,6 +183,17 @@ namespace bgfx { "gl_VertexID", "gl_InstanceID", + "texture2DLodOffset", + NULL + }; + + // To be use from vertex program require: + // https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_viewport_layer_array.txt + // DX11 11_1 feature level + static const char* s_ARB_shader_viewport_layer_array[] = + { + "gl_ViewportIndex", + "gl_Layer", NULL }; @@ -119,11 +226,13 @@ namespace bgfx "usampler3D", "isamplerCube", "usamplerCube", + "textureSize", NULL }; static const char* s_textureArray[] = { + "sampler2DArray", "texture2DArray", "texture2DArrayLod", "shadow2DArray", @@ -145,6 +254,23 @@ namespace bgfx NULL }; + static const char* s_bitsToEncoders[] = + { + "floatBitsToUint", + "floatBitsToInt", + "intBitsToFloat", + "uintBitsToFloat", + NULL + }; + + static const char* s_unsignedVecs[] = + { + "uvec2", + "uvec3", + "uvec4", + NULL + }; + const char* s_uniformTypeName[] = { "int", "int", @@ -155,7 +281,59 @@ namespace bgfx }; BX_STATIC_ASSERT(BX_COUNTOF(s_uniformTypeName) == UniformType::Count*2); + static const char* s_allowedVertexShaderInputs[] = + { + "a_position", + "a_normal", + "a_tangent", + "a_bitangent", + "a_color0", + "a_color1", + "a_color2", + "a_color3", + "a_indices", + "a_weight", + "a_texcoord0", + "a_texcoord1", + "a_texcoord2", + "a_texcoord3", + "a_texcoord4", + "a_texcoord5", + "a_texcoord6", + "a_texcoord7", + "i_data0", + "i_data1", + "i_data2", + "i_data3", + "i_data4", + NULL + }; + + void fatal(const char* _filePath, uint16_t _line, Fatal::Enum _code, const char* _format, ...) + { + BX_UNUSED(_filePath, _line, _code); + + va_list argList; + va_start(argList, _format); + + bx::vprintf(_format, argList); + + va_end(argList); + + abort(); + } + + void trace(const char* _filePath, uint16_t _line, const char* _format, ...) + { + BX_UNUSED(_filePath, _line); + + va_list argList; + va_start(argList, _format); + bx::vprintf(_format, argList); + + va_end(argList); + } Options::Options() : shaderType(' ') , disasm(false) @@ -251,7 +429,7 @@ namespace bgfx const char* getUniformTypeName(UniformType::Enum _enum) { - uint32_t idx = _enum & ~(BGFX_UNIFORM_FRAGMENTBIT|BGFX_UNIFORM_SAMPLERBIT); + uint32_t idx = _enum & ~(kUniformFragmentBit|kUniformSamplerBit); if (idx < UniformType::Count) { return s_uniformTypeName[idx]; @@ -290,7 +468,7 @@ namespace bgfx len = bx::vsnprintf(out, len, _format, argList); } - len = bx::write(_writer, out, len); + len = bx::write(_writer, out, len, bx::ErrorAssert{}); va_end(argList); @@ -385,15 +563,13 @@ namespace bgfx len = bx::vsnprintf(out, len, _format, argList); } - bx::Error err; - int32_t size = bx::FileWriter::write(out, len, &err); + int32_t size = bx::FileWriter::write(out, len, bx::ErrorAssert{}); va_end(argList); return size; } - std::string m_filePath; bx::StringView m_name; typedef std::vector<uint8_t> Buffer; Buffer m_buffer; @@ -432,7 +608,7 @@ namespace bgfx { m_size = (uint32_t)bx::getSize(&reader); m_data = new char[m_size+1]; - m_size = (uint32_t)bx::read(&reader, m_data, m_size); + m_size = (uint32_t)bx::read(&reader, m_data, m_size, bx::ErrorAssert{}); bx::close(&reader); if (m_data[0] == '\xef' @@ -482,7 +658,7 @@ namespace bgfx } replace[len] = '\0'; - BX_CHECK(len >= bx::strLen(_replace), ""); + BX_ASSERT(len >= bx::strLen(_replace), ""); for (bx::StringView ptr = bx::strFind(_str, _find) ; !ptr.isEmpty() ; ptr = bx::strFind(ptr.getPtr() + len, _find) @@ -500,38 +676,33 @@ namespace bgfx void printCode(const char* _code, int32_t _line, int32_t _start, int32_t _end, int32_t _column) { - fprintf(stderr, "Code:\n---\n"); + bx::printf("Code:\n---\n"); - bx::Error err; - LineReader reader(_code); - for (int32_t line = 1; err.isOk() && line < _end; ++line) + bx::LineReader reader(_code); + for (int32_t line = 1; !reader.isDone() && line < _end; ++line) { - char str[4096]; - int32_t len = bx::read(&reader, str, BX_COUNTOF(str), &err); + bx::StringView strLine = reader.next(); - if (err.isOk() - && line >= _start) + if (line >= _start) { - std::string strLine(str, len); - if (_line == line) { - fprintf(stderr, "\n"); - fprintf(stderr, ">>> %3d: %s", line, strLine.c_str() ); + bx::printf("\n"); + bx::printf(">>> %3d: %.*s\n", line, strLine.getLength(), strLine.getPtr() ); if (-1 != _column) { - fprintf(stderr, ">>> %3d: %*s\n", _column, _column, "^"); + bx::printf(">>> %3d: %*s\n", _column, _column, "^"); } - fprintf(stderr, "\n"); + bx::printf("\n"); } else { - fprintf(stderr, " %3d: %s", line, strLine.c_str() ); + bx::printf(" %3d: %.*s\n", line, strLine.getLength(), strLine.getPtr() ); } } } - fprintf(stderr, "---\n"); + bx::printf("---\n"); } void writeFile(const char* _filePath, const void* _data, int32_t _size) @@ -539,7 +710,7 @@ namespace bgfx bx::FileWriter out; if (bx::open(&out, _filePath) ) { - bx::write(&out, _data, _size); + bx::write(&out, _data, _size, bx::ErrorAssert{}); bx::close(&out); } } @@ -712,7 +883,7 @@ namespace bgfx static void fppError(void* /*_userData*/, char* _format, va_list _vargs) { - vfprintf(stderr, _format, _vargs); + bx::vprintf(_format, _vargs); } char* scratch(const char* _str) @@ -738,27 +909,31 @@ namespace bgfx typedef std::vector<std::string> InOut; - uint32_t parseInOut(InOut& _inout, const char* _str, const char* _eol) + uint32_t parseInOut(InOut& _inout, const bx::StringView& _str) { uint32_t hash = 0; - _str = bx::strLTrimSpace(_str).getPtr(); + bx::StringView str = bx::strLTrimSpace(_str); - if (_str < _eol) + if (!str.isEmpty() ) { - const char* delim; + bx::StringView delim; do { - delim = strpbrk(_str, " ,"); - if (NULL != delim) + delim = bx::strFind(str, ','); + if (delim.isEmpty() ) { - delim = delim > _eol ? _eol : delim; - std::string token; - token.assign(_str, delim-_str); - _inout.push_back(token); - _str = bx::strLTrimSpace(delim + 1).getPtr(); + delim = bx::strFind(str, ' '); + } + + const bx::StringView token(bx::strRTrim(bx::StringView(str.getPtr(), delim.getPtr() ), " ") ); + + if (!token.isEmpty() ) + { + _inout.push_back(std::string(token.getPtr(), token.getTerm() ) ); + str = bx::strLTrimSpace(bx::StringView(delim.getPtr() + 1, str.getTerm() ) ); } } - while (delim < _eol && _str < _eol && NULL != delim); + while (!delim.isEmpty() ); std::sort(_inout.begin(), _inout.end() ); @@ -806,51 +981,33 @@ namespace bgfx return bx::strFind(_filePath, fp.getBaseName() ); } - // c - compute - // d - domain - // f - fragment - // g - geometry - // h - hull - // v - vertex - // - // OpenGL #version Features Direct3D Features Shader Model - // 2.1 120 vf 9.0 vf 2.0 - // 3.0 130 - // 3.1 140 - // 3.2 150 vgf - // 3.3 330 10.0 vgf 4.0 - // 4.0 400 vhdgf - // 4.1 410 - // 4.2 420 11.0 vhdgf+c 5.0 - // 4.3 430 vhdgf+c - // 4.4 440 - void help(const char* _error = NULL) { if (NULL != _error) { - fprintf(stderr, "Error:\n%s\n\n", _error); + bx::printf("Error:\n%s\n\n", _error); } - fprintf(stderr - , "shaderc, bgfx shader compiler tool, version %d.%d.%d.\n" - "Copyright 2011-2018 Branimir Karadzic. All rights reserved.\n" - "License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause\n\n" + bx::printf( + "shaderc, bgfx shader compiler tool, version %d.%d.%d.\n" + "Copyright 2011-2022 Branimir Karadzic. All rights reserved.\n" + "License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE\n\n" , BGFX_SHADERC_VERSION_MAJOR , BGFX_SHADERC_VERSION_MINOR , BGFX_API_VERSION ); - fprintf(stderr - , "Usage: shaderc -f <in> -o <out> --type <v/f> --platform <platform>\n" + bx::printf( + "Usage: shaderc -f <in> -o <out> --type <v/f/c> --platform <platform>\n" "\n" "Options:\n" - " -h, --help Help.\n" - " -v, --version Version information only.\n" - " -f <file path> Input file path.\n" - " -i <include path> Include path (for multiple paths use -i multiple times).\n" - " -o <file path> Output file path.\n" + " -h, --help Display this help and exit.\n" + " -v, --version Output version information and exit.\n" + " -f <file path> Input's file path.\n" + " -i <include path> Include path. (for multiple paths use -i multiple times)\n" + " -o <file path> Output's file path.\n" + " --stdout Output to console.\n" " --bin2c [array name] Generate C header file. If array name is not specified base file name will be used as name.\n" " --depends Generate makefile style depends file.\n" " --platform <platform> Target platform.\n" @@ -858,24 +1015,46 @@ namespace bgfx " asm.js\n" " ios\n" " linux\n" - " nacl\n" + " orbis\n" " osx\n" " windows\n" - " --preprocess Preprocess only.\n" - " --define <defines> Add defines to preprocessor (semicolon separated).\n" - " --raw Do not process shader. No preprocessor, and no glsl-optimizer (GLSL only).\n" - " --type <type> Shader type (vertex, fragment)\n" - " --varyingdef <file path> Path to varying.def.sc file.\n" - " --verbose Verbose.\n" + " -p, --profile <profile> Shader model. Defaults to GLSL.\n" + ); + + { + ShadingLang::Enum lang = ShadingLang::Count; + for (uint32_t ii = 0; ii < BX_COUNTOF(s_profiles); ++ii) + { + const Profile& profile = s_profiles[ii]; + if (lang != profile.lang) + { + lang = profile.lang; + bx::printf("\n"); + bx::printf(" %-20s %s\n", profile.name, getName(profile.lang) ); + } + else + { + bx::printf(" %s\n", profile.name); + } + + } + } + + bx::printf( + " --preprocess Only pre-process.\n" + " --define <defines> Add defines to preprocessor. (Semicolon-separated)\n" + " --raw Do not process shader. No preprocessor, and no glsl-optimizer. (GLSL only)\n" + " --type <type> Shader type. Can be 'vertex', 'fragment, or 'compute'.\n" + " --varyingdef <file path> varying.def.sc's file path.\n" + " --verbose Be verbose.\n" "\n" - "Options (DX9 and DX11 only):\n" + "(DX9 and DX11 only):\n" "\n" " --debug Debug information.\n" " --disasm Disassemble compiled shader.\n" - " -p, --profile <profile> Shader model (f.e. ps_3_0).\n" - " -O <level> Optimization level (0, 1, 2, 3).\n" + " -O <level> Set optimization level. Can be 0 to 3.\n" " --Werror Treat warnings as errors.\n" "\n" @@ -890,58 +1069,41 @@ namespace bgfx return word; } - bool compileShader(const char* _varying, const char* _comment, char* _shader, uint32_t _shaderLen, Options& _options, bx::FileWriter* _writer) + bool compileShader(const char* _varying, const char* _comment, char* _shader, uint32_t _shaderLen, Options& _options, bx::WriterI* _writer) { - uint32_t glsl = 0; - uint32_t essl = 0; - uint32_t hlsl = 0; - uint32_t d3d = 11; - uint32_t metal = 0; - uint32_t pssl = 0; - uint32_t spirv = 0; - const char* profile = _options.profile.c_str(); - if ('\0' != profile[0]) - { - if (0 == bx::strCmp(&profile[1], "s_4_0_level", 11) ) - { - hlsl = 2; - } - else if (0 == bx::strCmp(&profile[1], "s_3", 3) ) - { - hlsl = 3; - d3d = 9; - } - else if (0 == bx::strCmp(&profile[1], "s_4", 3) ) - { - hlsl = 4; - } - else if (0 == bx::strCmp(&profile[1], "s_5", 3) ) - { - hlsl = 5; - } - else if (0 == bx::strCmp(profile, "metal") ) - { - metal = 1; - } - else if (0 == bx::strCmp(profile, "pssl") ) - { - pssl = 1; - } - else if (0 == bx::strCmp(profile, "spirv") ) + uint32_t profile_id = 0; + + const char* profile_opt = _options.profile.c_str(); + if ('\0' != profile_opt[0]) + { + const uint32_t count = BX_COUNTOF(s_profiles); + for (profile_id=0; profile_id<count; profile_id++ ) { - spirv = 1; + if (0 == bx::strCmp(profile_opt, s_profiles[profile_id].name) ) + { + break; + } + else if (s_profiles[profile_id].lang == ShadingLang::HLSL + && 0 == bx::strCmp(&profile_opt[1], s_profiles[profile_id].name) ) + { + // This test is here to allow hlsl profile names e.g: + // cs_4_0, gs_5_0, etc... + // There's no check to ensure that the profile name matches the shader type set via the cli. + // This means that you can pass `hs_5_0` when compiling a fragment shader. + break; + } } - else + + if (profile_id == count) { - bx::fromString(&glsl, profile); + bx::printf("Unknown profile: %s\n", profile_opt); + return false; } } - else - { - essl = 2; - } - Preprocessor preprocessor(_options.inputFilePath.c_str(), 0 != essl); + const Profile *profile = &s_profiles[profile_id]; + + Preprocessor preprocessor(_options.inputFilePath.c_str(), profile->lang != ShadingLang::ESSL); for (size_t ii = 0; ii < _options.includeDirs.size(); ++ii) { @@ -967,7 +1129,6 @@ namespace bgfx preprocessor.setDefaultDefine("BX_PLATFORM_WINDOWS"); preprocessor.setDefaultDefine("BX_PLATFORM_XBOXONE"); -// preprocessor.setDefaultDefine("BGFX_SHADER_LANGUAGE_ESSL"); preprocessor.setDefaultDefine("BGFX_SHADER_LANGUAGE_GLSL"); preprocessor.setDefaultDefine("BGFX_SHADER_LANGUAGE_HLSL"); preprocessor.setDefaultDefine("BGFX_SHADER_LANGUAGE_METAL"); @@ -979,32 +1140,58 @@ namespace bgfx preprocessor.setDefaultDefine("BGFX_SHADER_TYPE_VERTEX"); char glslDefine[128]; - bx::snprintf(glslDefine, BX_COUNTOF(glslDefine) - , "BGFX_SHADER_LANGUAGE_GLSL=%d" - , essl ? 1 : glsl - ); + if (profile->lang == ShadingLang::GLSL + || profile->lang == ShadingLang::ESSL) + { + bx::snprintf(glslDefine, BX_COUNTOF(glslDefine) + , "BGFX_SHADER_LANGUAGE_GLSL=%d" + , profile->id + ); + } + + char hlslDefine[128]; + if (profile->lang == ShadingLang::HLSL) + { + bx::snprintf(hlslDefine, BX_COUNTOF(hlslDefine) + , "BGFX_SHADER_LANGUAGE_HLSL=%d" + , profile->id); + } const char* platform = _options.platform.c_str(); if (0 == bx::strCmpI(platform, "android") ) { preprocessor.setDefine("BX_PLATFORM_ANDROID=1"); - preprocessor.setDefine("BGFX_SHADER_LANGUAGE_GLSL=1"); + if (profile->lang == ShadingLang::SpirV) + { + preprocessor.setDefine("BGFX_SHADER_LANGUAGE_SPIRV=1"); + } + else + { + preprocessor.setDefine(glslDefine); + } } else if (0 == bx::strCmpI(platform, "asm.js") ) { preprocessor.setDefine("BX_PLATFORM_EMSCRIPTEN=1"); - preprocessor.setDefine("BGFX_SHADER_LANGUAGE_GLSL=1"); + preprocessor.setDefine(glslDefine); } else if (0 == bx::strCmpI(platform, "ios") ) { preprocessor.setDefine("BX_PLATFORM_IOS=1"); - preprocessor.setDefine("BGFX_SHADER_LANGUAGE_GLSL=1"); + if (profile->lang == ShadingLang::Metal) + { + preprocessor.setDefine("BGFX_SHADER_LANGUAGE_METAL=1"); + } + else + { + preprocessor.setDefine(glslDefine); + } } else if (0 == bx::strCmpI(platform, "linux") ) { preprocessor.setDefine("BX_PLATFORM_LINUX=1"); - if (0 != spirv) + if (profile->lang == ShadingLang::SpirV) { preprocessor.setDefine("BGFX_SHADER_LANGUAGE_SPIRV=1"); } @@ -1016,17 +1203,35 @@ namespace bgfx else if (0 == bx::strCmpI(platform, "osx") ) { preprocessor.setDefine("BX_PLATFORM_OSX=1"); - preprocessor.setDefine(glslDefine); + if (profile->lang != ShadingLang::Metal) + { + preprocessor.setDefine(glslDefine); + } char temp[256]; - bx::snprintf(temp, sizeof(temp), "BGFX_SHADER_LANGUAGE_METAL=%d", metal); + bx::snprintf( + temp + , sizeof(temp) + , "BGFX_SHADER_LANGUAGE_METAL=%d" + , (profile->lang == ShadingLang::Metal) ? profile->id : 0 + ); preprocessor.setDefine(temp); } else if (0 == bx::strCmpI(platform, "windows") ) { preprocessor.setDefine("BX_PLATFORM_WINDOWS=1"); - char temp[256]; - bx::snprintf(temp, sizeof(temp), "BGFX_SHADER_LANGUAGE_HLSL=%d", hlsl); - preprocessor.setDefine(temp); + if (profile->lang == ShadingLang::HLSL) + { + preprocessor.setDefine(hlslDefine); + } + else if (profile->lang == ShadingLang::GLSL + || profile->lang == ShadingLang::ESSL) + { + preprocessor.setDefine(glslDefine); + } + else if (profile->lang == ShadingLang::SpirV) + { + preprocessor.setDefine("BGFX_SHADER_LANGUAGE_SPIRV=1"); + } } else if (0 == bx::strCmpI(platform, "orbis") ) { @@ -1034,6 +1239,22 @@ namespace bgfx preprocessor.setDefine("BGFX_SHADER_LANGUAGE_PSSL=1"); preprocessor.setDefine("lit=lit_reserved"); } + else + { + if (profile->lang == ShadingLang::HLSL) + { + preprocessor.setDefine(hlslDefine); + } + else if (profile->lang == ShadingLang::GLSL + || profile->lang == ShadingLang::ESSL) + { + preprocessor.setDefine(glslDefine); + } + else if (profile->lang == ShadingLang::SpirV) + { + preprocessor.setDefine("BGFX_SHADER_LANGUAGE_SPIRV=1"); + } + } preprocessor.setDefine("M_PI=3.1415926535897932384626433832795"); @@ -1052,7 +1273,7 @@ namespace bgfx break; default: - fprintf(stderr, "Unknown type: %c?!", _options.shaderType); + bx::printf("Unknown type: %c?!", _options.shaderType); return false; } @@ -1094,9 +1315,15 @@ namespace bgfx || 0 == bx::strCmp(typen, "noperspective", 13) || 0 == bx::strCmp(typen, "centroid", 8) ) { - interpolation = typen; + if ('f' == _options.shaderType + || profile->lang == ShadingLang::GLSL + || profile->lang == ShadingLang::ESSL) + { + interpolation = typen; + usesInterpolationQualifiers = true; + } + typen = nextWord(parse); - usesInterpolationQualifiers = true; } bx::StringView name = nextWord(parse); @@ -1135,7 +1362,8 @@ namespace bgfx var.m_name.assign(name.getPtr(), name.getTerm() ); var.m_semantics.assign(semantics.getPtr(), semantics.getTerm() ); - if (d3d == 9 + if (profile->lang == ShadingLang::HLSL + && profile->id < 400 && var.m_semantics == "BITANGENT") { var.m_semantics = "BINORMAL"; @@ -1159,6 +1387,7 @@ namespace bgfx InOut shaderOutputs; uint32_t inputHash = 0; uint32_t outputHash = 0; + bx::ErrorAssert err; char* data; char* input; @@ -1192,74 +1421,107 @@ namespace bgfx input = const_cast<char*>(bx::strLTrimSpace(data).getPtr() ); while (input[0] == '$') { - const char* str = bx::strLTrimSpace(input+1).getPtr(); + bx::StringView str = bx::strLTrimSpace(input+1); bx::StringView eol = bx::strFindEol(str); bx::StringView nl = bx::strFindNl(eol); input = const_cast<char*>(nl.getPtr() ); if (0 == bx::strCmp(str, "input", 5) ) { - str += 5; + str = bx::StringView(str.getPtr() + 5, str.getTerm() ); bx::StringView comment = bx::strFind(str, "//"); eol = !comment.isEmpty() && comment.getPtr() < eol.getPtr() ? comment.getPtr() : eol; - inputHash = parseInOut(shaderInputs, str, eol.getPtr() ); + inputHash = parseInOut(shaderInputs, bx::StringView(str.getPtr(), eol.getPtr() ) ); } else if (0 == bx::strCmp(str, "output", 6) ) { - str += 6; + str = bx::StringView(str.getPtr() + 6, str.getTerm() ); bx::StringView comment = bx::strFind(str, "//"); eol = !comment.isEmpty() && comment.getPtr() < eol.getPtr() ? comment.getPtr() : eol; - outputHash = parseInOut(shaderOutputs, str, eol.getPtr() ); + outputHash = parseInOut(shaderOutputs, bx::StringView(str.getPtr(), eol.getPtr() ) ); } else if (0 == bx::strCmp(str, "raw", 3) ) { raw = true; - str += 3; + str = bx::StringView(str.getPtr() + 3, str.getTerm() ); } input = const_cast<char*>(bx::strLTrimSpace(input).getPtr() ); } } - if (raw) + bool invalidShaderAttribute = false; + if ('v' == _options.shaderType) + { + for (InOut::const_iterator it = shaderInputs.begin(), itEnd = shaderInputs.end(); it != itEnd; ++it) + { + if (bx::findIdentifierMatch(it->c_str(), s_allowedVertexShaderInputs).isEmpty() ) + { + invalidShaderAttribute = true; + bx::printf( + "Invalid vertex shader input attribute '%s'.\n" + "\n" + "Valid input attributes:\n" + " a_position, a_normal, a_tangent, a_bitangent, a_color0, a_color1, a_color2, a_color3, a_indices, a_weight,\n" + " a_texcoord0, a_texcoord1, a_texcoord2, a_texcoord3, a_texcoord4, a_texcoord5, a_texcoord6, a_texcoord7,\n" + " i_data0, i_data1, i_data2, i_data3, i_data4.\n" + "\n" + , it->c_str() ); + break; + } + } + } + + if (invalidShaderAttribute) + { + } + else if (raw) { if ('f' == _options.shaderType) { - bx::write(_writer, BGFX_CHUNK_MAGIC_FSH); - bx::write(_writer, inputHash); - bx::write(_writer, uint32_t(0) ); + bx::write(_writer, BGFX_CHUNK_MAGIC_FSH, &err); } else if ('v' == _options.shaderType) { - bx::write(_writer, BGFX_CHUNK_MAGIC_VSH); - bx::write(_writer, uint32_t(0) ); - bx::write(_writer, outputHash); + bx::write(_writer, BGFX_CHUNK_MAGIC_VSH, &err); } else { - bx::write(_writer, BGFX_CHUNK_MAGIC_CSH); - bx::write(_writer, uint32_t(0) ); - bx::write(_writer, outputHash); + bx::write(_writer, BGFX_CHUNK_MAGIC_CSH, &err); } - if (0 != glsl) + bx::write(_writer, inputHash, &err); + bx::write(_writer, outputHash, &err); + } + + if (raw) + { + if (profile->lang == ShadingLang::GLSL) { - bx::write(_writer, uint16_t(0) ); + bx::write(_writer, uint16_t(0), &err); uint32_t shaderSize = (uint32_t)bx::strLen(input); - bx::write(_writer, shaderSize); - bx::write(_writer, input, shaderSize); - bx::write(_writer, uint8_t(0) ); + bx::write(_writer, shaderSize, &err); + bx::write(_writer, input, shaderSize, &err); + bx::write(_writer, uint8_t(0), &err); compiled = true; } - else if (0 != pssl) + else if (profile->lang == ShadingLang::Metal) + { + compiled = compileMetalShader(_options, BX_MAKEFOURCC('M', 'T', 'L', 0), input, _writer); + } + else if (profile->lang == ShadingLang::SpirV) + { + compiled = compileSPIRVShader(_options, profile->id, input, _writer); + } + else if (profile->lang == ShadingLang::PSSL) { compiled = compilePSSLShader(_options, 0, input, _writer); } else { - compiled = compileHLSLShader(_options, d3d, input, _writer); + compiled = compileHLSLShader(_options, profile->id, input, _writer); } } else if ('c' == _options.shaderType) // Compute @@ -1267,18 +1529,17 @@ namespace bgfx bx::StringView entry = bx::strFind(input, "void main()"); if (entry.isEmpty() ) { - fprintf(stderr, "Shader entry point 'void main()' is not found.\n"); + bx::printf("Shader entry point 'void main()' is not found.\n"); } else { - if (0 != glsl - || 0 != essl - || 0 != metal) + if (profile->lang == ShadingLang::GLSL + || profile->lang == ShadingLang::ESSL) { } else { - if (0 != pssl) + if (profile->lang != ShadingLang::PSSL) { preprocessor.writef(getPsslPreamble() ); } @@ -1354,7 +1615,12 @@ namespace bgfx { if (_options.preprocessOnly) { - bx::write(_writer, preprocessor.m_preprocessed.c_str(), (int32_t)preprocessor.m_preprocessed.size() ); + bx::write( + _writer + , preprocessor.m_preprocessed.c_str() + , (int32_t)preprocessor.m_preprocessed.size() + , &err + ); return true; } @@ -1362,56 +1628,57 @@ namespace bgfx { std::string code; - bx::write(_writer, BGFX_CHUNK_MAGIC_CSH); - bx::write(_writer, uint32_t(0) ); - bx::write(_writer, outputHash); + bx::write(_writer, BGFX_CHUNK_MAGIC_CSH, &err); + bx::write(_writer, uint32_t(0), &err); + bx::write(_writer, outputHash, &err); - if (0 != glsl - || 0 != essl) + if (profile->lang == ShadingLang::GLSL + || profile->lang == ShadingLang::ESSL) { - if (essl) + if (profile->lang == ShadingLang::ESSL) { bx::stringPrintf(code, "#version 310 es\n"); } else { - bx::stringPrintf(code, "#version %d\n", glsl == 0 ? 430 : glsl); + bx::stringPrintf( + code + , "#version %d\n" + , (profile->lang != ShadingLang::GLSL) ? 430 : profile->id + ); } -#if 1 code += preprocessor.m_preprocessed; - bx::write(_writer, uint16_t(0) ); + bx::write(_writer, uint16_t(0), &err); uint32_t shaderSize = (uint32_t)code.size(); - bx::write(_writer, shaderSize); - bx::write(_writer, code.c_str(), shaderSize); - bx::write(_writer, uint8_t(0) ); + bx::write(_writer, shaderSize, &err); + bx::write(_writer, code.c_str(), shaderSize, &err); + bx::write(_writer, uint8_t(0), &err); compiled = true; -#else - code += _comment; - code += preprocessor.m_preprocessed; - - compiled = compileGLSLShader(cmdLine, essl, code, writer); -#endif // 0 } else { code += _comment; code += preprocessor.m_preprocessed; - if (0 != spirv) + if (profile->lang == ShadingLang::Metal) { - compiled = compileSPIRVShader(_options, 0, code, _writer); + compiled = compileMetalShader(_options, BX_MAKEFOURCC('M', 'T', 'L', 0), code, _writer); } - else if (0 != pssl) + else if (profile->lang == ShadingLang::SpirV) + { + compiled = compileSPIRVShader(_options, profile->id, code, _writer); + } + else if (profile->lang == ShadingLang::PSSL) { compiled = compilePSSLShader(_options, 0, code, _writer); } else { - compiled = compileHLSLShader(_options, d3d, code, _writer); + compiled = compileHLSLShader(_options, profile->id, code, _writer); } } } @@ -1439,15 +1706,14 @@ namespace bgfx bx::StringView entry = bx::strFind(shader, "void main()"); if (entry.isEmpty() ) { - fprintf(stderr, "Shader entry point 'void main()' is not found.\n"); + bx::printf("Shader entry point 'void main()' is not found.\n"); } else { - if (0 != glsl - || 0 != essl - || 0 != metal) + if (profile->lang == ShadingLang::GLSL + || profile->lang == ShadingLang::ESSL) { - if (0 == essl) + if (profile->lang != ShadingLang::ESSL) { // bgfx shadow2D/Proj behave like EXT_shadow_samplers // not as GLSL language 1.2 specs shadow2D/Proj. @@ -1457,6 +1723,32 @@ namespace bgfx ); } + // gl_FragColor and gl_FragData are deprecated for essl > 300 + if (profile->lang == ShadingLang::ESSL + && profile->id >= 300) + { + const bool hasFragColor = !bx::strFind(input, "gl_FragColor").isEmpty(); + bool hasFragData[8] = {}; + uint32_t numFragData = 0; + for (uint32_t ii = 0; ii < BX_COUNTOF(hasFragData); ++ii) + { + char temp[32]; + bx::snprintf(temp, BX_COUNTOF(temp), "gl_FragData[%d]", ii); + hasFragData[ii] = !bx::strFind(input, temp).isEmpty(); + numFragData += hasFragData[ii]; + } + if (hasFragColor) + { + preprocessor.writef("#define gl_FragColor bgfx_FragColor\n"); + preprocessor.writef("out mediump vec4 bgfx_FragColor;\n"); + } + else if (numFragData) + { + preprocessor.writef("#define gl_FragData bgfx_FragData\n"); + preprocessor.writef("out mediump vec4 bgfx_FragData[gl_MaxDrawBuffers];\n"); + } + } + for (InOut::const_iterator it = shaderInputs.begin(), itEnd = shaderInputs.end(); it != itEnd; ++it) { VaryingMap::const_iterator varyingIt = varyingMap.find(*it); @@ -1468,21 +1760,23 @@ namespace bgfx if (0 == bx::strCmp(name, "a_", 2) || 0 == bx::strCmp(name, "i_", 2) ) { - preprocessor.writef("attribute %s %s %s %s;\n" - , var.m_precision.c_str() - , var.m_interpolation.c_str() - , var.m_type.c_str() - , name - ); + preprocessor.writef( + "attribute %s %s %s %s;\n" + , var.m_precision.c_str() + , var.m_interpolation.c_str() + , var.m_type.c_str() + , name + ); } else { - preprocessor.writef("%s varying %s %s %s;\n" - , var.m_interpolation.c_str() - , var.m_precision.c_str() - , var.m_type.c_str() - , name - ); + preprocessor.writef( + "%s varying %s %s %s;\n" + , var.m_interpolation.c_str() + , var.m_precision.c_str() + , var.m_type.c_str() + , name + ); } } } @@ -1503,7 +1797,7 @@ namespace bgfx } else { - if (0 != pssl) + if (profile->lang == ShadingLang::PSSL) { preprocessor.writef(getPsslPreamble() ); } @@ -1526,8 +1820,8 @@ namespace bgfx "#define mat4 float4x4\n" ); - if (hlsl != 0 - && hlsl < 4) + if (profile->lang == ShadingLang::HLSL + && profile->id < 400) { preprocessor.writef( "#define centroid\n" @@ -1548,7 +1842,7 @@ namespace bgfx } const bool hasFragColor = !bx::strFind(input, "gl_FragColor").isEmpty(); - const bool hasFragCoord = !bx::strFind(input, "gl_FragCoord").isEmpty() || hlsl > 3 || hlsl == 2; + const bool hasFragCoord = !bx::strFind(input, "gl_FragCoord").isEmpty() || profile->id >= 400; const bool hasFragDepth = !bx::strFind(input, "gl_FragDepth").isEmpty(); const bool hasFrontFacing = !bx::strFind(input, "gl_FrontFacing").isEmpty(); const bool hasPrimitiveId = !bx::strFind(input, "gl_PrimitiveID").isEmpty(); @@ -1572,10 +1866,10 @@ namespace bgfx // If it has gl_FragData or gl_FragColor, color target at // index 0 exists, otherwise shader is not modifying color // targets. - hasFragData[0] |= hasFragColor || d3d < 11; + hasFragData[0] |= hasFragColor || profile->id < 400; if (!insert.isEmpty() - && d3d < 11 + && profile->id < 400 && !hasFragColor) { insert = strInsert(const_cast<char*>(insert.getPtr()+1), "\ngl_FragColor = bgfx_VoidFrag;\n"); @@ -1609,7 +1903,7 @@ namespace bgfx } } - const uint32_t maxRT = d3d > 9 ? BX_COUNTOF(hasFragData) : 4; + const uint32_t maxRT = profile->id >= 400 ? BX_COUNTOF(hasFragData) : 4; for (uint32_t ii = 0; ii < BX_COUNTOF(hasFragData); ++ii) { @@ -1636,7 +1930,7 @@ namespace bgfx if (hasFrontFacing) { - if (hlsl == 3) + if (profile->id < 400) { preprocessor.writef( " \\\n\t%sfloat __vface : VFACE" @@ -1654,7 +1948,7 @@ namespace bgfx if (hasPrimitiveId) { - if (hlsl > 3) + if (profile->id >= 400) { preprocessor.writef( " \\\n\t%suint gl_PrimitiveID : SV_PrimitiveID" @@ -1663,7 +1957,7 @@ namespace bgfx } else { - fprintf(stderr, "gl_PrimitiveID builtin is not supported by this D3D9 HLSL.\n"); + bx::printf("gl_PrimitiveID builtin is not supported by D3D9 HLSL.\n"); return false; } } @@ -1674,7 +1968,7 @@ namespace bgfx if (hasFrontFacing) { - if (hlsl == 3) + if (profile->id < 400) { preprocessor.writef( "#define gl_FrontFacing (__vface >= 0.0)\n" @@ -1684,8 +1978,10 @@ namespace bgfx } else if ('v' == _options.shaderType) { - const bool hasVertexId = !bx::strFind(input, "gl_VertexID").isEmpty(); - const bool hasInstanceId = !bx::strFind(input, "gl_InstanceID").isEmpty(); + const bool hasVertexId = !bx::strFind(input, "gl_VertexID").isEmpty(); + const bool hasInstanceId = !bx::strFind(input, "gl_InstanceID").isEmpty(); + const bool hasViewportId = !bx::strFind(input, "gl_ViewportIndex").isEmpty(); + const bool hasLayerId = !bx::strFind(input, "gl_Layer").isEmpty(); bx::StringView brace = bx::strFind(bx::StringView(entry.getPtr(), shader.getTerm() ), "{"); if (!brace.isEmpty() ) @@ -1703,6 +1999,7 @@ namespace bgfx "\tvec4 gl_Position : SV_POSITION;\n" "#define gl_Position _varying_.gl_Position\n" ); + for (InOut::const_iterator it = shaderOutputs.begin(), itEnd = shaderOutputs.end(); it != itEnd; ++it) { VaryingMap::const_iterator varyingIt = varyingMap.find(*it); @@ -1723,6 +2020,39 @@ namespace bgfx ); } } + + if (hasViewportId) + { + if (profile->id >= 400) + { + preprocessor.writef( + "\tuint gl_ViewportIndex : SV_ViewportArrayIndex;\n" + "#define gl_ViewportIndex _varying_.gl_ViewportIndex\n" + ); + } + else + { + bx::printf("gl_ViewportIndex builtin is not supported by D3D9 HLSL.\n"); + return false; + } + } + + if (hasLayerId) + { + if (profile->id >= 400) + { + preprocessor.writef( + "\tuint gl_Layer : SV_RenderTargetArrayIndex;\n" + "#define gl_Layer _varying_.gl_Layer\n" + ); + } + else + { + bx::printf("gl_Layer builtin is not supported by D3D9 HLSL.\n"); + return false; + } + } + preprocessor.writef( "};\n" ); @@ -1748,7 +2078,7 @@ namespace bgfx if (hasVertexId) { - if (d3d > 9) + if (profile->id >= 400) { preprocessor.writef( " \\\n\t%suint gl_VertexID : SV_VertexID" @@ -1757,14 +2087,14 @@ namespace bgfx } else { - fprintf(stderr, "gl_VertexID builtin is not supported by this D3D9 HLSL.\n"); + bx::printf("gl_VertexID builtin is not supported by D3D9 HLSL.\n"); return false; } } if (hasInstanceId) { - if (d3d > 9) + if (profile->id >= 400) { preprocessor.writef( " \\\n\t%suint gl_InstanceID : SV_InstanceID" @@ -1773,7 +2103,7 @@ namespace bgfx } else { - fprintf(stderr, "gl_InstanceID builtin is not supported by this D3D9 HLSL.\n"); + bx::printf("gl_InstanceID builtin is not supported by D3D9 HLSL.\n"); return false; } } @@ -1804,21 +2134,6 @@ namespace bgfx "\t} \\\n" ); - if (hlsl != 0 - && hlsl <= 3) - { -// preprocessor.writef( -// "\tgl_Position.xy += u_viewTexel.xy * gl_Position.w; \\\n" -// ); - } - - if (0 != spirv) - { - preprocessor.writef( - "\tgl_Position.y = -gl_Position.y; \\\n" - ); - } - preprocessor.writef( "\treturn _varying_" ); @@ -1827,23 +2142,14 @@ namespace bgfx if (preprocessor.run(input) ) { - //BX_TRACE("Input file: %s", filePath); - //BX_TRACE("Output file: %s", outFilePath); - if (_options.preprocessOnly) { - if (0 != glsl) - { - if (essl != 0) - { - writef(_writer - , "#ifdef GL_ES\n" - "precision highp float;\n" - "#endif // GL_ES\n\n" - ); - } - } - bx::write(_writer, preprocessor.m_preprocessed.c_str(), (int32_t)preprocessor.m_preprocessed.size() ); + bx::write( + _writer + , preprocessor.m_preprocessed.c_str() + , (int32_t)preprocessor.m_preprocessed.size() + , &err + ); return true; } @@ -1853,63 +2159,81 @@ namespace bgfx if ('f' == _options.shaderType) { - bx::write(_writer, BGFX_CHUNK_MAGIC_FSH); - bx::write(_writer, inputHash); - bx::write(_writer, uint32_t(0) ); + bx::write(_writer, BGFX_CHUNK_MAGIC_FSH, &err); + bx::write(_writer, inputHash, &err); + bx::write(_writer, uint32_t(0), &err); } else if ('v' == _options.shaderType) { - bx::write(_writer, BGFX_CHUNK_MAGIC_VSH); - bx::write(_writer, uint32_t(0) ); - bx::write(_writer, outputHash); + bx::write(_writer, BGFX_CHUNK_MAGIC_VSH, &err); + bx::write(_writer, uint32_t(0), &err); + bx::write(_writer, outputHash, &err); } else { - bx::write(_writer, BGFX_CHUNK_MAGIC_CSH); - bx::write(_writer, uint32_t(0) ); - bx::write(_writer, outputHash); + bx::write(_writer, BGFX_CHUNK_MAGIC_CSH, &err); + bx::write(_writer, uint32_t(0), &err); + bx::write(_writer, outputHash, &err); } - if (0 != glsl - || 0 != essl - || 0 != metal) + if (profile->lang == ShadingLang::GLSL + || profile->lang == ShadingLang::ESSL) { - if (!bx::strFind(preprocessor.m_preprocessed.c_str(), "layout(std430").isEmpty() ) + const bx::StringView preprocessedInput(preprocessor.m_preprocessed.c_str() ); + uint32_t glsl_profile = profile->id; + + const bool usesBitsToEncoders = true + && _options.shaderType == 'f' + && !bx::findIdentifierMatch(preprocessedInput, s_bitsToEncoders).isEmpty() + ; + + if (!bx::strFind(preprocessedInput, "layout(std430").isEmpty() + || !bx::strFind(preprocessedInput, "image2D").isEmpty() + || usesBitsToEncoders) { - glsl = 430; + if (profile->lang == ShadingLang::GLSL + && glsl_profile < 430) + { + glsl_profile = 430; + } + else if (glsl_profile < 310) + { + glsl_profile = 310; + } } - if (glsl < 400) + if (glsl_profile < 400) { const bool usesTextureLod = false || !bx::findIdentifierMatch(input, s_ARB_shader_texture_lod).isEmpty() || !bx::findIdentifierMatch(input, s_EXT_shader_texture_lod).isEmpty() ; - const bool usesInstanceID = !bx::findIdentifierMatch(input, "gl_InstanceID").isEmpty(); - const bool usesGpuShader4 = !bx::findIdentifierMatch(input, s_EXT_gpu_shader4).isEmpty(); - const bool usesGpuShader5 = !bx::findIdentifierMatch(input, s_ARB_gpu_shader5).isEmpty(); - const bool usesTexelFetch = !bx::findIdentifierMatch(input, s_texelFetch).isEmpty(); - const bool usesTextureMS = !bx::findIdentifierMatch(input, s_ARB_texture_multisample).isEmpty(); - const bool usesTextureArray = !bx::findIdentifierMatch(input, s_textureArray).isEmpty(); - const bool usesPacking = !bx::findIdentifierMatch(input, s_ARB_shading_language_packing).isEmpty(); - - if (0 == essl) + + const bool usesGpuShader5 = true + && _options.shaderType != 'f' + && !bx::findIdentifierMatch(input, s_ARB_gpu_shader5).isEmpty() + ; + + const bool usesInstanceID = !bx::findIdentifierMatch(input, "gl_InstanceID").isEmpty(); + const bool usesGpuShader4 = !bx::findIdentifierMatch(input, s_EXT_gpu_shader4).isEmpty(); + const bool usesTexelFetch = !bx::findIdentifierMatch(input, s_texelFetch).isEmpty(); + const bool usesTextureMS = !bx::findIdentifierMatch(input, s_ARB_texture_multisample).isEmpty(); + const bool usesTextureArray = !bx::findIdentifierMatch(input, s_textureArray).isEmpty(); + const bool usesPacking = !bx::findIdentifierMatch(input, s_ARB_shading_language_packing).isEmpty(); + const bool usesViewportLayerArray = !bx::findIdentifierMatch(input, s_ARB_shader_viewport_layer_array).isEmpty(); + const bool usesUnsignedVecs = !bx::findIdentifierMatch(preprocessedInput, s_unsignedVecs).isEmpty(); + + if (profile->lang != ShadingLang::ESSL) { - const bool need130 = 120 == glsl && (false + const bool need130 = (120 == glsl_profile && (false || !bx::findIdentifierMatch(input, s_130).isEmpty() || usesInterpolationQualifiers || usesTexelFetch - ); + || usesUnsignedVecs + ) ); - if (0 != metal) - { - bx::stringPrintf(code, "#version 120\n"); - } - else - { - bx::stringPrintf(code, "#version %s\n", need130 ? "130" : _options.profile.c_str()); - glsl = 130; - } + bx::stringPrintf(code, "#version %d\n", need130 ? 130 : glsl_profile); + glsl_profile = 130; if (need130) { @@ -1925,6 +2249,13 @@ namespace bgfx ); } + if (usesViewportLayerArray) + { + bx::stringPrintf(code + , "#extension GL_ARB_shader_viewport_layer_array : enable\n" + ); + } + if (usesGpuShader4) { bx::stringPrintf(code @@ -1981,7 +2312,7 @@ namespace bgfx ); } - if (130 > glsl) + if (130 > glsl_profile) { bx::stringPrintf(code, "#define ivec2 vec2\n" @@ -2009,7 +2340,7 @@ namespace bgfx ); } - if (need130) + if (need130 || (glsl_profile >= 130)) { bx::stringPrintf(code , "#define bgfxShadow2D(_sampler, _coord) vec4_splat(texture(_sampler, _coord))\n" @@ -2020,62 +2351,31 @@ namespace bgfx { bx::stringPrintf(code , "#define bgfxShadow2D shadow2D\n" - "#define bgfxShadow2DProj shadow2DProj\n" + "#define bgfxShadow2DProj shader2DProj\n" ); } } else { - if (usesInterpolationQualifiers) + if ((glsl_profile < 300) && usesUnsignedVecs) + { + glsl_profile = 300; + } + + if (glsl_profile > 100) { - bx::stringPrintf(code, "#version 300 es\n"); + bx::stringPrintf(code, "#version %d es\n", glsl_profile); bx::stringPrintf(code, "#define attribute in\n"); bx::stringPrintf(code, "#define varying %s\n" , 'f' == _options.shaderType ? "in" : "out" ); + bx::stringPrintf(code, "precision highp float;\n"); + bx::stringPrintf(code, "precision highp int;\n"); } - else if (essl == 2) + + if (glsl_profile >= 300) { - code += - "mat2 transpose(mat2 _mtx)\n" - "{\n" - " vec2 v0 = _mtx[0];\n" - " vec2 v1 = _mtx[1];\n" - "\n" - " return mat2(\n" - " vec2(v0.x, v1.x)\n" - " , vec2(v0.y, v1.y)\n" - " );\n" - "}\n" - "\n" - "mat3 transpose(mat3 _mtx)\n" - "{\n" - " vec3 v0 = _mtx[0];\n" - " vec3 v1 = _mtx[1];\n" - " vec3 v2 = _mtx[2];\n" - "\n" - " return mat3(\n" - " vec3(v0.x, v1.x, v2.x)\n" - " , vec3(v0.y, v1.y, v2.y)\n" - " , vec3(v0.z, v1.z, v2.z)\n" - " );\n" - "}\n" - "\n" - "mat4 transpose(mat4 _mtx)\n" - "{\n" - " vec4 v0 = _mtx[0];\n" - " vec4 v1 = _mtx[1];\n" - " vec4 v2 = _mtx[2];\n" - " vec4 v3 = _mtx[3];\n" - "\n" - " return mat4(\n" - " vec4(v0.x, v1.x, v2.x, v3.x)\n" - " , vec4(v0.y, v1.y, v2.y, v3.y)\n" - " , vec4(v0.z, v1.z, v2.z, v3.z)\n" - " , vec4(v0.w, v1.w, v2.w, v3.w)\n" - " );\n" - "}\n" - ; + bx::stringPrintf(code, "precision highp sampler2DArray;\n"); } // Pretend that all extensions are available. @@ -2103,7 +2403,7 @@ namespace bgfx bx::stringPrintf(code, "#extension GL_OES_texture_3D : enable\n"); } - if (!bx::findIdentifierMatch(input, s_EXT_shadow_samplers).isEmpty() ) + if ((glsl_profile < 300) && (!bx::findIdentifierMatch(input, s_EXT_shadow_samplers).isEmpty())) { bx::stringPrintf(code , "#extension GL_EXT_shadow_samplers : enable\n" @@ -2111,6 +2411,13 @@ namespace bgfx "#define shadow2DProj shadow2DProjEXT\n" ); } + else + { + bx::stringPrintf(code + , "#define shadow2D(_sampler, _coord) texture(_sampler, _coord)\n" + "#define shadow2DProj(_sampler, _coord) textureProj(_sampler, _coord)\n" + ); + } if (usesGpuShader5) { @@ -2126,7 +2433,7 @@ namespace bgfx ); } - if (!bx::findIdentifierMatch(input, "gl_FragDepth").isEmpty() ) + if ((glsl_profile < 300) && (!bx::findIdentifierMatch(input, "gl_FragDepth").isEmpty() )) { bx::stringPrintf(code , "#extension GL_EXT_frag_depth : enable\n" @@ -2141,25 +2448,76 @@ namespace bgfx ); } - bx::stringPrintf(code - , "#define ivec2 vec2\n" - "#define ivec3 vec3\n" - "#define ivec4 vec4\n" - ); + if (glsl_profile == 100) + { + code += + "mat2 transpose(mat2 _mtx)\n" + "{\n" + " vec2 v0 = _mtx[0];\n" + " vec2 v1 = _mtx[1];\n" + "\n" + " return mat2(\n" + " vec2(v0.x, v1.x)\n" + " , vec2(v0.y, v1.y)\n" + " );\n" + "}\n" + "\n" + "mat3 transpose(mat3 _mtx)\n" + "{\n" + " vec3 v0 = _mtx[0];\n" + " vec3 v1 = _mtx[1];\n" + " vec3 v2 = _mtx[2];\n" + "\n" + " return mat3(\n" + " vec3(v0.x, v1.x, v2.x)\n" + " , vec3(v0.y, v1.y, v2.y)\n" + " , vec3(v0.z, v1.z, v2.z)\n" + " );\n" + "}\n" + "\n" + "mat4 transpose(mat4 _mtx)\n" + "{\n" + " vec4 v0 = _mtx[0];\n" + " vec4 v1 = _mtx[1];\n" + " vec4 v2 = _mtx[2];\n" + " vec4 v3 = _mtx[3];\n" + "\n" + " return mat4(\n" + " vec4(v0.x, v1.x, v2.x, v3.x)\n" + " , vec4(v0.y, v1.y, v2.y, v3.y)\n" + " , vec4(v0.z, v1.z, v2.z, v3.z)\n" + " , vec4(v0.w, v1.w, v2.w, v3.w)\n" + " );\n" + "}\n" + ; + } } } else { - bx::stringPrintf(code, "#version %d\n", glsl); + bx::stringPrintf(code, "#version %d\n", glsl_profile); + + if (120 < glsl_profile) + { + if (!bx::findIdentifierMatch(input, "gl_FragColor").isEmpty() ) + { + bx::stringPrintf(code + , "out vec4 bgfx_FragColor;\n" + "#define gl_FragColor bgfx_FragColor\n" + ); + } + } bx::stringPrintf(code - , "#define texture2DLod textureLod\n" - "#define texture2DGrad textureGrad\n" - "#define texture2DProjLod textureProjLod\n" - "#define texture2DProjGrad textureProjGrad\n" - "#define textureCubeLod textureLod\n" - "#define textureCubeGrad textureGrad\n" - "#define texture3D texture\n" + , "#define texture2D texture\n" + "#define texture2DLod textureLod\n" + "#define texture2DGrad textureGrad\n" + "#define texture2DProjLod textureProjLod\n" + "#define texture2DProjGrad textureProjGrad\n" + "#define textureCubeLod textureLod\n" + "#define textureCubeGrad textureGrad\n" + "#define texture3D texture\n" + "#define texture2DLodOffset textureLodOffset\n" ); bx::stringPrintf(code, "#define attribute in\n"); @@ -2173,16 +2531,17 @@ namespace bgfx ); } - if (glsl > 400) + if ( (profile->lang == ShadingLang::GLSL && glsl_profile > 400) + || (profile->lang == ShadingLang::ESSL && glsl_profile > 300) ) { code += preprocessor.m_preprocessed; - bx::write(_writer, uint16_t(0) ); + bx::write(_writer, uint16_t(0), &err); uint32_t shaderSize = (uint32_t)code.size(); - bx::write(_writer, shaderSize); - bx::write(_writer, code.c_str(), shaderSize); - bx::write(_writer, uint8_t(0) ); + bx::write(_writer, shaderSize, &err); + bx::write(_writer, code.c_str(), shaderSize, &err); + bx::write(_writer, uint8_t(0), &err); compiled = true; } @@ -2191,7 +2550,12 @@ namespace bgfx code += _comment; code += preprocessor.m_preprocessed; - compiled = compileGLSLShader(_options, metal ? BX_MAKEFOURCC('M', 'T', 'L', 0) : essl, code, _writer); + if (profile->lang == ShadingLang::ESSL) + { + glsl_profile |= 0x80000000; + } + + compiled = compileGLSLShader(_options, glsl_profile, code, _writer); } } else @@ -2199,17 +2563,21 @@ namespace bgfx code += _comment; code += preprocessor.m_preprocessed; - if (0 != spirv) + if (profile->lang == ShadingLang::Metal) + { + compiled = compileMetalShader(_options, BX_MAKEFOURCC('M', 'T', 'L', 0), code, _writer); + } + else if (profile->lang == ShadingLang::SpirV) { - compiled = compileSPIRVShader(_options, 0, code, _writer); + compiled = compileSPIRVShader(_options, profile->id, code, _writer); } - else if (0 != pssl) + else if (profile->lang == ShadingLang::PSSL) { compiled = compilePSSLShader(_options, 0, code, _writer); } else { - compiled = compileHLSLShader(_options, d3d, code, _writer); + compiled = compileHLSLShader(_options, profile->id, code, _writer); } } } @@ -2242,8 +2610,8 @@ namespace bgfx if (cmdLine.hasArg('v', "version") ) { - fprintf(stderr - , "shaderc, bgfx shader compiler tool, version %d.%d.%d.\n" + bx::printf( + "shaderc, bgfx shader compiler tool, version %d.%d.%d.\n" , BGFX_SHADERC_VERSION_MAJOR , BGFX_SHADERC_VERSION_MINOR , BGFX_API_VERSION @@ -2266,10 +2634,11 @@ namespace bgfx return bx::kExitFailure; } + bool consoleOut = cmdLine.hasArg("stdout"); const char* outFilePath = cmdLine.findOption('o'); - if (NULL == outFilePath) + if (NULL == outFilePath && !consoleOut) { - help("Output file name must be specified."); + help("Output file name must be specified or use \"--stdout\" to output to stdout."); return bx::kExitFailure; } @@ -2282,7 +2651,7 @@ namespace bgfx Options options; options.inputFilePath = filePath; - options.outputFilePath = outFilePath; + options.outputFilePath = consoleOut ? "" : outFilePath; options.shaderType = bx::toLower(type[0]); options.disasm = cmdLine.hasArg('\0', "disasm"); @@ -2403,7 +2772,7 @@ namespace bgfx bx::FileReader reader; if (!bx::open(&reader, filePath) ) { - fprintf(stderr, "Unable to open file '%s'.\n", filePath); + bx::printf("Unable to open file '%s'.\n", filePath); } else { @@ -2423,14 +2792,14 @@ namespace bgfx } else { - fprintf(stderr, "ERROR: Failed to parse varying def file: \"%s\" No input/output semantics will be generated in the code!\n", varyingdef); + bx::printf("ERROR: Failed to parse varying def file: \"%s\" No input/output semantics will be generated in the code!\n", varyingdef); } } const size_t padding = 16384; uint32_t size = (uint32_t)bx::getSize(&reader); char* data = new char[size+padding+1]; - size = (uint32_t)bx::read(&reader, data, size); + size = (uint32_t)bx::read(&reader, data, size, bx::ErrorAssert{}); if (data[0] == '\xef' && data[1] == '\xbb' @@ -2448,25 +2817,31 @@ namespace bgfx bx::FileWriter* writer = NULL; - if (!bin2c.isEmpty() ) + if (!consoleOut) { - writer = new Bin2cWriter(bin2c); - } - else - { - writer = new bx::FileWriter; - } + if (!bin2c.isEmpty()) + { + writer = new Bin2cWriter(bin2c); + } + else + { + writer = new bx::FileWriter; + } - if (!bx::open(writer, outFilePath) ) - { - fprintf(stderr, "Unable to open output file '%s'.", outFilePath); - return bx::kExitFailure; + if (!bx::open(writer, outFilePath)) + { + bx::printf("Unable to open output file '%s'.\n", outFilePath); + return bx::kExitFailure; + } } - compiled = compileShader(varying, commandLineComment.c_str(), data, size, options, writer); + compiled = compileShader(varying, commandLineComment.c_str(), data, size, options, consoleOut ? bx::getStdOut() : writer); - bx::close(writer); - delete writer; + if (!consoleOut) + { + bx::close(writer); + delete writer; + } } if (compiled) @@ -2474,9 +2849,9 @@ namespace bgfx return bx::kExitSuccess; } - remove(outFilePath); + bx::remove(outFilePath); - fprintf(stderr, "Failed to build shader.\n"); + bx::printf("Failed to build shader.\n"); return bx::kExitFailure; } diff --git a/3rdparty/bgfx/tools/shaderc/shaderc.h b/3rdparty/bgfx/tools/shaderc/shaderc.h index 1a2c78f12c8..0da24d24bde 100644 --- a/3rdparty/bgfx/tools/shaderc/shaderc.h +++ b/3rdparty/bgfx/tools/shaderc/shaderc.h @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef SHADERC_H_HEADER_GUARD @@ -11,35 +11,6 @@ namespace bgfx extern bool g_verbose; } -#define _BX_TRACE(_format, ...) \ - BX_MACRO_BLOCK_BEGIN \ - if (bgfx::g_verbose) \ - { \ - fprintf(stdout, BX_FILE_LINE_LITERAL "" _format "\n", ##__VA_ARGS__); \ - } \ - BX_MACRO_BLOCK_END - -#define _BX_WARN(_condition, _format, ...) \ - BX_MACRO_BLOCK_BEGIN \ - if (!(_condition) ) \ - { \ - BX_TRACE("WARN " _format, ##__VA_ARGS__); \ - } \ - BX_MACRO_BLOCK_END - -#define _BX_CHECK(_condition, _format, ...) \ - BX_MACRO_BLOCK_BEGIN \ - if (!(_condition) ) \ - { \ - BX_TRACE("CHECK " _format, ##__VA_ARGS__); \ - bx::debugBreak(); \ - } \ - BX_MACRO_BLOCK_END - -#define BX_TRACE _BX_TRACE -#define BX_WARN _BX_WARN -#define BX_CHECK _BX_CHECK - #ifndef SHADERC_CONFIG_HLSL # define SHADERC_CONFIG_HLSL BX_PLATFORM_WINDOWS #endif // SHADERC_CONFIG_HLSL @@ -60,66 +31,49 @@ namespace bgfx #include <bx/string.h> #include <bx/hash.h> #include <bx/file.h> -#include "../../src/vertexdecl.h" +#include "../../src/vertexlayout.h" namespace bgfx { extern bool g_verbose; - class LineReader : public bx::ReaderI - { - public: - LineReader(const char* _str) - : m_str(_str) - , m_pos(0) - , m_size(bx::strLen(_str) ) - { - } - - virtual int32_t read(void* _data, int32_t _size, bx::Error* _err) override - { - if (m_str[m_pos] == '\0' - || m_pos == m_size) - { - BX_ERROR_SET(_err, BX_ERROR_READERWRITER_EOF, "LineReader: EOF."); - return 0; - } - - uint32_t pos = m_pos; - const char* str = &m_str[pos]; - const char* nl = bx::strFindNl(str).getPtr(); - pos += (uint32_t)(nl - str); - - const char* eol = &m_str[pos]; - - uint32_t size = bx::uint32_min(uint32_t(eol - str), _size); - - bx::memCopy(_data, str, size); - m_pos += size; - - return size; - } - - const char* m_str; - uint32_t m_pos; - uint32_t m_size; - }; - bx::StringView nextWord(bx::StringView& _parse); -#define BGFX_UNIFORM_FRAGMENTBIT UINT8_C(0x10) -#define BGFX_UNIFORM_SAMPLERBIT UINT8_C(0x20) + constexpr uint8_t kUniformFragmentBit = 0x10; + constexpr uint8_t kUniformSamplerBit = 0x20; + constexpr uint8_t kUniformReadOnlyBit = 0x40; + constexpr uint8_t kUniformCompareBit = 0x80; + constexpr uint8_t kUniformMask = 0 + | kUniformFragmentBit + | kUniformSamplerBit + | kUniformReadOnlyBit + | kUniformCompareBit + ; const char* getUniformTypeName(UniformType::Enum _enum); UniformType::Enum nameToUniformTypeEnum(const char* _name); struct Uniform { + Uniform() + : type(UniformType::Count) + , num(0) + , regIndex(0) + , regCount(0) + , texComponent(0) + , texDimension(0) + , texFormat(0) + { + } + std::string name; UniformType::Enum type; uint8_t num; uint16_t regIndex; uint16_t regCount; + uint8_t texComponent; + uint8_t texDimension; + uint16_t texFormat; }; struct Options @@ -167,6 +121,7 @@ namespace bgfx bool compileGLSLShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer); bool compileHLSLShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer); + bool compileMetalShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer); bool compilePSSLShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer); bool compileSPIRVShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer); diff --git a/3rdparty/bgfx/tools/shaderc/shaderc_glsl.cpp b/3rdparty/bgfx/tools/shaderc/shaderc_glsl.cpp index 1547b3beab5..269c58fd07f 100644 --- a/3rdparty/bgfx/tools/shaderc/shaderc_glsl.cpp +++ b/3rdparty/bgfx/tools/shaderc/shaderc_glsl.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "shaderc.h" @@ -16,23 +16,15 @@ namespace bgfx { namespace glsl : (ch == 'c' ? kGlslOptShaderCompute : kGlslOptShaderVertex); glslopt_target target = kGlslTargetOpenGL; - switch (_version) + if(_version == BX_MAKEFOURCC('M', 'T', 'L', 0)) { - case BX_MAKEFOURCC('M', 'T', 'L', 0): target = kGlslTargetMetal; - break; - - case 2: - target = kGlslTargetOpenGLES20; - break; - - case 3: - target = kGlslTargetOpenGLES30; - break; - - default: + } else if(_version < 0x80000000) { target = kGlslTargetOpenGL; - break; + } + else { + _version &= ~0x80000000; + target = (_version >= 300) ? kGlslTargetOpenGLES30 : kGlslTargetOpenGLES20; } glslopt_ctx* ctx = glslopt_initialize(target); @@ -61,7 +53,7 @@ namespace bgfx { namespace glsl } printCode(_code.c_str(), line, start, end, column); - fprintf(stderr, "Error: %s\n", log); + bx::printf("Error: %s\n", log); glslopt_shader_delete(shader); glslopt_cleanup(ctx); return false; @@ -69,16 +61,23 @@ namespace bgfx { namespace glsl const char* optimizedShader = glslopt_get_output(shader); + std::string out; // Trim all directives. while ('#' == *optimizedShader) { optimizedShader = bx::strFindNl(optimizedShader).getPtr(); } + out.append(optimizedShader, strlen(optimizedShader)); + optimizedShader = out.c_str(); + { char* code = const_cast<char*>(optimizedShader); strReplace(code, "gl_FragDepthEXT", "gl_FragDepth"); + strReplace(code, "textureLodEXT", "texture2DLod"); + strReplace(code, "textureGradEXT", "texture2DGrad"); + strReplace(code, "texture2DLodARB", "texture2DLod"); strReplace(code, "texture2DLodEXT", "texture2DLod"); strReplace(code, "texture2DGradARB", "texture2DGrad"); @@ -114,6 +113,13 @@ namespace bgfx { namespace glsl { bx::StringView qualifier = nextWord(parse); + if (0 == bx::strCmp(qualifier, "precision", 9) ) + { + // skip precision + parse.set(eol.getPtr() + 1, parse.getTerm() ); + continue; + } + if (0 == bx::strCmp(qualifier, "attribute", 9) || 0 == bx::strCmp(qualifier, "varying", 7) || 0 == bx::strCmp(qualifier, "in", 2) @@ -125,6 +131,17 @@ namespace bgfx { namespace glsl continue; } + if (0 == bx::strCmp(qualifier, "flat", 4) + || 0 == bx::strCmp(qualifier, "smooth", 6) + || 0 == bx::strCmp(qualifier, "noperspective", 13) + || 0 == bx::strCmp(qualifier, "centroid", 8) + ) + { + // skip interpolation qualifiers + parse.set(eol.getPtr() + 1, parse.getTerm() ); + continue; + } + if (0 == bx::strCmp(parse, "tmpvar", 6) ) { // skip temporaries @@ -154,7 +171,9 @@ namespace bgfx { namespace glsl char uniformType[256]; - if (0 == bx::strCmp(typen, "sampler", 7) ) + if (0 == bx::strCmp(typen, "sampler", 7) + || 0 == bx::strCmp(typen, "isampler", 8) + || 0 == bx::strCmp(typen, "usampler", 8) ) { bx::strCopy(uniformType, BX_COUNTOF(uniformType), "int"); } @@ -188,6 +207,18 @@ namespace bgfx { namespace glsl un.num = num; un.regIndex = 0; un.regCount = num; + switch (un.type) + { + case UniformType::Mat3: + un.regCount *= 3; + break; + case UniformType::Mat4: + un.regCount *= 4; + break; + default: + break; + } + uniforms.push_back(un); } @@ -216,8 +247,9 @@ namespace bgfx { namespace glsl const char* typen = parse.getPtr(); char uniformType[256]; - parse = bx::strWord(parse).getPtr(); - bx::strCopy(uniformType, int32_t(parse.getPtr()-typen+1), typen); + parse = bx::strWord(parse); + bx::strCopy(uniformType, parse.getLength()+1, typen); + parse.set(parse.getPtr()+parse.getLength(),optShader.getTerm()); const char* name = bx::strLTrimSpace(parse).getPtr(); parse.set(name, optShader.getTerm() ); @@ -257,22 +289,81 @@ namespace bgfx { namespace glsl parse = eol.getPtr() + 1; } } + + bx::StringView mainEntry("xlatMtlShaderOutput xlatMtlMain ("); + parse = bx::strFind(optimizedShader, mainEntry); + end = parse; + if (!parse.isEmpty()) + { + parse.set(parse.getPtr() + mainEntry.getLength(), optShader.getTerm()); + end = bx::strFind(parse, "{"); + } + + while (parse.getPtr() < end.getPtr() + && !parse.isEmpty()) + { + parse.set(bx::strLTrimSpace(parse).getPtr(), optShader.getTerm()); + const bx::StringView textureNameMark("[[texture("); + const bx::StringView textureName = bx::strFind(parse, textureNameMark); + + if (!textureName.isEmpty()) + { + Uniform un; + un.type = nameToUniformTypeEnum("int"); // int for sampler + const char* varNameEnd = textureName.getPtr() - 1; + parse.set(parse.getPtr(), varNameEnd - 1); + const char* varNameBeg = parse.getPtr(); + for (int ii = parse.getLength() - 1; 0 <= ii; --ii) + { + if (varNameBeg[ii] == ' ') + { + parse.set(varNameBeg + ii + 1, varNameEnd); + break; + } + } + char uniformName[256]; + bx::strCopy(uniformName, parse.getLength() + 1, parse); + un.name = uniformName; + const char* regIndexBeg = textureName.getPtr() + textureNameMark.getLength(); + bx::StringView regIndex = bx::strFind(regIndexBeg, ")"); + + regIndex.set(regIndexBeg, regIndex.getPtr()); + uint32_t tmp; + bx::fromString(&tmp, regIndex); + un.regIndex = uint16_t(tmp); + un.num = 1; + un.regCount = 1; + + uniforms.push_back(un); + + parse = regIndex.getPtr() + 1; + } + else + { + parse = textureName; + } + } } + bx::ErrorAssert err; + uint16_t count = (uint16_t)uniforms.size(); - bx::write(_writer, count); + bx::write(_writer, count, &err); for (UniformArray::const_iterator it = uniforms.begin(); it != uniforms.end(); ++it) { const Uniform& un = *it; uint8_t nameSize = (uint8_t)un.name.size(); - bx::write(_writer, nameSize); - bx::write(_writer, un.name.c_str(), nameSize); + bx::write(_writer, nameSize, &err); + bx::write(_writer, un.name.c_str(), nameSize, &err); uint8_t uniformType = uint8_t(un.type); - bx::write(_writer, uniformType); - bx::write(_writer, un.num); - bx::write(_writer, un.regIndex); - bx::write(_writer, un.regCount); + bx::write(_writer, uniformType, &err); + bx::write(_writer, un.num, &err); + bx::write(_writer, un.regIndex, &err); + bx::write(_writer, un.regCount, &err); + bx::write(_writer, un.texComponent, &err); + bx::write(_writer, un.texDimension, &err); + bx::write(_writer, un.texFormat, &err); BX_TRACE("%s, %s, %d, %d, %d" , un.name.c_str() @@ -284,10 +375,10 @@ namespace bgfx { namespace glsl } uint32_t shaderSize = (uint32_t)bx::strLen(optimizedShader); - bx::write(_writer, shaderSize); - bx::write(_writer, optimizedShader, shaderSize); + bx::write(_writer, shaderSize, &err); + bx::write(_writer, optimizedShader, shaderSize, &err); uint8_t nul = 0; - bx::write(_writer, nul); + bx::write(_writer, nul, &err); if (_options.disasm ) { diff --git a/3rdparty/bgfx/tools/shaderc/shaderc_hlsl.cpp b/3rdparty/bgfx/tools/shaderc/shaderc_hlsl.cpp index 82b7c1e2068..7671c03f38b 100644 --- a/3rdparty/bgfx/tools/shaderc/shaderc_hlsl.cpp +++ b/3rdparty/bgfx/tools/shaderc/shaderc_hlsl.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "shaderc.h" @@ -107,7 +107,7 @@ namespace bgfx { namespace hlsl if (g_verbose) { - char filePath[MAX_PATH]; + char filePath[bx::kMaxFilePath]; GetModuleFileNameA( (HMODULE)s_d3dcompilerdll, filePath, sizeof(filePath) ); BX_TRACE("Loaded %s compiler (%s).", compiler->fileName, filePath); } @@ -115,7 +115,7 @@ namespace bgfx { namespace hlsl return compiler; } - fprintf(stderr, "Error: Unable to open D3DCompiler_*.dll shader compiler.\n"); + bx::printf("Error: Unable to open D3DCompiler_*.dll shader compiler.\n"); return NULL; } @@ -213,14 +213,14 @@ namespace bgfx { namespace hlsl static const UniformRemap s_uniformRemap[] = { - { UniformType::Int1, D3D_SVC_SCALAR, D3D_SVT_INT, 0, 0 }, + { UniformType::Sampler, D3D_SVC_SCALAR, D3D_SVT_INT, 0, 0 }, { UniformType::Vec4, D3D_SVC_VECTOR, D3D_SVT_FLOAT, 0, 0 }, { UniformType::Mat3, D3D_SVC_MATRIX_COLUMNS, D3D_SVT_FLOAT, 3, 3 }, { UniformType::Mat4, D3D_SVC_MATRIX_COLUMNS, D3D_SVT_FLOAT, 4, 4 }, - { UniformType::Int1, D3D_SVC_OBJECT, D3D_SVT_SAMPLER, 0, 0 }, - { UniformType::Int1, D3D_SVC_OBJECT, D3D_SVT_SAMPLER2D, 0, 0 }, - { UniformType::Int1, D3D_SVC_OBJECT, D3D_SVT_SAMPLER3D, 0, 0 }, - { UniformType::Int1, D3D_SVC_OBJECT, D3D_SVT_SAMPLERCUBE, 0, 0 }, + { UniformType::Sampler, D3D_SVC_OBJECT, D3D_SVT_SAMPLER, 0, 0 }, + { UniformType::Sampler, D3D_SVC_OBJECT, D3D_SVT_SAMPLER2D, 0, 0 }, + { UniformType::Sampler, D3D_SVC_OBJECT, D3D_SVT_SAMPLER3D, 0, 0 }, + { UniformType::Sampler, D3D_SVC_OBJECT, D3D_SVT_SAMPLERCUBE, 0, 0 }, }; UniformType::Enum findUniformType(const D3D11_SHADER_TYPE_DESC& constDesc) @@ -311,7 +311,7 @@ namespace bgfx { namespace hlsl uint32_t tableSize = (commentSize - 1) * 4; if (tableSize < sizeof(CTHeader) || header->Size != sizeof(CTHeader) ) { - fprintf(stderr, "Error: Invalid constant table data\n"); + bx::printf("Error: Invalid constant table data\n"); return false; } break; @@ -323,12 +323,13 @@ namespace bgfx { namespace hlsl if (!header) { - fprintf(stderr, "Error: Could not find constant table data\n"); + bx::printf("Error: Could not find constant table data\n"); return false; } const uint8_t* headerBytePtr = (const uint8_t*)header; const char* creator = (const char*)(headerBytePtr + header->Creator); + BX_UNUSED(creator); BX_TRACE("Creator: %s 0x%08x", creator, header->Version); BX_TRACE("Num constants: %d", header->Constants); @@ -366,7 +367,7 @@ namespace bgfx { namespace hlsl Uniform un; un.name = '$' == name[0] ? name + 1 : name; un.type = isSampler(desc.Type) - ? UniformType::Enum(BGFX_UNIFORM_SAMPLERBIT | type) + ? UniformType::Enum(kUniformSamplerBit | type) : type ; un.num = (uint8_t)ctType.Elements; @@ -390,7 +391,7 @@ namespace bgfx { namespace hlsl ); if (FAILED(hr) ) { - fprintf(stderr, "Error: D3DReflect failed 0x%08x\n", (uint32_t)hr); + bx::printf("Error: D3DReflect failed 0x%08x\n", (uint32_t)hr); return false; } @@ -398,7 +399,7 @@ namespace bgfx { namespace hlsl hr = reflect->GetDesc(&desc); if (FAILED(hr) ) { - fprintf(stderr, "Error: ID3D11ShaderReflection::GetDesc failed 0x%08x\n", (uint32_t)hr); + bx::printf("Error: ID3D11ShaderReflection::GetDesc failed 0x%08x\n", (uint32_t)hr); return false; } @@ -479,7 +480,7 @@ namespace bgfx { namespace hlsl un.type = uniformType; un.num = uint8_t(constDesc.Elements); un.regIndex = uint16_t(varDesc.StartOffset); - un.regCount = BX_ALIGN_16(varDesc.Size) / 16; + un.regCount = uint16_t(bx::alignUp(varDesc.Size, 16) / 16); _uniforms.push_back(un); BX_TRACE("\t%s, %d, size %d, flags 0x%08x, %d (used)" @@ -513,7 +514,7 @@ namespace bgfx { namespace hlsl hr = reflect->GetResourceBindingDesc(ii, &bindDesc); if (SUCCEEDED(hr) ) { - if (D3D_SIT_SAMPLER == bindDesc.Type) + if (D3D_SIT_SAMPLER == bindDesc.Type || D3D_SIT_TEXTURE == bindDesc.Type) { BX_TRACE("\t%s, %d, %d, %d" , bindDesc.Name @@ -523,17 +524,24 @@ namespace bgfx { namespace hlsl ); bx::StringView end = bx::strFind(bindDesc.Name, "Sampler"); - if (!end.isEmpty() ) + if (end.isEmpty()) + end = bx::strFind(bindDesc.Name, "Texture"); + + if (!end.isEmpty()) { Uniform un; un.name.assign(bindDesc.Name, (end.getPtr() - bindDesc.Name) ); - un.type = UniformType::Enum(BGFX_UNIFORM_SAMPLERBIT | UniformType::Int1); + un.type = UniformType::Enum(kUniformSamplerBit | UniformType::Sampler); un.num = 1; un.regIndex = uint16_t(bindDesc.BindPoint); un.regCount = uint16_t(bindDesc.BindCount); _uniforms.push_back(un); } } + else + { + BX_TRACE("\t%s, unknown bind data", bindDesc.Name); + } } } @@ -551,7 +559,7 @@ namespace bgfx { namespace hlsl if (profile[0] == '\0') { - fprintf(stderr, "Error: Shader profile must be specified.\n"); + bx::printf("Error: Shader profile must be specified.\n"); return false; } @@ -602,6 +610,8 @@ namespace bgfx { namespace hlsl writeFile(hlslfp.c_str(), _code.c_str(), (int32_t)_code.size() ); } + bx::ErrorAssert err; + HRESULT hr = D3DCompile(_code.c_str() , _code.size() , hlslfp.c_str() @@ -646,7 +656,7 @@ namespace bgfx { namespace hlsl } printCode(_code.c_str(), line, start, end, column); - fprintf(stderr, "Error: D3DCompile failed 0x%08x %s\n", (uint32_t)hr, log); + bx::printf("Error: D3DCompile failed 0x%08x %s\n", (uint32_t)hr, log); errorMsg->Release(); return false; } @@ -656,11 +666,11 @@ namespace bgfx { namespace hlsl uint16_t attrs[bgfx::Attrib::Count]; uint16_t size = 0; - if (_version == 9) + if (_version < 400) { if (!getReflectionDataD3D9(code, uniforms) ) { - fprintf(stderr, "Error: Unable to get D3D9 reflection data.\n"); + bx::printf("Error: Unable to get D3D9 reflection data.\n"); goto error; } } @@ -669,49 +679,51 @@ namespace bgfx { namespace hlsl UniformNameList unusedUniforms; if (!getReflectionDataD3D11(code, profile[0] == 'v', uniforms, numAttrs, attrs, size, unusedUniforms) ) { - fprintf(stderr, "Error: Unable to get D3D11 reflection data.\n"); + bx::printf("Error: Unable to get D3D11 reflection data.\n"); goto error; } if (_firstPass && unusedUniforms.size() > 0) { - const size_t strLength = bx::strLen("uniform"); - // first time through, we just find unused uniforms and get rid of them std::string output; - bx::Error err; - LineReader reader(_code.c_str() ); - while (err.isOk() ) + bx::LineReader reader(_code.c_str() ); + while (!reader.isDone() ) { - char str[4096]; - int32_t len = bx::read(&reader, str, BX_COUNTOF(str), &err); - if (err.isOk() ) - { - std::string strLine(str, len); + bx::StringView strLine = reader.next(); + bool found = false; - for (UniformNameList::iterator it = unusedUniforms.begin(), itEnd = unusedUniforms.end(); it != itEnd; ++it) + for (UniformNameList::iterator it = unusedUniforms.begin(), itEnd = unusedUniforms.end(); it != itEnd; ++it) + { + bx::StringView str = strFind(strLine, "uniform "); + if (str.isEmpty() ) { - size_t index = strLine.find("uniform "); - if (index == std::string::npos) - { - continue; - } + continue; + } - // matching lines like: uniform u_name; - // we want to replace "uniform" with "static" so that it's no longer - // included in the uniform blob that the application must upload - // we can't just remove them, because unused functions might still reference - // them and cause a compile error when they're gone - if (!bx::findIdentifierMatch(strLine.c_str(), it->c_str() ).isEmpty() ) - { - strLine = strLine.replace(index, strLength, "static"); - unusedUniforms.erase(it); - break; - } + // matching lines like: uniform u_name; + // we want to replace "uniform" with "static" so that it's no longer + // included in the uniform blob that the application must upload + // we can't just remove them, because unused functions might still reference + // them and cause a compile error when they're gone + if (!bx::findIdentifierMatch(strLine, it->c_str() ).isEmpty() ) + { + output.append(strLine.getPtr(), str.getPtr() ); + output += "static "; + output.append(str.getTerm(), strLine.getTerm() ); + output += "\n"; + found = true; + + unusedUniforms.erase(it); + break; } + } - output += strLine; + if (!found) + { + output.append(strLine.getPtr(), strLine.getTerm() ); + output += "\n"; } } @@ -722,24 +734,27 @@ namespace bgfx { namespace hlsl { uint16_t count = (uint16_t)uniforms.size(); - bx::write(_writer, count); + bx::write(_writer, count, &err); - uint32_t fragmentBit = profile[0] == 'p' ? BGFX_UNIFORM_FRAGMENTBIT : 0; + uint32_t fragmentBit = profile[0] == 'p' ? kUniformFragmentBit : 0; for (UniformArray::const_iterator it = uniforms.begin(); it != uniforms.end(); ++it) { const Uniform& un = *it; uint8_t nameSize = (uint8_t)un.name.size(); - bx::write(_writer, nameSize); - bx::write(_writer, un.name.c_str(), nameSize); + bx::write(_writer, nameSize, &err); + bx::write(_writer, un.name.c_str(), nameSize, &err); uint8_t type = uint8_t(un.type | fragmentBit); - bx::write(_writer, type); - bx::write(_writer, un.num); - bx::write(_writer, un.regIndex); - bx::write(_writer, un.regCount); + bx::write(_writer, type, &err); + bx::write(_writer, un.num, &err); + bx::write(_writer, un.regIndex, &err); + bx::write(_writer, un.regCount, &err); + bx::write(_writer, un.texComponent, &err); + bx::write(_writer, un.texDimension, &err); + bx::write(_writer, un.texFormat, &err); BX_TRACE("%s, %s, %d, %d, %d" , un.name.c_str() - , getUniformTypeName(un.type) + , getUniformTypeName(UniformType::Enum(un.type & ~kUniformMask)) , un.num , un.regIndex , un.regCount @@ -765,18 +780,18 @@ namespace bgfx { namespace hlsl { uint32_t shaderSize = uint32_t(code->GetBufferSize() ); - bx::write(_writer, shaderSize); - bx::write(_writer, code->GetBufferPointer(), shaderSize); + bx::write(_writer, shaderSize, &err); + bx::write(_writer, code->GetBufferPointer(), shaderSize, &err); uint8_t nul = 0; - bx::write(_writer, nul); + bx::write(_writer, nul, &err); } - if (_version > 9) + if (_version >= 400) { - bx::write(_writer, numAttrs); - bx::write(_writer, attrs, numAttrs*sizeof(uint16_t) ); + bx::write(_writer, numAttrs, &err); + bx::write(_writer, attrs, numAttrs*sizeof(uint16_t), &err); - bx::write(_writer, size); + bx::write(_writer, size, &err); } if (_options.disasm ) @@ -827,7 +842,7 @@ namespace bgfx bool compileHLSLShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer) { BX_UNUSED(_options, _version, _code, _writer); - fprintf(stderr, "HLSL compiler is not supported on this platform.\n"); + bx::printf("HLSL compiler is not supported on this platform.\n"); return false; } diff --git a/3rdparty/bgfx/tools/shaderc/shaderc_metal.cpp b/3rdparty/bgfx/tools/shaderc/shaderc_metal.cpp new file mode 100644 index 00000000000..edb3e6a5a45 --- /dev/null +++ b/3rdparty/bgfx/tools/shaderc/shaderc_metal.cpp @@ -0,0 +1,700 @@ +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "shaderc.h" + +BX_PRAGMA_DIAGNOSTIC_PUSH() +BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4100) // error C4100: 'inclusionDepth' : unreferenced formal parameter +BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4265) // error C4265: 'spv::spirvbin_t': class has virtual functions, but destructor is not virtual +BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wattributes") // warning: attribute ignored +BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wdeprecated-declarations") // warning: ‘MSLVertexAttr’ is deprecated +BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wtype-limits") // warning: comparison of unsigned expression in ‘< 0’ is always false +BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wshadow") // warning: declaration of 'userData' shadows a member of 'glslang::TShader::Includer::IncludeResult' +#define ENABLE_OPT 1 +#include <ShaderLang.h> +#include <ResourceLimits.h> +#include <SPIRV/SPVRemapper.h> +#include <SPIRV/GlslangToSpv.h> +#define SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS +#include <spirv_msl.hpp> +#include <spirv_reflect.hpp> +#include <spirv-tools/optimizer.hpp> +BX_PRAGMA_DIAGNOSTIC_POP() + +namespace bgfx +{ + struct TinyStlAllocator + { + static void* static_allocate(size_t _bytes); + static void static_deallocate(void* _ptr, size_t /*_bytes*/); + }; + +} // namespace bgfx + +#define TINYSTL_ALLOCATOR bgfx::TinyStlAllocator +#include <tinystl/allocator.h> +#include <tinystl/string.h> +#include <tinystl/unordered_map.h> +#include <tinystl/vector.h> +namespace stl = tinystl; + +#include "../../src/shader.h" + +namespace bgfx { namespace metal +{ + const TBuiltInResource resourceLimits = + { + 32, // MaxLights + 6, // MaxClipPlanes + 32, // MaxTextureUnits + 32, // MaxTextureCoords + 64, // MaxVertexAttribs + 4096, // MaxVertexUniformComponents + 64, // MaxVaryingFloats + 32, // MaxVertexTextureImageUnits + 80, // MaxCombinedTextureImageUnits + 32, // MaxTextureImageUnits + 4096, // MaxFragmentUniformComponents + 32, // MaxDrawBuffers + 128, // MaxVertexUniformVectors + 8, // MaxVaryingVectors + 16, // MaxFragmentUniformVectors + 16, // MaxVertexOutputVectors + 15, // MaxFragmentInputVectors + -8, // MinProgramTexelOffset + 7, // MaxProgramTexelOffset + 8, // MaxClipDistances + 65535, // MaxComputeWorkGroupCountX + 65535, // MaxComputeWorkGroupCountY + 65535, // MaxComputeWorkGroupCountZ + 1024, // MaxComputeWorkGroupSizeX + 1024, // MaxComputeWorkGroupSizeY + 64, // MaxComputeWorkGroupSizeZ + 1024, // MaxComputeUniformComponents + 16, // MaxComputeTextureImageUnits + 8, // MaxComputeImageUniforms + 8, // MaxComputeAtomicCounters + 1, // MaxComputeAtomicCounterBuffers + 60, // MaxVaryingComponents + 64, // MaxVertexOutputComponents + 64, // MaxGeometryInputComponents + 128, // MaxGeometryOutputComponents + 128, // MaxFragmentInputComponents + 8, // MaxImageUnits + 8, // MaxCombinedImageUnitsAndFragmentOutputs + 8, // MaxCombinedShaderOutputResources + 0, // MaxImageSamples + 0, // MaxVertexImageUniforms + 0, // MaxTessControlImageUniforms + 0, // MaxTessEvaluationImageUniforms + 0, // MaxGeometryImageUniforms + 8, // MaxFragmentImageUniforms + 8, // MaxCombinedImageUniforms + 16, // MaxGeometryTextureImageUnits + 256, // MaxGeometryOutputVertices + 1024, // MaxGeometryTotalOutputComponents + 1024, // MaxGeometryUniformComponents + 64, // MaxGeometryVaryingComponents + 128, // MaxTessControlInputComponents + 128, // MaxTessControlOutputComponents + 16, // MaxTessControlTextureImageUnits + 1024, // MaxTessControlUniformComponents + 4096, // MaxTessControlTotalOutputComponents + 128, // MaxTessEvaluationInputComponents + 128, // MaxTessEvaluationOutputComponents + 16, // MaxTessEvaluationTextureImageUnits + 1024, // MaxTessEvaluationUniformComponents + 120, // MaxTessPatchComponents + 32, // MaxPatchVertices + 64, // MaxTessGenLevel + 16, // MaxViewports + 0, // MaxVertexAtomicCounters + 0, // MaxTessControlAtomicCounters + 0, // MaxTessEvaluationAtomicCounters + 0, // MaxGeometryAtomicCounters + 8, // MaxFragmentAtomicCounters + 8, // MaxCombinedAtomicCounters + 1, // MaxAtomicCounterBindings + 0, // MaxVertexAtomicCounterBuffers + 0, // MaxTessControlAtomicCounterBuffers + 0, // MaxTessEvaluationAtomicCounterBuffers + 0, // MaxGeometryAtomicCounterBuffers + 1, // MaxFragmentAtomicCounterBuffers + 1, // MaxCombinedAtomicCounterBuffers + 16384, // MaxAtomicCounterBufferSize + 4, // MaxTransformFeedbackBuffers + 64, // MaxTransformFeedbackInterleavedComponents + 8, // MaxCullDistances + 8, // MaxCombinedClipAndCullDistances + 4, // MaxSamples + 0, // maxMeshOutputVerticesNV + 0, // maxMeshOutputPrimitivesNV + 0, // maxMeshWorkGroupSizeX_NV + 0, // maxMeshWorkGroupSizeY_NV + 0, // maxMeshWorkGroupSizeZ_NV + 0, // maxTaskWorkGroupSizeX_NV + 0, // maxTaskWorkGroupSizeY_NV + 0, // maxTaskWorkGroupSizeZ_NV + 0, // maxMeshViewCountNV + 0, // maxMeshOutputVerticesEXT + 0, // maxMeshOutputPrimitivesEXT + 0, // maxMeshWorkGroupSizeX_EXT + 0, // maxMeshWorkGroupSizeY_EXT + 0, // maxMeshWorkGroupSizeZ_EXT + 0, // maxTaskWorkGroupSizeX_EXT + 0, // maxTaskWorkGroupSizeY_EXT + 0, // maxTaskWorkGroupSizeZ_EXT + 0, // maxMeshViewCountEXT + 0, // maxDualSourceDrawBuffersEXT + + { // limits + true, // nonInductiveForLoops + true, // whileLoops + true, // doWhileLoops + true, // generalUniformIndexing + true, // generalAttributeMatrixVectorIndexing + true, // generalVaryingIndexing + true, // generalSamplerIndexing + true, // generalVariableIndexing + true, // generalConstantMatrixVectorIndexing + }, + }; + + static EShLanguage getLang(char _p) + { + switch (_p) + { + case 'c': return EShLangCompute; + case 'f': return EShLangFragment; + case 'v': return EShLangVertex; + default: return EShLangCount; + } + } + + static const char* s_attribName[] = + { + "a_position", + "a_normal", + "a_tangent", + "a_bitangent", + "a_color0", + "a_color1", + "a_color2", + "a_color3", + "a_indices", + "a_weight", + "a_texcoord0", + "a_texcoord1", + "a_texcoord2", + "a_texcoord3", + "a_texcoord4", + "a_texcoord5", + "a_texcoord6", + "a_texcoord7", + }; + BX_STATIC_ASSERT(bgfx::Attrib::Count == BX_COUNTOF(s_attribName) ); + + bgfx::Attrib::Enum toAttribEnum(const bx::StringView& _name) + { + for (uint8_t ii = 0; ii < Attrib::Count; ++ii) + { + if (0 == bx::strCmp(s_attribName[ii], _name) ) + { + return bgfx::Attrib::Enum(ii); + } + } + + return bgfx::Attrib::Count; + } + + static const char* s_samplerTypes[] = + { + "BgfxSampler2D", + "BgfxISampler2D", + "BgfxUSampler2D", + "BgfxSampler2DArray", + "BgfxSampler2DShadow", + "BgfxSampler2DArrayShadow", + "BgfxSampler3D", + "BgfxISampler3D", + "BgfxUSampler3D", + "BgfxSamplerCube", + "BgfxSamplerCubeShadow", + "BgfxSampler2DMS", + }; + + static uint16_t writeUniformArray(bx::WriterI* _writer, const UniformArray& uniforms, bool isFragmentShader) + { + uint16_t size = 0; + + bx::ErrorAssert err; + + uint16_t count = uint16_t(uniforms.size()); + bx::write(_writer, count, &err); + + uint32_t fragmentBit = isFragmentShader ? kUniformFragmentBit : 0; + for (uint16_t ii = 0; ii < count; ++ii) + { + const Uniform& un = uniforms[ii]; + + size += un.regCount*16; + + uint8_t nameSize = (uint8_t)un.name.size(); + bx::write(_writer, nameSize, &err); + bx::write(_writer, un.name.c_str(), nameSize, &err); + bx::write(_writer, uint8_t(un.type | fragmentBit), &err); + bx::write(_writer, un.num, &err); + bx::write(_writer, un.regIndex, &err); + bx::write(_writer, un.regCount, &err); + bx::write(_writer, un.texComponent, &err); + bx::write(_writer, un.texDimension, &err); + bx::write(_writer, un.texFormat, &err); + + BX_TRACE("%s, %s, %d, %d, %d" + , un.name.c_str() + , getUniformTypeName(un.type) + , un.num + , un.regIndex + , un.regCount + ); + } + return size; + } + + static bool compile(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer, bool _firstPass) + { + BX_UNUSED(_version); + + glslang::InitializeProcess(); + + EShLanguage stage = getLang(_options.shaderType); + if (EShLangCount == stage) + { + bx::printf("Error: Unknown shader type '%c'.\n", _options.shaderType); + return false; + } + + glslang::TProgram* program = new glslang::TProgram; + glslang::TShader* shader = new glslang::TShader(stage); + + EShMessages messages = EShMessages(0 + | EShMsgDefault + | EShMsgReadHlsl + | EShMsgVulkanRules + | EShMsgSpvRules + ); + + shader->setEntryPoint("main"); + shader->setAutoMapBindings(true); + const int textureBindingOffset = 16; + shader->setShiftBinding(glslang::EResTexture, textureBindingOffset); + shader->setShiftBinding(glslang::EResSampler, textureBindingOffset); + shader->setShiftBinding(glslang::EResImage, textureBindingOffset); + + const char* shaderStrings[] = { _code.c_str() }; + shader->setStrings( + shaderStrings + , BX_COUNTOF(shaderStrings) + ); + bool compiled = shader->parse(&resourceLimits + , 110 + , false + , messages + ); + bool linked = false; + bool validated = true; + + if (!compiled) + { + const char* log = shader->getInfoLog(); + if (NULL != log) + { + int32_t source = 0; + int32_t line = 0; + int32_t column = 0; + int32_t start = 0; + int32_t end = INT32_MAX; + + bx::StringView err = bx::strFind(log, "ERROR:"); + + bool found = false; + + if (!err.isEmpty() ) + { + found = 2 == sscanf(err.getPtr(), "ERROR: %u:%u: '", &source, &line); + if (found) + { + ++line; + } + } + + if (found) + { + start = bx::uint32_imax(1, line-10); + end = start + 20; + } + + printCode(_code.c_str(), line, start, end, column); + + bx::printf("%s\n", log); + } + } + else + { + program->addShader(shader); + linked = true + && program->link(messages) + && program->mapIO() + ; + + if (!linked) + { + const char* log = program->getInfoLog(); + if (NULL != log) + { + bx::printf("%s\n", log); + } + } + else + { + program->buildReflection(); + + if (_firstPass) + { + // first time through, we just find unused uniforms and get rid of them + std::string output; + bx::Error err; + bx::LineReader reader(_code.c_str() ); + while (!reader.isDone() ) + { + bx::StringView strLine = reader.next(); + bx::StringView str = strFind(strLine, "uniform "); + + if (!str.isEmpty() ) + { + // If the line declares a uniform, merge all next + // lines until we encounter a semicolon. + bx::StringView lineEnd = strFind(strLine, ";"); + while (lineEnd.isEmpty() && !reader.isDone()) { + bx::StringView nextLine = reader.next(); + strLine.set(strLine.getPtr(), nextLine.getTerm()); + lineEnd = strFind(nextLine, ";"); + } + + bool found = false; + + for (uint32_t ii = 0; ii < BX_COUNTOF(s_samplerTypes); ++ii) + { + if (!bx::findIdentifierMatch(strLine, s_samplerTypes[ii]).isEmpty() ) + { + found = true; + break; + } + } + + if (!found) + { + for (int32_t ii = 0, num = program->getNumLiveUniformVariables(); ii < num; ++ii) + { + // matching lines like: uniform u_name; + // we want to replace "uniform" with "static" so that it's no longer + // included in the uniform blob that the application must upload + // we can't just remove them, because unused functions might still reference + // them and cause a compile error when they're gone + if (!bx::findIdentifierMatch(strLine, program->getUniformName(ii) ).isEmpty() ) + { + found = true; + break; + } + } + } + + if (!found) + { + output.append(strLine.getPtr(), str.getPtr() ); + output += "static "; + output.append(str.getTerm(), strLine.getTerm() ); + output += "\n"; + } + else + { + output.append(strLine.getPtr(), strLine.getTerm() ); + output += "\n"; + } + } + else + { + output.append(strLine.getPtr(), strLine.getTerm() ); + output += "\n"; + } + } + + // recompile with the unused uniforms converted to statics + delete program; + delete shader; + return compile(_options, _version, output.c_str(), _writer, false); + } + + UniformArray uniforms; + + { + uint16_t count = (uint16_t)program->getNumLiveUniformVariables(); + + for (uint16_t ii = 0; ii < count; ++ii) + { + Uniform un; + un.name = program->getUniformName(ii); + + if (bx::hasSuffix(un.name.c_str(), ".@data") ) + { + continue; + } + + un.num = uint8_t(program->getUniformArraySize(ii) ); + const uint32_t offset = program->getUniformBufferOffset(ii); + un.regIndex = uint16_t(offset); + un.regCount = un.num; + + switch (program->getUniformType(ii) ) + { + case 0x1404: // GL_INT: + un.type = UniformType::Sampler; + break; + case 0x8B52: // GL_FLOAT_VEC4: + un.type = UniformType::Vec4; + break; + case 0x8B5B: // GL_FLOAT_MAT3: + un.type = UniformType::Mat3; + un.regCount *= 3; + break; + case 0x8B5C: // GL_FLOAT_MAT4: + un.type = UniformType::Mat4; + un.regCount *= 4; + break; + default: + un.type = UniformType::End; + break; + } + + uniforms.push_back(un); + } + } + if (g_verbose) + { + program->dumpReflection(); + } + + BX_UNUSED(spv::MemorySemanticsAllMemory); + + glslang::TIntermediate* intermediate = program->getIntermediate(stage); + std::vector<uint32_t> spirv; + + glslang::SpvOptions options; + options.disableOptimizer = false; + + glslang::GlslangToSpv(*intermediate, spirv, &options); + + spvtools::Optimizer opt(SPV_ENV_VULKAN_1_0); + + auto print_msg_to_stderr = []( + spv_message_level_t + , const char* + , const spv_position_t& + , const char* m + ) + { + bx::printf("Error: %s\n", m); + }; + + opt.SetMessageConsumer(print_msg_to_stderr); + + opt.RegisterLegalizationPasses(); + + spvtools::ValidatorOptions validatorOptions; + validatorOptions.SetBeforeHlslLegalization(true); + + if (!opt.Run( + spirv.data() + , spirv.size() + , &spirv + , validatorOptions + , false + ) ) + { + compiled = false; + } + else + { + if (g_verbose) + { + glslang::SpirvToolsDisassemble(std::cout, spirv, SPV_ENV_VULKAN_1_0); + } + + spirv_cross::CompilerReflection refl(spirv); + spirv_cross::ShaderResources resourcesrefl = refl.get_shader_resources(); + + // Loop through the separate_images, and extract the uniform names: + for (auto &resource : resourcesrefl.separate_images) + { + std::string name = refl.get_name(resource.id); + if (name.size() > 7 && 0 == bx::strCmp(name.c_str() + name.length() - 7, "Texture")) + { + name = name.substr(0, name.length() - 7); + } + + Uniform un; + un.name = name; + un.type = UniformType::Sampler; + + un.num = 0; // needed? + un.regIndex = 0; // needed? + un.regCount = 0; // needed? + + uniforms.push_back(un); + } + uint16_t size = writeUniformArray( _writer, uniforms, _options.shaderType == 'f'); + + bx::Error err; + + if (_version == BX_MAKEFOURCC('M', 'T', 'L', 0) ) + { + spirv_cross::CompilerMSL msl(std::move(spirv) ); + + auto executionModel = msl.get_execution_model(); + spirv_cross::MSLResourceBinding newBinding; + newBinding.stage = executionModel; + + spirv_cross::ShaderResources resources = msl.get_shader_resources(); + + spirv_cross::SmallVector<spirv_cross::EntryPoint> entryPoints = msl.get_entry_points_and_stages(); + if (!entryPoints.empty() ) + msl.rename_entry_point(entryPoints[0].name, "xlatMtlMain", entryPoints[0].execution_model); + + for (auto &resource : resources.uniform_buffers) + { + unsigned set = msl.get_decoration( resource.id, spv::DecorationDescriptorSet ); + unsigned binding = msl.get_decoration( resource.id, spv::DecorationBinding ); + newBinding.desc_set = set; + newBinding.binding = binding; + newBinding.msl_buffer = 0; + msl.add_msl_resource_binding( newBinding ); + + msl.set_name(resource.id, "_mtl_u"); + } + + for (auto &resource : resources.storage_buffers) + { + unsigned set = msl.get_decoration( resource.id, spv::DecorationDescriptorSet ); + unsigned binding = msl.get_decoration( resource.id, spv::DecorationBinding ); + newBinding.desc_set = set; + newBinding.binding = binding; + newBinding.msl_buffer = binding + 1; + msl.add_msl_resource_binding( newBinding ); + } + + for (auto &resource : resources.separate_samplers) + { + unsigned set = msl.get_decoration( resource.id, spv::DecorationDescriptorSet ); + unsigned binding = msl.get_decoration( resource.id, spv::DecorationBinding ); + newBinding.desc_set = set; + newBinding.binding = binding; + newBinding.msl_texture = binding - textureBindingOffset; + newBinding.msl_sampler = binding - textureBindingOffset; + msl.add_msl_resource_binding( newBinding ); + } + + for (auto &resource : resources.separate_images) + { + std::string name = msl.get_name(resource.id); + if (name.size() > 7 && 0 == bx::strCmp(name.c_str() + name.length() - 7, "Texture") ) + { + msl.set_name(resource.id, name.substr(0, name.length() - 7) ); + } + + unsigned set = msl.get_decoration( resource.id, spv::DecorationDescriptorSet ); + unsigned binding = msl.get_decoration( resource.id, spv::DecorationBinding ); + newBinding.desc_set = set; + newBinding.binding = binding; + newBinding.msl_texture = binding - textureBindingOffset; + newBinding.msl_sampler = binding - textureBindingOffset; + msl.add_msl_resource_binding( newBinding ); + } + + for (auto &resource : resources.storage_images) + { + std::string name = msl.get_name(resource.id); + + unsigned set = msl.get_decoration( resource.id, spv::DecorationDescriptorSet ); + unsigned binding = msl.get_decoration( resource.id, spv::DecorationBinding ); + newBinding.desc_set = set; + newBinding.binding = binding; + newBinding.msl_texture = binding - textureBindingOffset; + newBinding.msl_sampler = binding - textureBindingOffset; + msl.add_msl_resource_binding( newBinding ); + } + + std::string source = msl.compile(); + + if ('c' == _options.shaderType) + { + for (int i = 0; i < 3; ++i) + { + uint16_t dim = (uint16_t)msl.get_execution_mode_argument(spv::ExecutionMode::ExecutionModeLocalSize, i); + bx::write(_writer, dim, &err); + } + } + + uint32_t shaderSize = (uint32_t)source.size(); + bx::write(_writer, shaderSize, &err); + bx::write(_writer, source.c_str(), shaderSize, &err); + uint8_t nul = 0; + bx::write(_writer, nul, &err); + } + else + { + uint32_t shaderSize = (uint32_t)spirv.size() * sizeof(uint32_t); + bx::write(_writer, shaderSize, &err); + bx::write(_writer, spirv.data(), shaderSize, &err); + uint8_t nul = 0; + bx::write(_writer, nul, &err); + } + // + const uint8_t numAttr = (uint8_t)program->getNumLiveAttributes(); + bx::write(_writer, numAttr, &err); + + for (uint8_t ii = 0; ii < numAttr; ++ii) + { + bgfx::Attrib::Enum attr = toAttribEnum(program->getAttributeName(ii) ); + if (bgfx::Attrib::Count != attr) + { + bx::write(_writer, bgfx::attribToId(attr), &err); + } + else + { + bx::write(_writer, uint16_t(UINT16_MAX), &err); + } + } + + bx::write(_writer, size, &err); + } + } + } + + delete program; + delete shader; + + glslang::FinalizeProcess(); + + return compiled && linked && validated; + } + +} // namespace metal + + bool compileMetalShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer) + { + return metal::compile(_options, _version, _code, _writer, true); + } + +} // namespace bgfx diff --git a/3rdparty/bgfx/tools/shaderc/shaderc_pssl.cpp b/3rdparty/bgfx/tools/shaderc/shaderc_pssl.cpp index 1b103624ae7..20e45bb215e 100644 --- a/3rdparty/bgfx/tools/shaderc/shaderc_pssl.cpp +++ b/3rdparty/bgfx/tools/shaderc/shaderc_pssl.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "shaderc.h" @@ -10,7 +10,7 @@ namespace bgfx bool compilePSSLShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer) { BX_UNUSED(_options, _version, _code, _writer); - fprintf(stderr, "PSSL compiler is not supported.\n"); + bx::printf("PSSL compiler is not supported.\n"); return false; } diff --git a/3rdparty/bgfx/tools/shaderc/shaderc_spirv.cpp b/3rdparty/bgfx/tools/shaderc/shaderc_spirv.cpp index 1f2e165de0b..657cb1015cf 100644 --- a/3rdparty/bgfx/tools/shaderc/shaderc_spirv.cpp +++ b/3rdparty/bgfx/tools/shaderc/shaderc_spirv.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "shaderc.h" @@ -8,12 +8,20 @@ BX_PRAGMA_DIAGNOSTIC_PUSH() BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4100) // error C4100: 'inclusionDepth' : unreferenced formal parameter BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4265) // error C4265: 'spv::spirvbin_t': class has virtual functions, but destructor is not virtual +BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wattributes") // warning: attribute ignored +BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wdeprecated-declarations") // warning: ‘MSLVertexAttr’ is deprecated +BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wtype-limits") // warning: comparison of unsigned expression in ‘< 0’ is always false BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wshadow") // warning: declaration of 'userData' shadows a member of 'glslang::TShader::Includer::IncludeResult' #define ENABLE_OPT 1 #include <ShaderLang.h> #include <ResourceLimits.h> #include <SPIRV/SPVRemapper.h> #include <SPIRV/GlslangToSpv.h> +#include <webgpu/webgpu_cpp.h> +#define SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS +#include <spirv_msl.hpp> +#include <spirv_reflect.hpp> +#include <spirv-tools/optimizer.hpp> BX_PRAGMA_DIAGNOSTIC_POP() namespace bgfx @@ -48,7 +56,9 @@ namespace bgfx #include <tinystl/vector.h> namespace stl = tinystl; +#include "../../src/shader.h" #include "../../src/shader_spirv.h" +#include "../../3rdparty/khronos/vulkan-local/vulkan.h" namespace bgfx { namespace spirv { @@ -137,15 +147,25 @@ namespace bgfx { namespace spirv 8, // MaxCullDistances 8, // MaxCombinedClipAndCullDistances 4, // MaxSamples - 0, // maxMeshOutputVerticesNV; - 0, // maxMeshOutputPrimitivesNV; - 0, // maxMeshWorkGroupSizeX_NV; - 0, // maxMeshWorkGroupSizeY_NV; - 0, // maxMeshWorkGroupSizeZ_NV; - 0, // maxTaskWorkGroupSizeX_NV; - 0, // maxTaskWorkGroupSizeY_NV; - 0, // maxTaskWorkGroupSizeZ_NV; + 0, // maxMeshOutputVerticesNV + 0, // maxMeshOutputPrimitivesNV + 0, // maxMeshWorkGroupSizeX_NV + 0, // maxMeshWorkGroupSizeY_NV + 0, // maxMeshWorkGroupSizeZ_NV + 0, // maxTaskWorkGroupSizeX_NV + 0, // maxTaskWorkGroupSizeY_NV + 0, // maxTaskWorkGroupSizeZ_NV 0, // maxMeshViewCountNV + 0, // maxMeshOutputVerticesEXT + 0, // maxMeshOutputPrimitivesEXT + 0, // maxMeshWorkGroupSizeX_EXT + 0, // maxMeshWorkGroupSizeY_EXT + 0, // maxMeshWorkGroupSizeZ_EXT + 0, // maxTaskWorkGroupSizeX_EXT + 0, // maxTaskWorkGroupSizeY_EXT + 0, // maxTaskWorkGroupSizeZ_EXT + 0, // maxMeshViewCountEXT + 0, // maxDualSourceDrawBuffersEXT { // limits true, // nonInductiveForLoops @@ -160,373 +180,93 @@ namespace bgfx { namespace spirv }, }; - bool printAsm(uint32_t _offset, const SpvInstruction& _instruction, void* _userData) + bgfx::TextureComponentType::Enum SpirvCrossBaseTypeToFormatType(spirv_cross::SPIRType::BaseType spirvBaseType, bool depth) { - BX_UNUSED(_userData); - char temp[512]; - toString(temp, sizeof(temp), _instruction); - BX_TRACE("%5d: %s", _offset, temp); - return true; - } - - struct SpvReflection - { - struct TypeId - { - enum Enum - { - Void, - Bool, - Int32, - Int64, - Uint32, - Uint64, - Float, - Double, - - Vector, - Matrix, - - Count - }; - - TypeId() - : baseType(Enum::Count) - , type(Enum::Count) - , numComponents(0) - { - } - - Enum baseType; - Enum type; - uint32_t numComponents; - - stl::string toString() - { - stl::string result; - - switch (type) - { - case Float: - result.append("float"); - break; - - case Vector: - bx::stringPrintf(result, "vec%d" - , numComponents - ); - break; - - case Matrix: - bx::stringPrintf(result, "mat%d" - , numComponents - ); - - default: - break; - } - - return result; - } - }; - - struct Id - { - struct Variable - { - Variable() - : decoration(SpvDecoration::Count) - , builtin(SpvBuiltin::Count) - , storageClass(SpvStorageClass::Count) - , location(UINT32_MAX) - , offset(UINT32_MAX) - , type(UINT32_MAX) - { - } - - stl::string name; - SpvDecoration::Enum decoration; - SpvBuiltin::Enum builtin; - SpvStorageClass::Enum storageClass; - uint32_t location; - uint32_t offset; - uint32_t type; - }; - - typedef stl::vector<Variable> MemberArray; - - Variable var; - MemberArray members; - }; - - typedef stl::unordered_map<uint32_t, TypeId> TypeIdMap; - typedef stl::unordered_map<uint32_t, Id> IdMap; - - TypeIdMap typeIdMap; - IdMap idMap; - - stl::string getTypeName(uint32_t _typeId) - { - return getTypeId(_typeId).toString(); - } - - Id& getId(uint32_t _id) - { - IdMap::iterator it = idMap.find(_id); - if (it == idMap.end() ) - { - Id id; - stl::pair<IdMap::iterator, bool> result = idMap.insert(stl::make_pair(_id, id) ); - it = result.first; - } - - return it->second; - } - - Id::Variable& get(uint32_t _id, uint32_t _idx) - { - Id& id = getId(_id); - id.members.resize(bx::uint32_max(_idx+1, uint32_t(id.members.size() ) ) ); - return id.members[_idx]; - } - - TypeId& getTypeId(uint32_t _id) - { - TypeIdMap::iterator it = typeIdMap.find(_id); - if (it == typeIdMap.end() ) - { - TypeId id; - stl::pair<TypeIdMap::iterator, bool> result = typeIdMap.insert(stl::make_pair(_id, id) ); - it = result.first; - } - - return it->second; - } - - void update(uint32_t _id, const stl::string& _name) - { - getId(_id).var.name = _name; - } - - BX_NO_INLINE void update(Id::Variable& _variable, SpvDecoration::Enum _decoration, uint32_t _literal) - { - _variable.decoration = _decoration; - switch (_decoration) - { - case SpvDecoration::Location: - _variable.location = _literal; - break; - - case SpvDecoration::Offset: - _variable.offset = _literal; - break; - - case SpvDecoration::BuiltIn: - _variable.builtin = SpvBuiltin::Enum(_literal); - break; - - default: - break; - } - } - - BX_NO_INLINE void update(Id::Variable& _variable, uint32_t _type, SpvStorageClass::Enum _storageClass) - { - _variable.type = _type; - _variable.storageClass = _storageClass; - } - - void update(uint32_t _id, SpvDecoration::Enum _decoration, uint32_t _literal) - { - update(getId(_id).var, _decoration, _literal); - } - - void update(uint32_t _id, uint32_t _type, SpvStorageClass::Enum _storageClass) - { - update(getId(_id).var, _type, _storageClass); - } - - void update(uint32_t _id, uint32_t _idx, const stl::string& _name) - { - Id::Variable& var = get(_id, _idx); - var.name = _name; - } - - BX_NO_INLINE void update(uint32_t _id, uint32_t _idx, SpvDecoration::Enum _decoration, uint32_t _literal) - { - update(get(_id, _idx), _decoration, _literal); - } - - void update(uint32_t _id, TypeId::Enum _type) - { - TypeId& type = getTypeId(_id); - type.type = _type; - } + if (depth) + return bgfx::TextureComponentType::Depth; - void update(uint32_t _id, TypeId::Enum _type, uint32_t _baseTypeId, uint32_t _numComonents) + switch (spirvBaseType) { - TypeId& type = getTypeId(_id); - type.type = _type; - - type.baseType = getTypeId(_baseTypeId).type; - type.numComponents = _numComonents; + case spirv_cross::SPIRType::Float: + return bgfx::TextureComponentType::Float; + case spirv_cross::SPIRType::Int: + return bgfx::TextureComponentType::Int; + case spirv_cross::SPIRType::UInt: + return bgfx::TextureComponentType::Uint; + default: + return bgfx::TextureComponentType::Float; } - }; + } - bool spvParse(uint32_t _offset, const SpvInstruction& _instruction, void* _userData) + bgfx::TextureDimension::Enum SpirvDimToTextureViewDimension(spv::Dim _dim, bool _arrayed) { - BX_UNUSED(_offset); - SpvReflection* spv = (SpvReflection*)_userData; - - switch (_instruction.opcode) + switch (_dim) { - case SpvOpcode::Name: - spv->update(_instruction.result - , _instruction.operand[0].literalString - ); - break; - - case SpvOpcode::Decorate: - spv->update(_instruction.operand[0].data - , SpvDecoration::Enum(_instruction.operand[1].data) - , _instruction.operand[2].data - ); - break; - - case SpvOpcode::MemberName: - spv->update(_instruction.result - , _instruction.operand[0].data - , _instruction.operand[1].literalString - ); - break; - - case SpvOpcode::MemberDecorate: - spv->update(_instruction.operand[0].data - , _instruction.operand[1].data - , SpvDecoration::Enum(_instruction.operand[2].data) - , _instruction.operand[3].data - ); - break; - - case SpvOpcode::Variable: - spv->update(_instruction.result - , _instruction.type - , SpvStorageClass::Enum(_instruction.operand[0].data) - ); - break; - - case SpvOpcode::TypeVoid: - spv->update(_instruction.result, SpvReflection::TypeId::Void); - break; - - case SpvOpcode::TypeBool: - spv->update(_instruction.result, SpvReflection::TypeId::Bool); - break; - - case SpvOpcode::TypeInt: - spv->update(_instruction.result - , 32 == _instruction.operand[0].data - ? 0 == _instruction.operand[1].data - ? SpvReflection::TypeId::Uint32 - : SpvReflection::TypeId::Int32 - : 0 == _instruction.operand[1].data - ? SpvReflection::TypeId::Uint64 - : SpvReflection::TypeId::Int64 - ); - break; - - case SpvOpcode::TypeFloat: - spv->update(_instruction.result - , 32 == _instruction.operand[0].data - ? SpvReflection::TypeId::Float - : SpvReflection::TypeId::Double - ); - break; - - case SpvOpcode::TypeVector: - spv->update(_instruction.result - , SpvReflection::TypeId::Vector - , _instruction.operand[0].data - , _instruction.operand[1].data - ); - break; - - case SpvOpcode::TypeMatrix: - spv->update(_instruction.result - , SpvReflection::TypeId::Matrix - , _instruction.operand[0].data - , _instruction.operand[1].data - ); - break; - - case SpvOpcode::TypeImage: - case SpvOpcode::TypeSampler: - case SpvOpcode::TypeSampledImage: - break; - - case SpvOpcode::TypeStruct: - for (uint32_t ii = 0, num = _instruction.numOperands; ii < num; ++ii) - { - SpvReflection::Id::Variable& var = spv->get(_instruction.result, ii); - var.type = _instruction.operand[ii].data; - } - break; - + case spv::Dim::Dim1D: + return bgfx::TextureDimension::Dimension1D; + case spv::Dim::Dim2D: + return _arrayed + ? bgfx::TextureDimension::Dimension2DArray + : bgfx::TextureDimension::Dimension2D + ; + case spv::Dim::Dim3D: + return bgfx::TextureDimension::Dimension3D; + case spv::Dim::DimCube: + return _arrayed + ? bgfx::TextureDimension::DimensionCubeArray + : bgfx::TextureDimension::DimensionCube + ; default: - break; + BX_ASSERT(false, "Unknown texture dimension %d", _dim); + return bgfx::TextureDimension::Dimension2D; } - - return true; } -#define DBG(...) // bx::debugPrintf(__VA_ARGS__) - - void disassemble(bx::WriterI* _writer, bx::ReaderSeekerI* _reader, bx::Error* _err) + static bgfx::TextureFormat::Enum s_textureFormats[] = { - BX_UNUSED(_writer); - - uint32_t magic; - bx::peek(_reader, magic); - - SpvReflection spvx; - - if (magic == SPV_CHUNK_HEADER) - { - SpirV spirv; - read(_reader, spirv, _err); - parse(spirv.shader, spvParse, &spvx, _err); - - for (SpvReflection::IdMap::const_iterator it = spvx.idMap.begin(), itEnd = spvx.idMap.end(); it != itEnd; ++it) - { - const SpvReflection::Id& id = it->second; - uint32_t num = uint32_t(id.members.size() ); - if (0 < num - && 0 != bx::strCmp(id.var.name.c_str(), "gl_PerVertex") ) - { - DBG("%3d: %s %d %s\n" - , it->first - , id.var.name.c_str() - , id.var.location - , getName(id.var.storageClass) - ); - DBG("{\n"); - for (uint32_t ii = 0; ii < num; ++ii) - { - const SpvReflection::Id::Variable& var = id.members[ii]; - DBG("\t\t%s %s %d %s\n" - , spvx.getTypeName(var.type).c_str() - , var.name.c_str() - , var.offset - , getName(var.storageClass) - ); - BX_UNUSED(var); - } - DBG("}\n"); - } - } - - } - } + bgfx::TextureFormat::Unknown, // spv::ImageFormatUnknown = 0 + bgfx::TextureFormat::RGBA32F, // spv::ImageFormatRgba32f = 1 + bgfx::TextureFormat::RGBA16F, // spv::ImageFormatRgba16f = 2 + bgfx::TextureFormat::R32F, // spv::ImageFormatR32f = 3 + bgfx::TextureFormat::RGBA8, // spv::ImageFormatRgba8 = 4 + bgfx::TextureFormat::RGBA8S, // spv::ImageFormatRgba8Snorm = 5 + bgfx::TextureFormat::RG32F, // spv::ImageFormatRg32f = 6 + bgfx::TextureFormat::RG16F, // spv::ImageFormatRg16f = 7 + bgfx::TextureFormat::RG11B10F, // spv::ImageFormatR11fG11fB10f = 8 + bgfx::TextureFormat::R16F, // spv::ImageFormatR16f = 9 + bgfx::TextureFormat::RGBA16, // spv::ImageFormatRgba16 = 10 + bgfx::TextureFormat::RGB10A2, // spv::ImageFormatRgb10A2 = 11 + bgfx::TextureFormat::RG16, // spv::ImageFormatRg16 = 12 + bgfx::TextureFormat::RG8, // spv::ImageFormatRg8 = 13 + bgfx::TextureFormat::R16, // spv::ImageFormatR16 = 14 + bgfx::TextureFormat::R8, // spv::ImageFormatR8 = 15 + bgfx::TextureFormat::RGBA16S, // spv::ImageFormatRgba16Snorm = 16 + bgfx::TextureFormat::RG16S, // spv::ImageFormatRg16Snorm = 17 + bgfx::TextureFormat::RG8S, // spv::ImageFormatRg8Snorm = 18 + bgfx::TextureFormat::R16S, // spv::ImageFormatR16Snorm = 19 + bgfx::TextureFormat::R8S, // spv::ImageFormatR8Snorm = 20 + bgfx::TextureFormat::RGBA32I, // spv::ImageFormatRgba32i = 21 + bgfx::TextureFormat::RGBA16I, // spv::ImageFormatRgba16i = 22 + bgfx::TextureFormat::RGBA8I, // spv::ImageFormatRgba8i = 23 + bgfx::TextureFormat::R32I, // spv::ImageFormatR32i = 24 + bgfx::TextureFormat::RG32I, // spv::ImageFormatRg32i = 25 + bgfx::TextureFormat::RG16I, // spv::ImageFormatRg16i = 26 + bgfx::TextureFormat::RG8I, // spv::ImageFormatRg8i = 27 + bgfx::TextureFormat::R16I, // spv::ImageFormatR16i = 28 + bgfx::TextureFormat::R8I, // spv::ImageFormatR8i = 29 + bgfx::TextureFormat::RGBA32U, // spv::ImageFormatRgba32ui = 30 + bgfx::TextureFormat::RGBA16U, // spv::ImageFormatRgba16ui = 31 + bgfx::TextureFormat::RGBA8U, // spv::ImageFormatRgba8ui = 32 + bgfx::TextureFormat::R32U, // spv::ImageFormatR32ui = 33 + bgfx::TextureFormat::Unknown, // spv::ImageFormatRgb10a2ui = 34 + bgfx::TextureFormat::RG32U, // spv::ImageFormatRg32ui = 35 + bgfx::TextureFormat::RG16U, // spv::ImageFormatRg16ui = 36 + bgfx::TextureFormat::RG8U, // spv::ImageFormatRg8ui = 37 + bgfx::TextureFormat::R16U, // spv::ImageFormatR16ui = 38 + bgfx::TextureFormat::R8U, // spv::ImageFormatR8ui = 39 + bgfx::TextureFormat::Unknown, // spv::ImageFormatR64ui = 40 + bgfx::TextureFormat::Unknown, // spv::ImageFormatR64i = 41 + }; static EShLanguage getLang(char _p) { @@ -539,11 +279,6 @@ namespace bgfx { namespace spirv } } -// static void printError(spv_message_level_t, const char*, const spv_position_t&, const char* _message) -// { -// fprintf(stderr, "%s\n", _message); -// } - static const char* s_attribName[] = { "a_position", @@ -580,21 +315,138 @@ namespace bgfx { namespace spirv return bgfx::Attrib::Count; } + static const char* s_samplerTypes[] = + { + "BgfxSampler2D", + "BgfxISampler2D", + "BgfxUSampler2D", + "BgfxSampler2DArray", + "BgfxSampler2DShadow", + "BgfxSampler2DArrayShadow", + "BgfxSampler3D", + "BgfxISampler3D", + "BgfxUSampler3D", + "BgfxSamplerCube", + "BgfxSamplerCubeShadow", + "BgfxSampler2DMS", + }; + + static uint16_t writeUniformArray(bx::WriterI* _writer, const UniformArray& uniforms, bool isFragmentShader) + { + uint16_t size = 0; + + bx::ErrorAssert err; + + uint16_t count = uint16_t(uniforms.size()); + bx::write(_writer, count, &err); + + uint32_t fragmentBit = isFragmentShader ? kUniformFragmentBit : 0; + + for (uint16_t ii = 0; ii < count; ++ii) + { + const Uniform& un = uniforms[ii]; + + if ( (un.type & ~kUniformMask) > UniformType::End) + { + size = bx::max(size, (uint16_t)(un.regIndex + un.regCount*16) ); + } + + uint8_t nameSize = (uint8_t)un.name.size(); + bx::write(_writer, nameSize, &err); + bx::write(_writer, un.name.c_str(), nameSize, &err); + bx::write(_writer, uint8_t(un.type | fragmentBit), &err); + bx::write(_writer, un.num, &err); + bx::write(_writer, un.regIndex, &err); + bx::write(_writer, un.regCount, &err); + bx::write(_writer, un.texComponent, &err); + bx::write(_writer, un.texDimension, &err); + bx::write(_writer, un.texFormat, &err); + + BX_TRACE("%s, %s, %d, %d, %d" + , un.name.c_str() + , getUniformTypeName(UniformType::Enum(un.type & ~kUniformMask)) + , un.num + , un.regIndex + , un.regCount + ); + } + return size; + } + + static spv_target_env getSpirvTargetVersion(uint32_t version) + { + switch (version) + { + case 1010: + return SPV_ENV_VULKAN_1_0; + case 1311: + return SPV_ENV_VULKAN_1_1; + case 1411: + return SPV_ENV_VULKAN_1_1_SPIRV_1_4; + case 1512: + return SPV_ENV_VULKAN_1_2; + default: + BX_ASSERT(0, "Unknown SPIR-V version requested. Returning SPV_ENV_VULKAN_1_0 as default."); + return SPV_ENV_VULKAN_1_0; + } + } + + static glslang::EShTargetClientVersion getGlslangTargetVulkanVersion(uint32_t version) + { + switch (version) + { + case 1010: + return glslang::EShTargetVulkan_1_0; + case 1311: + case 1411: + return glslang::EShTargetVulkan_1_1; + case 1512: + return glslang::EShTargetVulkan_1_2; + default: + BX_ASSERT(0, "Unknown SPIR-V version requested. Returning EShTargetVulkan_1_0 as default."); + return glslang::EShTargetVulkan_1_0; + } + } + + static glslang::EShTargetLanguageVersion getGlslangTargetSpirvVersion(uint32_t version) + { + switch (version) + { + case 1010: + return glslang::EShTargetSpv_1_0; + case 1311: + return glslang::EShTargetSpv_1_3; + case 1411: + return glslang::EShTargetSpv_1_4; + case 1512: + return glslang::EShTargetSpv_1_5; + default: + BX_ASSERT(0, "Unknown SPIR-V version requested. Returning EShTargetSpv_1_0 as default."); + return glslang::EShTargetSpv_1_0; + } + } + + /// This is the value used to fill out GLSLANG's SpvVersion object. + /// The required value is that which is defined by GL_KHR_vulkan_glsl, which is defined here: + /// https://github.com/KhronosGroup/GLSL/blob/master/extensions/khr/GL_KHR_vulkan_glsl.txt + /// The value is 100. + constexpr int s_GLSL_VULKAN_CLIENT_VERSION = 100; + static bool compile(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer, bool _firstPass) { BX_UNUSED(_version); glslang::InitializeProcess(); - glslang::TProgram* program = new glslang::TProgram; - EShLanguage stage = getLang(_options.shaderType); if (EShLangCount == stage) { - fprintf(stderr, "Error: Unknown shader type '%c'.\n", _options.shaderType); + bx::printf("Error: Unknown shader type '%c'.\n", _options.shaderType); return false; } - glslang::TShader* shader = new glslang::TShader(stage); + + glslang::TProgram* program = new glslang::TProgram; + glslang::TShader* shader = new glslang::TShader(stage); EShMessages messages = EShMessages(0 | EShMsgDefault @@ -604,6 +456,17 @@ namespace bgfx { namespace spirv ); shader->setEntryPoint("main"); + shader->setAutoMapBindings(true); + shader->setEnvInput(glslang::EShSourceHlsl, stage, glslang::EShClientVulkan, s_GLSL_VULKAN_CLIENT_VERSION); + shader->setEnvClient(glslang::EShClientVulkan, getGlslangTargetVulkanVersion(_version)); + shader->setEnvTarget(glslang::EShTargetSpv, getGlslangTargetSpirvVersion(_version)); + + // Reserve two spots for the stage UBOs + shader->setShiftBinding(glslang::EResUbo, (stage == EShLanguage::EShLangFragment ? kSpirvFragmentBinding : kSpirvVertexBinding)); + shader->setShiftBinding(glslang::EResTexture, kSpirvBindShift); + shader->setShiftBinding(glslang::EResSampler, kSpirvBindShift + kSpirvSamplerShift); + shader->setShiftBinding(glslang::EResSsbo, kSpirvBindShift); + shader->setShiftBinding(glslang::EResImage, kSpirvBindShift); const char* shaderStrings[] = { _code.c_str() }; shader->setStrings( @@ -650,7 +513,7 @@ namespace bgfx { namespace spirv printCode(_code.c_str(), line, start, end, column); - fprintf(stderr, "%s\n", log); + bx::printf("%s\n", log); } } else @@ -666,36 +529,53 @@ namespace bgfx { namespace spirv const char* log = program->getInfoLog(); if (NULL != log) { - fprintf(stderr, "%s\n", log); + bx::printf("%s\n", log); } } else { - uint16_t size = 0; - program->buildReflection(); if (_firstPass) { - const size_t strLength = bx::strLen("uniform"); - // first time through, we just find unused uniforms and get rid of them std::string output; - bx::Error err; - LineReader reader(_code.c_str() ); - while (err.isOk() ) + + struct Uniform + { + std::string name; + std::string decl; + }; + std::vector<Uniform> uniforms; + + bx::LineReader reader(_code.c_str() ); + while (!reader.isDone() ) { - char str[4096]; - int32_t len = bx::read(&reader, str, BX_COUNTOF(str), &err); - if (err.isOk() ) + bx::StringView strLine = reader.next(); + + bool moved = false; + + bx::StringView str = strFind(strLine, "uniform "); + if (!str.isEmpty() ) { - std::string strLine(str, len); + bool found = false; + bool sampler = false; + std::string name = ""; + + // add to samplers - size_t index = strLine.find("uniform "); - if (index != std::string::npos) + for (uint32_t ii = 0; ii < BX_COUNTOF(s_samplerTypes); ++ii) { - bool found = false; + if (!bx::findIdentifierMatch(strLine, s_samplerTypes[ii]).isEmpty() ) + { + found = true; + sampler = true; + break; + } + } + if (!found) + { for (int32_t ii = 0, num = program->getNumLiveUniformVariables(); ii < num; ++ii) { // matching lines like: uniform u_name; @@ -703,82 +583,108 @@ namespace bgfx { namespace spirv // included in the uniform blob that the application must upload // we can't just remove them, because unused functions might still reference // them and cause a compile error when they're gone - if (!bx::findIdentifierMatch(strLine.c_str(), program->getUniformName(ii) ).isEmpty() ) + if (!bx::findIdentifierMatch(strLine, program->getUniformName(ii) ).isEmpty() ) { found = true; + name = program->getUniformName(ii); break; } } + } - if (!found) - { - strLine = strLine.replace(index, strLength, "static"); - } + if (!found) + { + output.append(strLine.getPtr(), str.getPtr() ); + output += "static "; + output.append(str.getTerm(), strLine.getTerm() ); + output += "\n"; + moved = true; + } + else if (!sampler) + { + Uniform uniform; + uniform.name = name; + uniform.decl = std::string(strLine.getPtr(), strLine.getTerm() ); + uniforms.push_back(uniform); + moved = true; } + } - output += strLine; + if (!moved) + { + output.append(strLine.getPtr(), strLine.getTerm() ); + output += "\n"; } } + std::string uniformBlock; + uniformBlock += "cbuffer UniformBlock\n"; + uniformBlock += "{\n"; + + for (const Uniform& uniform : uniforms) + { + uniformBlock += uniform.decl.substr(7 /* uniform */); + uniformBlock += "\n"; + } + + uniformBlock += "};\n"; + + output = uniformBlock + output; + // recompile with the unused uniforms converted to statics + delete program; + delete shader; return compile(_options, _version, output.c_str(), _writer, false); } + UniformArray uniforms; + { uint16_t count = (uint16_t)program->getNumLiveUniformVariables(); - bx::write(_writer, count); - uint32_t fragmentBit = _options.shaderType == 'f' ? BGFX_UNIFORM_FRAGMENTBIT : 0; for (uint16_t ii = 0; ii < count; ++ii) { Uniform un; un.name = program->getUniformName(ii); + if (bx::hasSuffix(un.name.c_str(), ".@data") ) + { + continue; + } + un.num = uint8_t(program->getUniformArraySize(ii) ); const uint32_t offset = program->getUniformBufferOffset(ii); un.regIndex = uint16_t(offset); un.regCount = un.num; - switch (program->getUniformType(ii)) + switch (program->getUniformType(ii) ) { case 0x1404: // GL_INT: - un.type = UniformType::Int1; + un.type = UniformType::Sampler; break; + case 0x8B52: // GL_FLOAT_VEC4: un.type = UniformType::Vec4; break; + case 0x8B5B: // GL_FLOAT_MAT3: un.type = UniformType::Mat3; un.regCount *= 3; break; + case 0x8B5C: // GL_FLOAT_MAT4: un.type = UniformType::Mat4; un.regCount *= 4; break; + default: - un.type = UniformType::End; - break; + continue; } - size += un.regCount*16; - - uint8_t nameSize = (uint8_t)un.name.size(); - bx::write(_writer, nameSize); - bx::write(_writer, un.name.c_str(), nameSize); - bx::write(_writer, uint8_t(un.type | fragmentBit)); - bx::write(_writer, un.num); - bx::write(_writer, un.regIndex); - bx::write(_writer, un.regCount); - - BX_TRACE("%s, %s, %d, %d, %d" - , un.name.c_str() - , getUniformTypeName(un.type) - , un.num - , un.regIndex - , un.regCount - ); + uniforms.push_back(un); } } + if (g_verbose) { program->dumpReflection(); @@ -794,35 +700,168 @@ namespace bgfx { namespace spirv glslang::GlslangToSpv(*intermediate, spirv, &options); - bx::Error err; - bx::WriterI* writer = bx::getDebugOut(); - bx::MemoryReader reader(spirv.data(), uint32_t(spirv.size()*4) ); - disassemble(writer, &reader, &err); + spvtools::Optimizer opt(getSpirvTargetVersion(_version)); + + auto print_msg_to_stderr = []( + spv_message_level_t + , const char* + , const spv_position_t& + , const char* m + ) + { + bx::printf("Error: %s\n", m); + }; + + opt.SetMessageConsumer(print_msg_to_stderr); - uint32_t shaderSize = (uint32_t)spirv.size()*sizeof(uint32_t); - bx::write(_writer, shaderSize); - bx::write(_writer, spirv.data(), shaderSize); - uint8_t nul = 0; - bx::write(_writer, nul); + opt.RegisterLegalizationPasses(); - // - const uint8_t numAttr = (uint8_t)program->getNumLiveAttributes(); - bx::write(_writer, numAttr); + spvtools::ValidatorOptions validatorOptions; + validatorOptions.SetBeforeHlslLegalization(true); - for (uint8_t ii = 0; ii < numAttr; ++ii) + if (!opt.Run( + spirv.data() + , spirv.size() + , &spirv + , validatorOptions + , false + ) ) + { + compiled = false; + } + else { - bgfx::Attrib::Enum attr = toAttribEnum(program->getAttributeName(ii) ); - if (bgfx::Attrib::Count != attr) + if (g_verbose) { - bx::write(_writer, bgfx::attribToId(attr) ); + glslang::SpirvToolsDisassemble(std::cout, spirv, getSpirvTargetVersion(_version)); } - else + + spirv_cross::CompilerReflection refl(spirv); + spirv_cross::ShaderResources resourcesrefl = refl.get_shader_resources(); + + // Loop through the separate_images, and extract the uniform names: + for (auto &resource : resourcesrefl.separate_images) { - bx::write(_writer, uint16_t(UINT16_MAX) ); + std::string name = refl.get_name(resource.id); + + if (name.size() > 7 + && 0 == bx::strCmp(name.c_str() + name.length() - 7, "Texture") ) + { + name = name.substr(0, name.length() - 7); + } + + uint32_t binding_index = refl.get_decoration(resource.id, spv::Decoration::DecorationBinding); + + auto imageType = refl.get_type(resource.base_type_id).image; + auto componentType = refl.get_type(imageType.type).basetype; + + bool isCompareSampler = false; + for (auto& sampler : resourcesrefl.separate_samplers) + { + if (binding_index + 16 == refl.get_decoration(sampler.id, spv::Decoration::DecorationBinding) ) + { + std::string samplerName = refl.get_name(sampler.id); + isCompareSampler = refl.variable_is_depth_or_compare(sampler.id) || samplerName.find("Comparison") != std::string::npos; + break; + } + } + + Uniform un; + un.name = name; + un.type = UniformType::Enum(UniformType::Sampler + | kUniformSamplerBit + | (isCompareSampler ? kUniformCompareBit : 0) + ); + + un.texComponent = textureComponentTypeToId(SpirvCrossBaseTypeToFormatType(componentType, imageType.depth) ); + un.texDimension = textureDimensionToId(SpirvDimToTextureViewDimension(imageType.dim, imageType.arrayed) ); + un.texFormat = uint16_t(s_textureFormats[imageType.format]); + + un.regIndex = uint16_t(binding_index); + un.regCount = 0; // unused + + uniforms.push_back(un); } - } - bx::write(_writer, size); + // Loop through the storage_images, and extract the uniform names: + for (auto &resource : resourcesrefl.storage_images) + { + std::string name = refl.get_name(resource.id); + + uint32_t binding_index = refl.get_decoration(resource.id, spv::Decoration::DecorationBinding); + + auto imageType = refl.get_type(resource.base_type_id).image; + auto componentType = refl.get_type(imageType.type).basetype; + + spirv_cross::Bitset flags = refl.get_decoration_bitset(resource.id); + UniformType::Enum type = flags.get(spv::DecorationNonWritable) + ? UniformType::Enum(kUniformReadOnlyBit | UniformType::End) + : UniformType::End; + + Uniform un; + un.name = name; + un.type = type; + + un.texComponent = textureComponentTypeToId(SpirvCrossBaseTypeToFormatType(componentType, imageType.depth) ); + un.texDimension = textureDimensionToId(SpirvDimToTextureViewDimension(imageType.dim, imageType.arrayed) ); + un.texFormat = uint16_t(s_textureFormats[imageType.format]); + + un.regIndex = uint16_t(binding_index); + un.regCount = descriptorTypeToId(DescriptorType::StorageImage); + + uniforms.push_back(un); + } + + bx::Error err; + + // Loop through the storage buffer, and extract the uniform names: + for (auto& resource : resourcesrefl.storage_buffers) + { + std::string name = refl.get_name(resource.id); + + uint32_t binding_index = refl.get_decoration(resource.id, spv::Decoration::DecorationBinding); + + spirv_cross::Bitset flags = refl.get_buffer_block_flags(resource.id); + UniformType::Enum type = flags.get(spv::DecorationNonWritable) + ? UniformType::Enum(kUniformReadOnlyBit | UniformType::End) + : UniformType::End; + + Uniform un; + un.name = name; + un.type = type; + un.num = 0; + un.regIndex = uint16_t(binding_index); + un.regCount = descriptorTypeToId(DescriptorType::StorageBuffer); + + uniforms.push_back(un); + } + + uint16_t size = writeUniformArray( _writer, uniforms, _options.shaderType == 'f'); + + uint32_t shaderSize = (uint32_t)spirv.size() * sizeof(uint32_t); + bx::write(_writer, shaderSize, &err); + bx::write(_writer, spirv.data(), shaderSize, &err); + uint8_t nul = 0; + bx::write(_writer, nul, &err); + + const uint8_t numAttr = (uint8_t)program->getNumLiveAttributes(); + bx::write(_writer, numAttr, &err); + + for (uint8_t ii = 0; ii < numAttr; ++ii) + { + bgfx::Attrib::Enum attr = toAttribEnum(program->getAttributeName(ii) ); + if (bgfx::Attrib::Count != attr) + { + bx::write(_writer, bgfx::attribToId(attr), &err); + } + else + { + bx::write(_writer, uint16_t(UINT16_MAX), &err); + } + } + + bx::write(_writer, size, &err); + } } } diff --git a/3rdparty/bgfx/tools/texturev/common.sh b/3rdparty/bgfx/tools/texturev/common.sh index 8518cd143c2..7f91a6efdce 100644 --- a/3rdparty/bgfx/tools/texturev/common.sh +++ b/3rdparty/bgfx/tools/texturev/common.sh @@ -1,15 +1,19 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> -uniform vec4 u_params; -#define u_textureLod u_params.x -#define u_textureLayer u_params.y -#define u_inLinear u_params.z -#define u_ev u_params.w +uniform vec4 u_params0; +#define u_textureLod u_params0.x +#define u_textureLayer u_params0.y +#define u_inLinear u_params0.z +#define u_ev u_params0.w + +uniform vec4 u_params1; +#define u_outputFormat u_params1.x +#define u_sdrWhiteNits u_params1.y vec3 toLinear(vec3 _rgb) { @@ -21,8 +25,107 @@ vec3 toGamma(vec3 _rgb) return pow(abs(_rgb), vec3_splat(1.0/2.2) ); } +vec3 applyExposure(vec3 _rgb) +{ + vec3 rgb = mix(toLinear(_rgb.xyz), _rgb.xyz, u_inLinear); + return (rgb * pow(2.0, u_ev) ); +} + vec4 toEv(vec4 _color) { - vec3 rgb = mix(toLinear(_color.xyz), _color.xyz, u_inLinear); - return vec4(toGamma(rgb * pow(2.0, u_ev) ), _color.w); + return vec4(toGamma(applyExposure(_color.xyz) ), _color.w); +} + +float toSrgbGamma(float _val) +{ + if (_val <= 0.0031308) + { + return 12.92 * _val; + } + else + { + return 1.055 * pow(_val, (1.0/2.4) ) - 0.055; + } +} + +vec3 toSrgbGamma(vec3 _rgb) +{ + _rgb.x = toSrgbGamma(_rgb.x); + _rgb.y = toSrgbGamma(_rgb.y); + _rgb.z = toSrgbGamma(_rgb.z); + return _rgb; +} + +vec3 toXyzFromSrgb(vec3 _rgb) +{ + mat3 toXYZ = mat3( + 0.4125564, 0.3575761, 0.1804375, + 0.2126729, 0.7151522, 0.0721750, + 0.0193339, 0.1191920, 0.9503041 + ); + return mul(toXYZ, _rgb); +} + +vec3 toRec2020FromXyz(vec3 _xyz) +{ + mat3 toRec2020 = mat3( + 1.7166512, -0.3556708, -0.2533663, + -0.6666844, 1.6164812, 0.0157685, + 0.0176399, -0.0427706, 0.9421031 + ); + return mul(toRec2020, _xyz); +} + + +vec3 toPqOetf(vec3 _color) +{ + // reference PQ OETF will yield reference OOTF when + // displayed on a reference monitor employing EOTF + + float m1 = 0.1593017578125; + float m2 = 78.84375; + float c1 = 0.8359375; + float c2 = 18.8515625; + float c3 = 18.6875; + + vec3 Ym1 = pow(_color.xyz * (1.0/10000.0), vec3_splat(m1) ); + _color = pow((c1 + c2*Ym1) / (vec3_splat(1.0) + c3*Ym1), vec3_splat(m2) ); + + return _color; +} + +vec4 toOutput(vec4 _color, float _outputFormat, float _sdrWhiteNits) +{ + // assumed that _color is linear with sRGB/rec709 primaries + // and 1.0 is SDR white point + + vec3 outColor = vec3_splat(0.0); + + if (_outputFormat < 0.5) + { + // output == 0 -> sRGB/rec709, apply gamma + // values over 1.0 will saturate + outColor = toSrgbGamma(saturate(_color.xyz)); + } + else if (_outputFormat < 1.5) + { + // output == 1 -> scRGB, remains linear. + // values over 1.0 will appear as HDR + outColor = _color.xyz; + } + else if (_outputFormat < 2.5) + { + // output == 2 -> PQ + + // change primaries from sRGB/rec709 to rec2020 + vec3 _xyz = toXyzFromSrgb(_color.xyz); + outColor = toRec2020FromXyz(_xyz); + + // if 1.0 is SDR white, should map to 80 nits + // but that could lead to dim results as SDR + // monitors tend to be brighter than standard + outColor = toPqOetf(outColor * _sdrWhiteNits); + } + + return vec4(outColor, _color.w); } diff --git a/3rdparty/bgfx/tools/texturev/fs_texture.bin.h b/3rdparty/bgfx/tools/texturev/fs_texture.bin.h index cd641968a53..d231fd392eb 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture.bin.h +++ b/3rdparty/bgfx/tools/texturev/fs_texture.bin.h @@ -1,320 +1,1035 @@ -static const uint8_t fs_texture_glsl[522] = +static const uint8_t fs_texture_glsl[2334] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd7, 0x01, // texColor........ - 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ..varying vec4 v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // _color0;.varying - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec3 v_texcoord - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // 0;.uniform vec4 - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // u_params;.unifor - 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, // m sampler2D s_te - 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, // xColor;.void mai - 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x63, // n ().{. vec4 _c - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // olor_1;. _color - 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, // _1 = (texture2DL - 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, // od (s_texColor, - 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, // v_texcoord0.xy, - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, // u_params.x) * v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // color0);. vec4 - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_2;. tmpv - 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // ar_2.xyz = pow ( - 0x61, 0x62, 0x73, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, // abs((. mix (p - 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // ow (abs(_color_1 - 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, // .xyz), vec3(2.2, - 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, // 2.2, 2.2)), _co - 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // lor_1.xyz, u_par - 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, // ams.z). * . - 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, // exp2(u_params.w - 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x34, // ). )), vec3(0.4 - 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, // 545454, 0.454545 - 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, // 4, 0.4545454));. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, // tmpvar_2.w = _ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // color_1.w;. gl_ - 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // FragColor = tmpv - 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ar_2;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x02, 0x01, 0x00, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x08, 0x00, 0x00, 0x76, // r..............v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, // arying vec4 v_co + 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, // lor0;.varying ve + 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // c3 v_texcoord0;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, // uniform vec4 u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // arams0;.uniform + 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, // vec4 u_params1;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, // uniform sampler2 + 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, // D s_texColor;.vo + 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, // id main ().{. v + 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, // ec4 color_1;. v + 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, // ec4 tmpvar_2;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, // tmpvar_2 = textu + 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // re2DLod (s_texCo + 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // lor, v_texcoord0 + 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, // .xy, u_params0.x + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, // );. color_1.w = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x63, // tmpvar_2.w;. c + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, // olor_1.xyz = (mi + 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, // x (pow (. abs + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x0a, 0x20, // (tmpvar_2.xyz). + 0x20, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, // , vec3(2.2, 2.2 + 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // , 2.2)), tmpvar_ + 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // 2.xyz, u_params0 + 0x2e, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, // .z) * exp2(u_par + 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // ams0.w));. colo + 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x2a, // r_1 = (color_1 * + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, // v_color0);. ve + 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, // c3 outColor_3;. + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, // vec3 tmpvar_4;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x30, // tmpvar_4.x = 0 + 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x79, // .0;. tmpvar_4.y + 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = 0.0;. tmpvar + 0x5f, 0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x6f, 0x75, // _4.z = 0.0;. ou + 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // tColor_3 = tmpva + 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, // r_4;. if ((u_pa + 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, // rams1.x < 0.5)) + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // {. vec3 tmpva + 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // r_5;. tmpvar_ + 0x35, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // 5 = clamp (color + 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // _1.xyz, 0.0, 1.0 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x72, 0x67, 0x62, // );. vec3 _rgb + 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x36, 0x20, 0x3d, // _6;. _rgb_6 = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // tmpvar_5;. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, // loat tmpvar_7;. + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, // if ((tmpvar_5 + 0x2e, 0x78, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, // .x <= 0.0031308) + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ) {. tmpvar + 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, // _7 = (12.92 * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, // pvar_5.x);. } + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, // else {. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, // pvar_7 = ((1.055 + 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, // * pow (tmpvar_5 + 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, // .x, 0.4166667)) + 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, // - 0.055);. }; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x36, 0x2e, 0x78, 0x20, 0x3d, 0x20, // . _rgb_6.x = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // tmpvar_7;. fl + 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, // oat tmpvar_8;. + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, // if ((tmpvar_5. + 0x79, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, // y <= 0.0031308)) + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // {. tmpvar_ + 0x38, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // 8 = (12.92 * tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, // var_5.y);. } + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // else {. tmp + 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, // var_8 = ((1.055 + 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, // * pow (tmpvar_5. + 0x79, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, // y, 0.4166667)) - + 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, // 0.055);. };. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x36, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, // _rgb_6.y = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // mpvar_8;. flo + 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, // at tmpvar_9;. + 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x7a, // if ((tmpvar_5.z + 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, // <= 0.0031308)) + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, // {. tmpvar_9 + 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // = (12.92 * tmpv + 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, // ar_5.z);. } e + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // lse {. tmpv + 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, // ar_9 = ((1.055 * + 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x7a, // pow (tmpvar_5.z + 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, // , 0.4166667)) - + 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, // 0.055);. };. + 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, // _rgb_6.z = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, // pvar_9;. outC + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x36, 0x3b, // olor_3 = _rgb_6; + 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // . } else {. + 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, // if ((u_params1.x + 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // < 1.5)) {. + 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x63, 0x6f, // outColor_3 = co + 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, // lor_1.xyz;. } + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, // else {. if + 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, // ((u_params1.x < + 0x20, 0x32, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 2.5)) {. + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x30, 0x3b, // vec3 _color_10; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // . _color_ + 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x37, 0x31, // 10 = ((mat3(1.71 + 0x36, 0x36, 0x35, 0x31, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, 0x38, // 6651, -0.3556708 + 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x32, 0x35, 0x33, 0x33, 0x36, 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x30, // , -0.2533663, -0 + 0x2e, 0x36, 0x36, 0x36, 0x36, 0x38, 0x34, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x36, 0x34, // .6666844, 1.6164 + 0x38, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x2c, 0x20, 0x30, // 81, 0.0157685, 0 + 0x2e, 0x30, 0x31, 0x37, 0x36, 0x33, 0x39, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, // .0176399, -0.042 + 0x37, 0x37, 0x30, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x31, 0x29, // 7706, 0.9421031) + 0x20, 0x2a, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x31, 0x32, 0x35, 0x35, // * (mat3(0.41255 + 0x36, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x2c, 0x20, 0x30, // 64, 0.3575761, 0 + 0x2e, 0x31, 0x38, 0x30, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x31, 0x32, 0x36, // .1804375, 0.2126 + 0x37, 0x32, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x35, 0x31, 0x35, 0x32, 0x32, 0x2c, 0x20, // 729, 0.7151522, + 0x30, 0x2e, 0x30, 0x37, 0x32, 0x31, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x39, 0x33, // 0.072175, 0.0193 + 0x33, 0x33, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x32, 0x2c, 0x20, 0x30, // 339, 0.119192, 0 + 0x2e, 0x39, 0x35, 0x30, 0x33, 0x30, 0x34, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // .9503041) * colo + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, // r_1.xyz)) * u_pa + 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // rams1.y);. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, // vec3 tmpvar_11 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ;. tmpvar + 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x5f, 0x63, 0x6f, 0x6c, // _11 = pow ((_col + 0x6f, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x31, 0x29, 0x2c, // or_10 * 0.0001), + 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, // vec3(0.1593018, + 0x20, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, // 0.1593018, 0.15 + 0x39, 0x33, 0x30, 0x31, 0x38, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 93018));. + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, // vec3 tmpvar_12; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . tmpvar_ + 0x31, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x28, 0x30, 0x2e, 0x38, 0x33, // 12 = pow (((0.83 + 0x35, 0x39, 0x33, 0x37, 0x35, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 59375 + . + 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, 0x38, 0x35, 0x31, 0x35, 0x36, 0x20, 0x2a, 0x20, 0x74, // (18.85156 * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // mpvar_11). + 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x2c, // ) / (vec3(1.0, + 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, // 1.0, 1.0) + . + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, 0x36, 0x38, 0x37, 0x35, // (18.6875 + 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x0a, 0x20, 0x20, // * tmpvar_11). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x37, // )), vec3(7 + 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, // 8.84375, 78.8437 + 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, // 5, 78.84375));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x30, // _color_10 + 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, // = tmpvar_12;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, // outColor_3 + 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, // = tmpvar_12;. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // };. };. + 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // };. vec4 tmpvar + 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, // _13;. tmpvar_13 + 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // .xyz = outColor_ + 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x77, // 3;. tmpvar_13.w + 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, // = color_1.w;. + 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, // gl_FragColor = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // mpvar_13;.}... }; -static const uint8_t fs_texture_spv[1957] = +static const uint8_t fs_texture_essl[2478] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x07, 0x00, // _params......... - 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x31, 0x01, 0x00, // ...#.........1.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, // .....GLSL.std.45 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // 0............... - 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai - 0x6e, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, // n............... - 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // ................ - 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // .main........... - 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, 0x00, // .BgfxSampler2D.. - 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, // .............m_s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // ampler.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, // .....m_texture.. - 0x00, 0x05, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....8...s_texCo - 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, // lor......:...s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, // exColorSampler.. - 0x00, 0x05, 0x00, 0x07, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....=...s_texCo - 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, // lorTexture...... - 0x00, 0x78, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, // .x...$Global.... - 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // .x.......u_param - 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s........z...... - 0x00, 0x05, 0x00, 0x05, 0x00, 0xae, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // .........v_color - 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, // 0............v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xbd, 0x00, 0x00, // excoord0........ - 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, // .bgfx_FragData0. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...=..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...=...!...... - 0x00, 0x48, 0x00, 0x05, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...x.......#.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....G...x...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...z..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0xae, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x47, 0x00, 0x04, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .G.............. - 0x00, 0x47, 0x00, 0x04, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, // .........!...... - 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, // ................ - 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, // ..... .......... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, // ................ - 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x15, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. .. - 0x00, 0x37, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .7...........;.. - 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .7...8....... .. - 0x00, 0x39, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .9...........;.. - 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .9...:....... .. - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .<...........;.. - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // .<...=.......... - 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .@... .......+.. - 0x00, 0x40, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, // .@...E.......... - 0x00, 0x49, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .I.......+...... - 0x00, 0x65, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .e......@+...... - 0x00, 0x6d, 0x00, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x1e, 0x00, 0x03, 0x00, 0x78, 0x00, 0x00, // .m.../..>....x.. - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... ...y...... - 0x00, 0x78, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, // .x...;...y...z.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // .........{... .. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, // .....+...{...|.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... ...}...... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, // .....+.......... - 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, // ....@+...{...... - 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, // .....+...{...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ..... .......... - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, // .....;.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ..... .......... - 0x00, 0x15, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, // .....;.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ..... .......... - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, // .....;.......... - 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, // .....,......./.. - 0x00, 0x65, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, // .e...e...e...,.. - 0x00, 0x15, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, // .....0...m...m.. - 0x00, 0x6d, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .m...6.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, // ................ - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, // .=.......;...:.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, // .=.......>...=.. - 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, // .P.......?...;.. - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, // .>...>...8...?.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, // .=.............. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, // .=.............. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, // .=...........8.. - 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0xd9, 0x00, 0x00, // .Q.......+...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, // .....Q.......,.. - 0x00, 0xd9, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, // .........O...... - 0x00, 0xdb, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7d, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, // .....A...}...... - 0x00, 0x7a, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .z...E.......=.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, // .............V.. - 0x00, 0x49, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, // .I.......,...+.. - 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, // .X.............. - 0x00, 0xdb, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, // ................ - 0x00, 0x0e, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, // ................ - 0x00, 0x4f, 0x00, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, // .O.............. - 0x00, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x0c, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x04, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, // ................ - 0x00, 0x13, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, // ................ - 0x00, 0x2f, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7d, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, // ./...A...}...... - 0x00, 0x7a, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .z...E...|...=.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, // .............P.. - 0x00, 0x15, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, // ................ - 0x00, 0xfd, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // .....O.......... - 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0xfe, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, // .....A...}...... - 0x00, 0x7a, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .z...E.......=.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, // ................ - 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, // ................ - 0x00, 0x88, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, // ................ - 0x00, 0x06, 0x01, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, // ................ - 0x00, 0x15, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .....!.......... - 0x00, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, // .............#.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, // .........!...0.. - 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0xe1, 0x00, 0x00, // .Q.............. - 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, // .....Q.......... - 0x00, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // .#.......Q...... - 0x00, 0x0b, 0x01, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .....#.......Q.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, // .........#...... - 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, // .P.............. - 0x00, 0x0b, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, // .............>.. - 0x00, 0xbd, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, // .............8.. - 0x00, 0x00, 0x00, 0x10, 0x00, // ..... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x02, 0x01, 0x00, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x09, 0x00, 0x00, 0x76, // r..........^...v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec + 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ing highp vec3 v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, // orm highp vec4 u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // _params0;.unifor + 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, // m highp vec4 u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // arams1;.uniform + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // sampler2D s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // olor;.void main + 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ().{. lowp vec4 + 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // color_1;. lowp + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, // vec4 tmpvar_2;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, // tmpvar_2 = tex + 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x20, 0x20, 0x20, 0x28, 0x73, 0x5f, // ture2DLod (s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // texColor, v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // oord0.xy, u_para + 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // ms0.x);. color_ + 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, // 1.w = tmpvar_2.w + 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, // ;. color_1.xyz + 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x0a, 0x20, 0x20, // = (mix (pow (. + 0x20, 0x20, 0x61, 0x62, 0x73, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, // abs(tmpvar_2.x + 0x79, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, // yz). , vec3(2.2 + 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x74, 0x6d, // , 2.2, 2.2)), tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, // pvar_2.xyz, u_pa + 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, // rams0.z) * exp2( + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, // u_params0.w));. + 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, // color_1 = (colo + 0x72, 0x5f, 0x31, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, // r_1 * v_color0); + 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // . mediump vec4 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // tmpvar_3;. lowp + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, // vec3 outColor_4 + 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, // ;. lowp vec3 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_5;. tmpvar + 0x5f, 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // _5.x = 0.0;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, // pvar_5.y = 0.0;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x30, // tmpvar_5.z = 0 + 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, // .0;. outColor_4 + 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x69, // = tmpvar_5;. i + 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, // f ((u_params1.x + 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, // < 0.5)) {. lo + 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // wp vec3 tmpvar_6 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, // ;. tmpvar_6 = + 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, // clamp (color_1. + 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // xyz, 0.0, 1.0);. + 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x72, // lowp vec3 _r + 0x67, 0x62, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x37, // gb_7;. _rgb_7 + 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, // = tmpvar_6;. + 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // lowp float tmpv + 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, // ar_8;. if ((t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, // mpvar_6.x <= 0.0 + 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // 031308)) {. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, // tmpvar_8 = (12. + 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x29, // 92 * tmpvar_6.x) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, // ;. } else {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, // tmpvar_8 = + 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, // ((1.055 * pow (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, // mpvar_6.x, 0.416 + 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, // 6667)) - 0.055); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, // . };. _rgb + 0x5f, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, // _7.x = tmpvar_8; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // . lowp float + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, // tmpvar_9;. if + 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x79, 0x20, 0x3c, 0x3d, // ((tmpvar_6.y <= + 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, // 0.0031308)) {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, // tmpvar_9 = + 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // (12.92 * tmpvar_ + 0x36, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, // 6.y);. } else + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // {. tmpvar_ + 0x39, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, // 9 = ((1.055 * po + 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x79, 0x2c, 0x20, 0x30, // w (tmpvar_6.y, 0 + 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, // .4166667)) - 0.0 + 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 55);. };. + 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x37, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // _rgb_7.y = tmpva + 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, // r_9;. lowp fl + 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, // oat tmpvar_10;. + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // if ((tmpvar_6 + 0x2e, 0x7a, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, // .z <= 0.0031308) + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ) {. tmpvar + 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, // _10 = (12.92 * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // mpvar_6.z);. + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, // } else {. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, // mpvar_10 = ((1.0 + 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 55 * pow (tmpvar + 0x5f, 0x36, 0x2e, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, // _6.z, 0.4166667) + 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // ) - 0.055);. + 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x37, 0x2e, 0x7a, 0x20, // };. _rgb_7.z + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // = tmpvar_10;. + 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x72, // outColor_4 = _r + 0x67, 0x62, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, // gb_7;. } else { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // . if ((u_para + 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, // ms1.x < 1.5)) {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, // outColor_4 + 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, // = color_1.xyz;. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // } else {. + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // if ((u_params + 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, // 1.x < 2.5)) {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // lowp vec3 + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // _color_11;. + 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, // _color_11 = ( + 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x37, 0x31, 0x36, 0x36, 0x35, 0x31, 0x2c, 0x20, // (mat3(1.716651, + 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, 0x38, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x32, // -0.3556708, -0.2 + 0x35, 0x33, 0x33, 0x36, 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x36, 0x36, 0x36, 0x36, 0x38, // 533663, -0.66668 + 0x34, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x36, 0x34, 0x38, 0x31, 0x2c, 0x20, 0x30, 0x2e, // 44, 1.616481, 0. + 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x37, 0x36, 0x33, // 0157685, 0.01763 + 0x39, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, 0x37, 0x37, 0x30, 0x36, 0x2c, 0x20, // 99, -0.0427706, + 0x30, 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x6d, 0x61, // 0.9421031) * (ma + 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x31, 0x32, 0x35, 0x35, 0x36, 0x34, 0x2c, 0x20, 0x30, 0x2e, // t3(0.4125564, 0. + 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x38, 0x30, 0x34, 0x33, // 3575761, 0.18043 + 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x31, 0x32, 0x36, 0x37, 0x32, 0x39, 0x2c, 0x20, 0x30, // 75, 0.2126729, 0 + 0x2e, 0x37, 0x31, 0x35, 0x31, 0x35, 0x32, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x37, 0x32, 0x31, // .7151522, 0.0721 + 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x39, 0x33, 0x33, 0x33, 0x39, 0x2c, 0x20, 0x30, // 75, 0.0193339, 0 + 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x35, 0x30, 0x33, 0x30, // .119192, 0.95030 + 0x34, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // 41) * color_1.xy + 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, // z)) * u_params1. + 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // y);. lowp + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, // vec3 tmpvar_12; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . tmpvar_ + 0x31, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // 12 = pow ((_colo + 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x31, 0x29, 0x2c, 0x20, // r_11 * 0.0001), + 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, // vec3(0.1593018, + 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, 0x39, // 0.1593018, 0.159 + 0x33, 0x30, 0x31, 0x38, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 3018));. + 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // lowp vec3 tmpvar + 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // _13;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x28, // var_13 = pow ((( + 0x30, 0x2e, 0x38, 0x33, 0x35, 0x39, 0x33, 0x37, 0x35, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, // 0.8359375 + . + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, 0x38, 0x35, 0x31, 0x35, 0x36, // (18.85156 + 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x29, 0x0a, 0x20, 0x20, // * tmpvar_12). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, // ) / (vec3( + 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, // 1.0, 1.0, 1.0) + + 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, // . (18. + 0x36, 0x38, 0x37, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, // 6875 * tmpvar_12 + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, // ). )), ve + 0x63, 0x33, 0x28, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, // c3(78.84375, 78. + 0x38, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, // 84375, 78.84375) + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // );. _colo + 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, // r_11 = tmpvar_13 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, // ;. outCol + 0x6f, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, // or_4 = tmpvar_13 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, // ;. };. } + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, // ;. };. lowp ve + 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, // c4 tmpvar_14;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_14.xyz = + 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // outColor_4;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // pvar_14.w = colo + 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // r_1.w;. tmpvar_ + 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, // 3 = tmpvar_14;. + 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // gl_FragColor = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tmpvar_3;.}... }; -static const uint8_t fs_texture_dx9[615] = +static const uint8_t fs_texture_spv[4427] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x08, // _texColor0...... - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x34, 0x02, // u_params......4. - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........,.CTAB.. - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, // ................ - 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, // ......|...D..... - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, // ......P.......`. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........l..... - 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, // ..s_texColor.... - 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, // params.......... - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 - 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H - 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi - 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, // ler 10.1..Q..... - 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x2f, 0xba, // .....?.......@/. - 0xe8, 0x3e, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, // .>.............. - 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, // ................ - 0xd0, 0xa0, 0x01, 0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // ................ - 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, // .._............. - 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, // ................ - 0xe4, 0x90, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x8b, 0x0f, 0x00, // ................ - 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, // ........U....... - 0x04, 0x80, 0x01, 0x00, 0xaa, 0x8b, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x08, 0x80, 0x01, 0x00, // ................ - 0xff, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x01, 0x00, // ................ - 0xaa, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0e, 0x00, // ................ - 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, // ........U....... - 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, // ................ - 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x02, 0x00, 0xe4, 0x81, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x07, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x0e, 0x00, // ................ - 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x07, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, // ................ - 0x01, 0x80, 0x00, 0x00, 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, // ................ - 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x05, 0x00, // U............... - 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xff, 0xa0, 0x0e, 0x00, // ................ - 0x00, 0x02, 0x00, 0x08, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, // ................ - 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x04, 0x80, 0x00, 0x00, // ....U........... - 0xaa, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0xfd, 0x7f, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x12, 0x00, 0x10, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1a, 0x00, 0xf8, 0x10, 0x00, 0x00, 0x03, // r0.............. + 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xc9, 0x02, 0x00, 0x00, 0x00, // .#.............. + 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, // ...GLSL.std.450. + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. + 0x00, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x79, // ...e...h...l...y + 0x01, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x4d, // ...main........M + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // ...s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x50, 0x00, 0x00, 0x00, 0x73, // pler.......P...s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // _texColorTexture + 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x82, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, // ...........Unifo + 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x82, // rmBlock......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // .......u_params0 + 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, // ...............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x84, // _params1........ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x65, 0x01, 0x00, 0x00, 0x67, // ...........e...g + 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, // l_FragCoord..... + 0x00, 0x05, 0x00, 0x68, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, // ...h...v_color0. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, // .......l...v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x79, 0x01, 0x00, 0x00, 0x62, // coord0.....y...b + 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, // gfx_FragData0..G + 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...M...".......G + 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x47, // ...M...!.......G + 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...P...".......G + 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, // ...P...!.......H + 0x00, 0x05, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, // ...........#.... + 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, // ...H...........# + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x82, 0x00, 0x00, 0x00, 0x02, // .......G........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x84, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G.......".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x84, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, // ...G.......!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x65, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, // ...G...e........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x68, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...h........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, // ...G...l........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x79, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...y........ + 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, // ...........!.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, // ................ + 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, // ....... ........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, // ...L...........; + 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ...L...M....... + 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, // ...O...........; + 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, // ...O...P........ + 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...S... .......+ + 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...S...T.......+ + 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, // ...S...X........ + 0x00, 0x03, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x1e, 0x00, 0x04, 0x00, 0x82, // ...x......@..... + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x83, // ........... .... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x83, // ...........;.... + 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x85, // ................ + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x85, // ... .......+.... + 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x87, // ........... .... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x85, // ..........@+.... + 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x1c, 0x2e, 0x4d, 0x3b, 0x14, 0x00, 0x02, 0x00, 0x9b, // .........M;..... + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x52, // ...+...........R + 0xb8, 0x4e, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x3d, // .NA+...........= + 0x0a, 0x87, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x55, // ..?+...........U + 0x55, 0xd5, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xae, // U.>+............ + 0x47, 0x61, 0x3d, 0x2b, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x00, // Ga=+............ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x01, // ...+............ + 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x98, // ...+............ + 0x3a, 0xd3, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x37, // :.>+...........7 + 0x14, 0xb7, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x9c, // ..>+............ + 0xc4, 0x38, 0x3e, 0x2c, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc4, // .8>,............ + 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xed, 0xc6, 0x59, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, // .........Y>+.... + 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x37, 0x14, 0x37, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, // .......7.7?+.... + 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x7d, 0xd0, 0x93, 0x3d, 0x2c, 0x00, 0x06, 0x00, 0x15, // .......}..=,.... + 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xca, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x21, // ...+...........! + 0x62, 0x9e, 0x3c, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0xef, // b.<+............ + 0x1a, 0xf4, 0x3d, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x21, // ..=+...........! + 0x47, 0x73, 0x3f, 0x2c, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcc, // Gs?,............ + 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xc1, // ...........,.... + 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xcf, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x3a, // ...+...........: + 0xbb, 0xdb, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x7c, // ..?+...........| + 0x1a, 0xb6, 0xbe, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x3a, // ...+...........: + 0xb9, 0x81, 0xbe, 0x2c, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xd7, // ...,............ + 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xd4, 0xab, 0x2a, 0xbf, 0x2b, 0x00, 0x04, 0x00, 0x07, // .........*.+.... + 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xdb, 0xe8, 0xce, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, // ..........?+.... + 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xf1, 0x2c, 0x81, 0x3c, 0x2c, 0x00, 0x06, 0x00, 0x15, // ........,.<,.... + 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xdd, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x8d, // ...+............ + 0x81, 0x90, 0x3c, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x3a, // ..<+...........: + 0x30, 0x2f, 0xbd, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xab, // 0/.+............ + 0x2d, 0x71, 0x3f, 0x2c, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, // -q?,............ + 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xc1, // ...........,.... + 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xe2, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x00, // ...+............ + 0x20, 0x23, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x00, // #>+............ + 0xb0, 0x9d, 0x42, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x00, // ..B+............ + 0x00, 0x56, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, // .V?+............ + 0xd0, 0x96, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x00, // ..A+............ + 0x80, 0x95, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x17, // ..A+............ + 0xb7, 0xd1, 0x38, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, // ..8+............ + 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, // ..?+............ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x00, // ...+............ + 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0x00, // ..?+.......".... + 0x00, 0xc0, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x00, // ..?+.......*.... + 0x00, 0x20, 0x40, 0x20, 0x00, 0x04, 0x00, 0x64, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, // . @ ...d........ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x64, 0x01, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x01, // ...;...d...e.... + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x64, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x01, // ...;...d...h.... + 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, // ... ...k........ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x01, // ...;...k...l.... + 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x78, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, // ... ...x........ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x78, 0x01, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x03, // ...;...x...y.... + 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0xb7, 0x02, 0x00, 0x00, 0x78, // ...,...........x + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x15, // ...x...x...,.... + 0x00, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x11, // ................ + 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0xb9, 0x02, 0x00, 0x00, 0xea, // ...,............ + 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x15, // ...........,.... + 0x00, 0x00, 0x00, 0xba, 0x02, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0xee, // ................ + 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0xbb, 0x02, 0x00, 0x00, 0x01, // ...,............ + 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x15, // ...........,.... + 0x00, 0x00, 0x00, 0xbc, 0x02, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, // ...........=.... + 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, // ...N...M...=.... + 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, // ...Q...P...=.... + 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x15, // ...i...h...=.... + 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, // ...m...l...O.... + 0x00, 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x00, // .......m...m.... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x87, 0x00, 0x00, 0x00, 0xa4, // .......A........ + 0x01, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x3d, // .......X.......= + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x56, // ...............V + 0x00, 0x05, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4e, // ...........Q...N + 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc5, 0x01, 0x00, 0x00, 0xc2, // ...X............ + 0x01, 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, 0x4f, // ...............O + 0x00, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0xc5, 0x01, 0x00, 0x00, 0xc5, // ................ + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, // ................ + 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0xdd, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0xdf, // ................ + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xdd, 0x01, 0x00, 0x00, 0xb7, // ................ + 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x87, 0x00, 0x00, 0x00, 0xcf, 0x01, 0x00, 0x00, 0x84, // ...A............ + 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, // ...X.......=.... + 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0xcf, 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x15, // ...........P.... + 0x00, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0xd0, // ................ + 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xdf, 0x01, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0xd1, // ................ + 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x87, 0x00, 0x00, 0x00, 0xd5, 0x01, 0x00, 0x00, 0x84, // ...A............ + 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, // ...X.......=.... + 0x00, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0xd5, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x91, // ................ + 0x00, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0xd8, // ................ + 0x01, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0e, // ...........O.... + 0x00, 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, 0xc5, 0x01, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, // ................ + 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, 0x69, // ...............i + 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x87, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x84, // ...A............ + 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, // ...T.......=.... + 0x00, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x87, // ...........A.... + 0x00, 0x00, 0x00, 0xb2, 0x01, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xb4, // ...........T.... + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0xb2, // ...=............ + 0x01, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xf7, 0x01, 0x00, 0x00, 0xb1, // ................ + 0x01, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x14, 0x02, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xf7, 0x01, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xff, // ................ + 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xff, 0x01, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x9b, // ................ + 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0xf7, // ...........".... + 0x00, 0x03, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x01, // ................ + 0x02, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x05, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, // ................ + 0x02, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0xb1, // ................ + 0x01, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x12, 0x02, 0x00, 0x00, 0x00, // ...*............ + 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x07, 0x02, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x12, // ................ + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x08, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x15, // ...........O.... + 0x00, 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x15, // ................ + 0x00, 0x00, 0x00, 0x6f, 0x02, 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x90, // ...o............ + 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x02, 0x00, 0x00, 0x6f, 0x02, 0x00, 0x00, 0xe3, // .......u...o.... + 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x75, // ...............u + 0x02, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x82, // ................ + 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x15, // ................ + 0x00, 0x00, 0x00, 0x85, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x82, // ................ + 0x02, 0x00, 0x00, 0xb9, 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x89, // ................ + 0x02, 0x00, 0x00, 0x85, 0x02, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x15, // ................ + 0x00, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, 0xba, 0x02, 0x00, 0x00, 0x89, 0x02, 0x00, 0x00, 0x8e, // ................ + 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, 0x85, 0x02, 0x00, 0x00, 0xf2, // ................ + 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0xbb, // ................ + 0x02, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x91, // ................ + 0x02, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x15, // ................ + 0x00, 0x00, 0x00, 0x94, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x91, // ................ + 0x02, 0x00, 0x00, 0xbc, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x12, 0x02, 0x00, 0x00, 0xf8, // ................ + 0x00, 0x02, 0x00, 0x12, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0xc5, // ................ + 0x02, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x00, 0x05, 0x02, 0x00, 0x00, 0x94, 0x02, 0x00, 0x00, 0x08, // ................ + 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x13, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x02, // ................ + 0x02, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0xae, // ...O............ + 0x01, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x13, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x13, // ................ + 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0xc4, 0x02, 0x00, 0x00, 0xc5, // ................ + 0x02, 0x00, 0x00, 0x12, 0x02, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0xf9, // ................ + 0x00, 0x02, 0x00, 0x14, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x4f, // ...............O + 0x00, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0xae, // ................ + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, // ................ + 0x00, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0xfd, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...............+ + 0x00, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x00, 0xbb, 0x02, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0xfd, 0x01, 0x00, 0x00, 0x00, // .......(........ + 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x44, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, // .......D........ + 0x00, 0x03, 0x00, 0xae, 0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x38, // .......8.......8 + 0x02, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x3a, 0x02, 0x00, 0x00, 0x28, // ...........:...( + 0x02, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x43, 0x02, 0x00, 0x00, 0x00, // ...........C.... + 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x3a, 0x02, 0x00, 0x00, 0x3b, 0x02, 0x00, 0x00, 0x3e, // .......:...;...> + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3e, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, // .......>........ + 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x28, // ...@...........( + 0x02, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x41, // ...............A + 0x02, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, // .......@........ + 0x00, 0x00, 0x00, 0x42, 0x02, 0x00, 0x00, 0x41, 0x02, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xf9, // ...B...A........ + 0x00, 0x02, 0x00, 0x44, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3b, 0x02, 0x00, 0x00, 0x85, // ...D.......;.... + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x02, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x28, // .......=.......( + 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x44, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x43, // .......D.......C + 0x02, 0x00, 0x00, 0xff, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x44, 0x02, 0x00, 0x00, 0xf5, // ...........D.... + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbd, 0x02, 0x00, 0x00, 0x42, 0x02, 0x00, 0x00, 0x3e, // ...........B...> + 0x02, 0x00, 0x00, 0x3d, 0x02, 0x00, 0x00, 0x3b, 0x02, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x15, // ...=...;...R.... + 0x00, 0x00, 0x00, 0xae, 0x02, 0x00, 0x00, 0xbd, 0x02, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0xfd, // ...Q.......,.... + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x56, 0x02, 0x00, 0x00, 0x00, // ...........V.... + 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0xae, 0x00, 0x00, 0x00, 0x4a, 0x02, 0x00, 0x00, 0xf8, // ...........J.... + 0x00, 0x02, 0x00, 0x4a, 0x02, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x4c, // ...J...........L + 0x02, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x55, // ...,...........U + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4c, 0x02, 0x00, 0x00, 0x4d, // ...........L...M + 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x02, 0x00, 0x00, 0x0c, // ...P.......P.... + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x52, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // .......R........ + 0x00, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, // ...,............ + 0x00, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x52, 0x02, 0x00, 0x00, 0x83, // ...S.......R.... + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x54, 0x02, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0xa9, // .......T...S.... + 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x56, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4d, // .......V.......M + 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4f, 0x02, 0x00, 0x00, 0x9f, // ...........O.... + 0x00, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x56, 0x02, 0x00, 0x00, 0xf8, // ...,.......V.... + 0x00, 0x02, 0x00, 0x55, 0x02, 0x00, 0x00, 0xff, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, // ...U...........V + 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbf, 0x02, 0x00, 0x00, 0x54, // ...............T + 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x4f, 0x02, 0x00, 0x00, 0x4d, 0x02, 0x00, 0x00, 0x52, // ...P...O...M...R + 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0xb1, 0x02, 0x00, 0x00, 0xbf, 0x02, 0x00, 0x00, 0xae, // ................ + 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x30, // .......Q.......0 + 0x02, 0x00, 0x00, 0xfd, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x68, // ...............h + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0xae, 0x00, 0x00, 0x00, 0x5c, // ................ + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5c, 0x02, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x9b, // ................ + 0x00, 0x00, 0x00, 0x5e, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xf7, // ...^...0........ + 0x00, 0x03, 0x00, 0x67, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x5e, // ...g...........^ + 0x02, 0x00, 0x00, 0x5f, 0x02, 0x00, 0x00, 0x62, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x62, // ..._...b.......b + 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x64, 0x02, 0x00, 0x00, 0x01, // ...........d.... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x85, // .......0........ + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x65, 0x02, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x64, // .......e.......d + 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x66, 0x02, 0x00, 0x00, 0x65, // ...........f...e + 0x02, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x68, 0x02, 0x00, 0x00, 0xf8, // ...........h.... + 0x00, 0x02, 0x00, 0x5f, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x61, // ..._...........a + 0x02, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x68, // .......0.......h + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x67, 0x02, 0x00, 0x00, 0xff, 0x00, 0x01, 0x00, 0xf8, // .......g........ + 0x00, 0x02, 0x00, 0x68, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc1, // ...h............ + 0x02, 0x00, 0x00, 0x66, 0x02, 0x00, 0x00, 0x62, 0x02, 0x00, 0x00, 0x61, 0x02, 0x00, 0x00, 0x5f, // ...f...b...a..._ + 0x02, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x00, 0xc1, // ...R............ + 0x02, 0x00, 0x00, 0xb1, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x14, // ................ + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x14, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x15, // ................ + 0x00, 0x00, 0x00, 0xc3, 0x02, 0x00, 0x00, 0xc4, 0x02, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0xb4, // ................ + 0x02, 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, // ...h...Q........ + 0x02, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x19, 0x02, 0x00, 0x00, 0xc3, 0x02, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0xc3, // ...Q............ + 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1b, // .......P........ + 0x02, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x19, 0x02, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0x17, // ................ + 0x02, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x79, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, 0xfd, // ...>...y........ + 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ...8..... . }; -static const uint8_t fs_texture_dx11[770] = +static const uint8_t fs_texture_dx9[1452] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xcc, 0x02, // texColor0....... - 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xab, 0xa0, 0x24, 0x5b, 0x96, 0x54, 0x64, 0xb7, 0x42, 0xe5, // ..DXBC..$[.Td.B. - 0xe8, 0xdd, 0xe9, 0x4c, 0x84, 0x1c, 0x01, 0x00, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x03, 0x00, // ...L............ - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS - 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, // ..............b. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO - 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD - 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR - 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xf0, 0x01, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@. - 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..|...Y...F. ... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ......Z....`.... - 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, // ..X....p......UU - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, // ..b...........b. - 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, // ..2.......e.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, // ......h.......H. - 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, // ..........F..... - 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ..F~.......`.... - 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, // .... .........8. - 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, // ..........F..... - 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, // ..F......./...r. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, // ......F......... - 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, // ..6.... ......:. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, // ......8...r..... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xcd, 0xcc, // ..F........@.... - 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, // .@...@...@...... - 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, // ..r.......F..... - 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..2...r.......F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, // ......F.......F. - 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, // ..A.......2...r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ ....... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, // ..F.......F..... - 0x00, 0x00, 0x19, 0x00, 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, // ..............:. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, // .........8...r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..............F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ....../...r..... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, // ..F...........8. - 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..r.......F..... - 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, // ...@../..>/..>/. - 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, // .>........r .... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, // ..F.......>..... - 0x10, 0x00, // .. + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, // ....u_params0... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // ........u_params + 0x31, 0x12, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x05, 0x00, 0x00, 0x00, // 1............... + 0x03, 0xff, 0xff, 0xfe, 0xff, 0x34, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0xa1, // .....4.CTAB..... + 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ + 0x91, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // .......X........ + 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, // ...d.......t.... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, // ...s_texColor... + 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, // ...............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, // _params0........ + 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, // ...........u_par + 0x61, 0x6d, 0x73, 0x31, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, // ams1.ps_3_0.Micr + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, // osoft (R) HLSL S + 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, // hader Compiler 1 + 0x30, 0x2e, 0x31, 0x00, 0xab, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x1c, // 0.1....Q........ + 0x2e, 0x4d, 0x3b, 0x52, 0xb8, 0x4e, 0x41, 0x55, 0x55, 0xd5, 0x3e, 0x17, 0xb7, 0xd1, 0x38, 0x51, // .M;R.NAUU.>...8Q + 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0x3d, 0x0a, 0x87, 0x3f, 0xae, 0x47, 0x61, 0xbd, 0x00, // .......=..?.Ga.. + 0x00, 0xc0, 0xbf, 0x00, 0x00, 0x20, 0xc0, 0x51, 0x00, 0x00, 0x05, 0x04, 0x00, 0x0f, 0xa0, 0x00, // ..... .Q........ + 0xd0, 0x96, 0x41, 0x00, 0x00, 0x56, 0x3f, 0x00, 0x80, 0x95, 0x41, 0x00, 0x00, 0x80, 0x3f, 0x51, // ..A..V?...A...?Q + 0x00, 0x00, 0x05, 0x05, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xcd, // ..........?..... + 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x06, 0x00, 0x0f, 0xa0, 0xed, // ..@...?Q........ + 0xc6, 0x59, 0x3e, 0x37, 0x14, 0x37, 0x3f, 0x7d, 0xd0, 0x93, 0x3d, 0x00, 0xb0, 0x9d, 0x42, 0x51, // .Y>7.7?}..=...BQ + 0x00, 0x00, 0x05, 0x07, 0x00, 0x0f, 0xa0, 0x98, 0x3a, 0xd3, 0x3e, 0x37, 0x14, 0xb7, 0x3e, 0x9c, // ........:.>7..>. + 0xc4, 0x38, 0x3e, 0x00, 0x20, 0x23, 0x3e, 0x51, 0x00, 0x00, 0x05, 0x08, 0x00, 0x0f, 0xa0, 0x21, // .8>. #>Q.......! + 0x62, 0x9e, 0x3c, 0xef, 0x1a, 0xf4, 0x3d, 0x21, 0x47, 0x73, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x51, // b.<...=!Gs?....Q + 0x00, 0x00, 0x05, 0x09, 0x00, 0x0f, 0xa0, 0x3a, 0xbb, 0xdb, 0x3f, 0x7c, 0x1a, 0xb6, 0xbe, 0x3a, // .......:..?|...: + 0xb9, 0x81, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x0a, 0x00, 0x0f, 0xa0, 0xd4, // .......Q........ + 0xab, 0x2a, 0xbf, 0xdb, 0xe8, 0xce, 0x3f, 0xf1, 0x2c, 0x81, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x51, // .*....?.,.<....Q + 0x00, 0x00, 0x05, 0x0b, 0x00, 0x0f, 0xa0, 0x8d, 0x81, 0x90, 0x3c, 0x3a, 0x30, 0x2f, 0xbd, 0xab, // ..........<:0/.. + 0x2d, 0x71, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // -q?............. + 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x05, // ................ + 0x00, 0xd0, 0xa0, 0x01, 0x00, 0xc4, 0x90, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, // ......._........ + 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x00, // ................ + 0x00, 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x8b, 0x0f, // .............U.. + 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x05, 0x00, 0x00, 0x03, 0x01, // ................ + 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0xaa, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, // ................ + 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, // ................ + 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x12, // .U.............. + 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x02, // ................ + 0x00, 0xe4, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0xa0, 0x05, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x05, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x01, // ................ + 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, 0x80, 0x05, 0x00, 0xff, 0xa0, 0x29, 0x00, 0x04, 0x02, 0x01, // ...........).... + 0x00, 0x00, 0xa0, 0x01, 0x00, 0xff, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x17, 0x80, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x20, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x02, // ... ............ + 0x00, 0xaa, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x03, // ................ + 0x00, 0x00, 0xa0, 0x03, 0x00, 0x55, 0xa0, 0x20, 0x00, 0x00, 0x03, 0x01, 0x00, 0x02, 0x80, 0x00, // .....U. ........ + 0x00, 0x00, 0x80, 0x02, 0x00, 0xaa, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x02, 0x80, 0x01, // ................ + 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x55, 0xa0, 0x20, 0x00, 0x00, 0x03, 0x01, // .U.......U. .... + 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0xaa, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, // .....U.......... + 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x55, 0xa0, 0x02, // .............U.. + 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x81, 0x02, 0x00, 0x00, 0xa0, 0x05, // ................ + 0x00, 0x00, 0x03, 0x03, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x55, 0xa0, 0x58, // .............U.X + 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x01, // ................ + 0x00, 0xc9, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x07, // ...*............ + 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x02, 0x80, 0x06, // ................ + 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x04, 0x80, 0x08, // ................ + 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x04, 0x80, 0x0b, // ................ + 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x80, 0x09, // ................ + 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x02, 0x80, 0x0a, // ................ + 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, // ................ + 0x00, 0xe4, 0x80, 0x01, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, // .....U.......... + 0x00, 0xe4, 0x80, 0x02, 0x00, 0xff, 0xa0, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, // ................ + 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0f, // .............U.. + 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, // ................ + 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x07, 0x00, 0xff, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, // ................ + 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, // ................ + 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x04, // .U.............. + 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x04, 0x00, 0xaa, 0xa0, 0x04, // ................ + 0x00, 0xff, 0xa0, 0x06, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x06, // ................ + 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x06, 0x00, 0x00, 0x02, 0x03, // .........U...... + 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0c, 0x80, 0x03, // ................ + 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x80, 0x01, 0x00, 0xee, 0x80, 0x01, // ................ + 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x04, // ................ + 0x00, 0x00, 0xa0, 0x04, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x03, // .....U.......... + 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x02, // ................ + 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x02, 0x00, 0x55, 0x80, 0x0f, // .............U.. + 0x00, 0x00, 0x02, 0x03, 0x00, 0x04, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x02, // ................ + 0x00, 0x07, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x06, 0x00, 0xff, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x03, // ................ + 0x00, 0x01, 0x80, 0x02, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x02, // ................ + 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x03, 0x00, 0x04, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x58, // .U.............X + 0x00, 0x00, 0x04, 0x01, 0x00, 0x0e, 0x80, 0x01, 0x00, 0x55, 0x80, 0x05, 0x00, 0x55, 0xa0, 0x03, // .........U...U.. + 0x00, 0x90, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, // ...X............ + 0x00, 0xf9, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, // .......+........ + 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ............ }; -static const uint8_t fs_texture_mtl[938] = +static const uint8_t fs_texture_dx11[1784] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x03, // FSH............. - 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, // ut {. float4 v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // color0;. float3 - 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, // v_texcoord0;.}; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, // haderOutput {. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // float4 gl_FragCo - 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, // lor;.};.struct x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, // latMtlShaderUnif - 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, // orm {. float4 u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, // _params;.};.frag - 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ment xlatMtlShad - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // erOutput xlatMtl - 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // Main (xlatMtlSha - 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, // derInput _mtl_i - 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, // [[stage_in]], co - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // nstant xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, // aderUniform& _mt - 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, // l_u [[buffer(0)] - 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, // ]. , texture2 - 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // d<float> s_texCo - 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, // lor [[texture(0) - 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // ]], sampler _mtl - 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, // smp_s_texColor [ - 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, // [sampler(0)]]).{ - 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // . xlatMtlShader - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, // Output _mtl_o;. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // float4 _color_1 - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // = 0;. _color_1 - 0x20, 0x3d, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, // = (s_texColor.s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, // ample(_mtlsmp_s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, // texColor, (float - 0x32, 0x29, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // 2)(_mtl_i.v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, // oord0.xy), level - 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // (_mtl_u.u_params - 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, // .x)) * _mtl_i.v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // color0);. float - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // 4 tmpvar_2 = 0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, // tmpvar_2.xyz = - 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, // pow (abs((. - 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x63, // mix (pow (abs(_c - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, // olor_1.xyz), flo - 0x61, 0x74, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, // at3(2.2, 2.2, 2. - 0x32, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // 2)), _color_1.xy - 0x7a, 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // z, _mtl_u.u_para - 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, // ms.z). * . - 0x65, 0x78, 0x70, 0x32, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, // exp2(_mtl_u.u_pa - 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x6c, // rams.w). )), fl - 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, // oat3(0.4545454, - 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, // 0.4545454, 0.454 - 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 5454));. tmpvar - 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, // _2.w = _color_1. - 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, // w;. _mtl_o.gl_F - 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ragColor = tmpva - 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, // r_2;. return _m - 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tl_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x12, 0x00, 0x10, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, // r0..........s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // xColor0......... + 0x90, 0x06, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xa5, 0xc9, 0xc1, 0xcf, 0xd2, 0xcf, 0x2f, 0xfe, // ....DXBC....../. + 0xbc, 0x1f, 0x61, 0x29, 0x3e, 0x1c, 0x0d, 0x81, 0x01, 0x00, 0x00, 0x00, 0x90, 0x06, 0x00, 0x00, // ..a)>........... + 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, // ....,........... + 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNl........... + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // b............... + 0x02, 0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT + 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // ION.COLOR.TEXCOO + 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // RD..OSGN,....... + 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .... ........... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, // ............SV_T + 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xb4, 0x05, 0x00, 0x00, // ARGET...SHDR.... + 0x40, 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, // @...m...Y...F. . + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, // ........Z....`.. + 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....X....p...... + 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // UU..b........... + 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // b...2.......e... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, // . ......h....... + 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, // H...........F... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, // ....F~.......`.. + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ......... + 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, // /...r.......F... + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, // ........8...r... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....F........@.. + 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, // ...@...@...@.... + 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....r.......F... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ........r....... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, // F.......F...A... + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....2...r....... + 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // .. .........F... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x06, // ....F........... + 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ........:. ..... + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8...r....... + 0xf6, 0x0f, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........F....... + 0x38, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // 8...........F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x08, // ....F.......1... + 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // .......... ..... + 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x04, 0x03, // .....@.....?.... + 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x20, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, // ........6 ..r... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x0a, // ....F........... + 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x1c, 0x2e, 0x4d, 0x3b, // r........@....M; + 0x1c, 0x2e, 0x4d, 0x3b, 0x1c, 0x2e, 0x4d, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ..M;..M;....F... + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....8...r....... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x52, 0xb8, 0x4e, 0x41, // F........@..R.NA + 0x52, 0xb8, 0x4e, 0x41, 0x52, 0xb8, 0x4e, 0x41, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, // R.NAR.NA..../... + 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // r.......F....... + 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 8...r.......F... + 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x3e, 0x55, 0x55, 0xd5, 0x3e, // .....@..UU.>UU.> + 0x55, 0x55, 0xd5, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, // UU.>........r... + 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, // ....F.......2... + 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // r.......F....... + 0x02, 0x40, 0x00, 0x00, 0x3d, 0x0a, 0x87, 0x3f, 0x3d, 0x0a, 0x87, 0x3f, 0x3d, 0x0a, 0x87, 0x3f, // .@..=..?=..?=..? + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xae, 0x47, 0x61, 0xbd, 0xae, 0x47, 0x61, 0xbd, // .....@...Ga..Ga. + 0xae, 0x47, 0x61, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, // .Ga.....7...r... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....F.......F... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01, // ....F........... + 0x31, 0x00, 0x00, 0x0b, 0x32, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x80, 0x20, 0x00, // 1...2......... . + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, // .........@.....? + 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, // .. @............ + 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x98, 0x3a, 0xd3, 0x3e, // .........@...:.> + 0x37, 0x14, 0xb7, 0x3e, 0x9c, 0xc4, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 7..>..8>....F... + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ........"....... + 0x02, 0x40, 0x00, 0x00, 0xed, 0xc6, 0x59, 0x3e, 0x37, 0x14, 0x37, 0x3f, 0x7d, 0xd0, 0x93, 0x3d, // .@....Y>7.7?}..= + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, // ....F........... + 0x42, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x21, 0x62, 0x9e, 0x3c, // B........@..!b.< + 0xef, 0x1a, 0xf4, 0x3d, 0x21, 0x47, 0x73, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ...=!Gs?....F... + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x02, 0x40, 0x00, 0x00, 0x3a, 0xbb, 0xdb, 0x3f, 0x7c, 0x1a, 0xb6, 0xbe, 0x3a, 0xb9, 0x81, 0xbe, // .@..:..?|...:... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, // ....F........... + 0x22, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xd4, 0xab, 0x2a, 0xbf, // "........@....*. + 0xdb, 0xe8, 0xce, 0x3f, 0xf1, 0x2c, 0x81, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ...?.,.<....F... + 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // ........B....... + 0x02, 0x40, 0x00, 0x00, 0x8d, 0x81, 0x90, 0x3c, 0x3a, 0x30, 0x2f, 0xbd, 0xab, 0x2d, 0x71, 0x3f, // .@.....<:0/..-q? + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, // ....F.......8... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // r.......F....... + 0x56, 0x85, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, // V. .........8... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // r.......F....... + 0x02, 0x40, 0x00, 0x00, 0x17, 0xb7, 0xd1, 0x38, 0x17, 0xb7, 0xd1, 0x38, 0x17, 0xb7, 0xd1, 0x38, // .@.....8...8...8 + 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ..../...r....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, // F.......8...r... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....F........@.. + 0x00, 0x20, 0x23, 0x3e, 0x00, 0x20, 0x23, 0x3e, 0x00, 0x20, 0x23, 0x3e, 0x00, 0x00, 0x00, 0x00, // . #>. #>. #>.... + 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....r.......F... + 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // ....2...r....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0xd0, 0x96, 0x41, // F........@.....A + 0x00, 0xd0, 0x96, 0x41, 0x00, 0xd0, 0x96, 0x41, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ...A...A.....@.. + 0x00, 0x00, 0x56, 0x3f, 0x00, 0x00, 0x56, 0x3f, 0x00, 0x00, 0x56, 0x3f, 0x00, 0x00, 0x00, 0x00, // ..V?..V?..V?.... + 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 2...r.......F... + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x80, 0x95, 0x41, 0x00, 0x80, 0x95, 0x41, // .....@.....A...A + 0x00, 0x80, 0x95, 0x41, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // ...A.....@.....? + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x07, // ...?...?........ + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // r.......F....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, // F......./...r... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, // ....F.......8... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // r.......F....... + 0x02, 0x40, 0x00, 0x00, 0x00, 0xb0, 0x9d, 0x42, 0x00, 0xb0, 0x9d, 0x42, 0x00, 0xb0, 0x9d, 0x42, // .@.....B...B...B + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ........r....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xe2, 0x00, 0x10, 0x00, // F............... + 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, // ....V........... + 0x02, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....7...r....... + 0x06, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x96, 0x07, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, // ............6... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // . ......F....... + 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, // >..... . +}; +static const uint8_t fs_texture_mtl[3729] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // ...s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, // pler...........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // _texColorTexture + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, // ...........u_par + 0x61, 0x6d, 0x73, 0x31, 0x12, 0x01, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, // ams1...........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x06, 0x0e, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // .......#include + 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, // <metal_stdlib>.# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, // include <simd/si + 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, // md.h>..using nam + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, // espace metal;..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // float4 u_par + 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // ams0;. float4 + 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // u_params1;.};.. + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, // constant float3 + 0x5f, 0x37, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, // _712 = {};..stru + 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, // ct xlatMtlMain_o + 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // ut.{. float4 + 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, // bgfx_FragData0 [ + 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, // [color(0)]];.};. + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // .struct xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ain_in.{. flo + 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, // at4 v_color0 [[u + 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // ser(locn0)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // float3 v_texco + 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, // ord0 [[user(locn + 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, // 1)]];.};..fragme + 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, // nt xlatMtlMain_o + 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, // ut xlatMtlMain(x + 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, // latMtlMain_in in + 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, // [[stage_in]], c + 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, // onstant _Global& + 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, // _mtl_u [[buffer + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, // (0)]], texture2d + 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // <float> s_texCol + 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, // or [[texture(0)] + 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // ], sampler s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, // ColorSampler [[s + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, // ampler(0)]]).{. + 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, // xlatMtlMain_o + 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ut out = {};. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x73, // float4 _453 = s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // _texColor.sample + 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, // (s_texColorSampl + 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // er, in.v_texcoor + 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, // d0.xy, level(_mt + 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, // l_u.u_params0.x) + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, // );. float3 _4 + 0x32, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, // 24 = _453.xyz;. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x20, 0x3d, // float3 _472 = + 0x20, 0x6d, 0x69, 0x78, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x34, 0x32, // mix(pow(abs(_42 + 0x34, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x30, 0x30, // 4), float3(2.200 + 0x30, 0x30, 0x30, 0x30, 0x34, 0x37, 0x36, 0x38, 0x33, 0x37, 0x31, 0x35, 0x38, 0x29, 0x29, 0x2c, // 0000476837158)), + 0x20, 0x5f, 0x34, 0x32, 0x34, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x5f, 0x6d, // _424, float3(_m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x7a, // tl_u.u_params0.z + 0x29, 0x29, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x32, 0x2e, 0x30, 0x2c, 0x20, 0x5f, 0x6d, // )) * pow(2.0, _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, // tl_u.u_params0.w + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, // );. float4 _4 + 0x33, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x34, 0x37, 0x32, // 30 = float4(_472 + 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x34, 0x37, 0x32, // .x, _472.y, _472 + 0x2e, 0x7a, 0x2c, 0x20, 0x5f, 0x34, 0x35, 0x33, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, // .z, _453.w) * in + 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // .v_color0;. f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x30, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // loat3 _707;. + 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, // if (_mtl_u.u_par + 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x0a, 0x20, 0x20, // ams1.x < 0.5). + 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // {. floa + 0x74, 0x33, 0x20, 0x5f, 0x35, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, // t3 _509 = fast:: + 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x5f, 0x34, 0x33, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, // clamp(_430.xyz, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, // float3(0.0), flo + 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // at3(1.0));. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x35, 0x32, 0x20, 0x3d, 0x20, // float _552 = + 0x5f, 0x35, 0x30, 0x39, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _509.x;. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x30, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // float _701;. + 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, // do. { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, // . if + 0x28, 0x5f, 0x35, 0x35, 0x32, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, // (_552 <= 0.00313 + 0x30, 0x38, 0x30, 0x30, 0x30, 0x39, 0x30, 0x37, 0x33, 0x30, 0x31, 0x39, 0x30, 0x33, 0x29, 0x0a, // 08000907301903). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, // _7 + 0x30, 0x31, 0x20, 0x3d, 0x20, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, // 01 = 12.92000007 + 0x36, 0x32, 0x39, 0x33, 0x39, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x35, 0x32, 0x3b, 0x0a, // 6293945 * _552;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, // _701 = (1.05 + 0x34, 0x39, 0x39, 0x39, 0x39, 0x34, 0x37, 0x35, 0x34, 0x37, 0x39, 0x31, 0x32, 0x36, 0x20, 0x2a, // 49999475479126 * + 0x20, 0x70, 0x6f, 0x77, 0x28, 0x5f, 0x35, 0x35, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, // pow(_552, 0.416 + 0x36, 0x36, 0x36, 0x36, 0x35, 0x36, 0x37, 0x33, 0x32, 0x35, 0x35, 0x39, 0x32, 0x29, 0x29, 0x20, // 6666567325592)) + 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x30, 0x31, // - 0.054999999701 + 0x39, 0x37, 0x36, 0x37, 0x37, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 976776;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, // } while(fal + 0x73, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // se);. flo + 0x61, 0x74, 0x33, 0x20, 0x5f, 0x36, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x32, 0x3b, // at3 _686 = _712; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x38, 0x36, 0x2e, 0x78, 0x20, // . _686.x + 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // = _701;. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x30, // float _556 = _50 + 0x39, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // 9.y;. flo + 0x61, 0x74, 0x20, 0x5f, 0x37, 0x30, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // at _703;. + 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, // do. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x35, // if (_5 + 0x35, 0x36, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x30, // 56 <= 0.00313080 + 0x30, 0x30, 0x39, 0x30, 0x37, 0x33, 0x30, 0x31, 0x39, 0x30, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, // 00907301903). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x33, 0x20, // _703 + 0x3d, 0x20, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, 0x32, 0x39, // = 12.92000007629 + 0x33, 0x39, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x35, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, // 3945 * _556;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, // bre + 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ak;. + 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, // }. el + 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, // se. { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // . + 0x20, 0x5f, 0x37, 0x30, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, // _703 = (1.05499 + 0x39, 0x39, 0x34, 0x37, 0x35, 0x34, 0x37, 0x39, 0x31, 0x32, 0x36, 0x20, 0x2a, 0x20, 0x70, 0x6f, // 99475479126 * po + 0x77, 0x28, 0x5f, 0x35, 0x35, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, // w(_556, 0.416666 + 0x36, 0x35, 0x36, 0x37, 0x33, 0x32, 0x35, 0x35, 0x39, 0x32, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, // 6567325592)) - 0 + 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x30, 0x31, 0x39, 0x37, 0x36, // .054999999701976 + 0x37, 0x37, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 776;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, // } while(false) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // ;. float3 + 0x20, 0x5f, 0x36, 0x38, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x36, 0x3b, 0x0a, 0x20, 0x20, // _689 = _686;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x38, 0x39, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, // _689.y = _ + 0x37, 0x30, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // 703;. flo + 0x61, 0x74, 0x20, 0x5f, 0x35, 0x36, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x30, 0x39, 0x2e, 0x7a, // at _560 = _509.z + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // ;. float + 0x5f, 0x37, 0x30, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, // _705;. do + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // . {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x35, 0x36, 0x30, 0x20, // if (_560 + 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x30, 0x30, 0x30, 0x39, // <= 0.00313080009 + 0x30, 0x37, 0x33, 0x30, 0x31, 0x39, 0x30, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 07301903). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x31, // _705 = 1 + 0x32, 0x2e, 0x39, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, 0x32, 0x39, 0x33, 0x39, 0x34, // 2.92000007629394 + 0x35, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x36, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 5 * _560;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, // break; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, // . }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, // _7 + 0x30, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x34, // 05 = (1.05499994 + 0x37, 0x35, 0x34, 0x37, 0x39, 0x31, 0x32, 0x36, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x5f, // 75479126 * pow(_ + 0x35, 0x36, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x36, 0x35, 0x36, // 560, 0.416666656 + 0x37, 0x33, 0x32, 0x35, 0x35, 0x39, 0x32, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, // 7325592)) - 0.05 + 0x34, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x30, 0x31, 0x39, 0x37, 0x36, 0x37, 0x37, 0x36, // 4999999701976776 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ;. + 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, // }. } + 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0a, 0x20, // while(false);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x36, // float3 _6 + 0x39, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // 92 = _689;. + 0x20, 0x20, 0x20, 0x5f, 0x36, 0x39, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x35, // _692.z = _705 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x37, 0x20, 0x3d, // ;. _707 = + 0x20, 0x5f, 0x36, 0x39, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, // _692;. }. + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // else. {. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x30, 0x38, 0x3b, // float3 _708; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, // . if (_mt + 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, // l_u.u_params1.x + 0x3c, 0x20, 0x31, 0x2e, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, // < 1.5). { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, // . _70 + 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x33, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, // 8 = _430.xyz;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // else. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // float + 0x33, 0x20, 0x5f, 0x37, 0x30, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 3 _709;. + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // if (_mtl_u.u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x2e, 0x35, // _params1.x < 2.5 + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, // ). {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x36, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x6f, // float3 _645 = po + 0x77, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x34, 0x33, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, // w((((_430.xyz * + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, // float3x3(float3( + 0x30, 0x2e, 0x34, 0x31, 0x32, 0x35, 0x35, 0x36, 0x34, 0x30, 0x39, 0x38, 0x33, 0x35, 0x38, 0x31, // 0.41255640983581 + 0x35, 0x34, 0x33, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x30, 0x32, // 543, 0.357576102 + 0x30, 0x31, 0x38, 0x33, 0x35, 0x36, 0x33, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x38, 0x30, 0x34, // 01835632, 0.1804 + 0x33, 0x37, 0x35, 0x30, 0x35, 0x32, 0x34, 0x35, 0x32, 0x30, 0x38, 0x37, 0x34, 0x29, 0x2c, 0x20, // 3750524520874), + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x32, 0x31, 0x32, 0x36, 0x37, 0x32, 0x39, // float3(0.2126729 + 0x30, 0x34, 0x31, 0x33, 0x33, 0x37, 0x39, 0x36, 0x36, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, // 0413379669, 0.71 + 0x35, 0x31, 0x35, 0x32, 0x32, 0x30, 0x34, 0x30, 0x33, 0x36, 0x37, 0x31, 0x32, 0x36, 0x35, 0x2c, // 515220403671265, + 0x20, 0x30, 0x2e, 0x30, 0x37, 0x32, 0x31, 0x37, 0x35, 0x30, 0x30, 0x33, 0x35, 0x38, 0x38, 0x31, // 0.0721750035881 + 0x39, 0x39, 0x36, 0x31, 0x35, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, // 99615), float3(0 + 0x2e, 0x30, 0x31, 0x39, 0x33, 0x33, 0x33, 0x39, 0x30, 0x30, 0x38, 0x38, 0x33, 0x37, 0x39, 0x33, // .019333900883793 + 0x38, 0x33, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x31, 0x39, 0x39, 0x36, // 831, 0.119191996 + 0x37, 0x35, 0x33, 0x32, 0x31, 0x35, 0x37, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x35, 0x30, 0x33, // 75321579, 0.9503 + 0x30, 0x34, 0x30, 0x39, 0x30, 0x39, 0x37, 0x36, 0x37, 0x31, 0x35, 0x30, 0x39, 0x29, 0x29, 0x29, // 0409097671509))) + 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x6c, 0x6f, 0x61, // * float3x3(floa + 0x74, 0x33, 0x28, 0x31, 0x2e, 0x37, 0x31, 0x36, 0x36, 0x35, 0x31, 0x32, 0x30, 0x31, 0x32, 0x34, // t3(1.71665120124 + 0x38, 0x31, 0x36, 0x38, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, // 81689, -0.355670 + 0x38, 0x30, 0x39, 0x37, 0x34, 0x35, 0x37, 0x38, 0x38, 0x35, 0x37, 0x2c, 0x20, 0x2d, 0x30, 0x2e, // 80974578857, -0. + 0x32, 0x35, 0x33, 0x33, 0x36, 0x36, 0x32, 0x39, 0x31, 0x35, 0x32, 0x32, 0x39, 0x37, 0x39, 0x37, // 2533662915229797 + 0x34, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x36, 0x36, // 4), float3(-0.66 + 0x36, 0x36, 0x38, 0x34, 0x33, 0x38, 0x39, 0x31, 0x31, 0x34, 0x33, 0x37, 0x39, 0x38, 0x38, 0x2c, // 668438911437988, + 0x20, 0x31, 0x2e, 0x36, 0x31, 0x36, 0x34, 0x38, 0x31, 0x31, 0x38, 0x34, 0x39, 0x35, 0x39, 0x34, // 1.6164811849594 + 0x31, 0x31, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x30, 0x30, // 116, 0.015768500 + 0x30, 0x34, 0x34, 0x39, 0x34, 0x31, 0x39, 0x30, 0x32, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, // 044941902), floa + 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x31, 0x37, 0x36, 0x33, 0x39, 0x38, 0x39, 0x39, 0x36, 0x32, // t3(0.01763989962 + 0x36, 0x33, 0x37, 0x34, 0x32, 0x34, 0x35, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, 0x37, // 6374245, -0.0427 + 0x37, 0x30, 0x36, 0x30, 0x31, 0x38, 0x30, 0x39, 0x30, 0x32, 0x34, 0x38, 0x31, 0x31, 0x2c, 0x20, // 70601809024811, + 0x30, 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x30, 0x38, 0x37, 0x39, 0x30, 0x32, 0x30, 0x36, // 0.94210308790206 + 0x39, 0x30, 0x39, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // 909))) * _mtl_u. + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x39, // u_params1.y) * 9 + 0x2e, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x34, 0x37, 0x33, 0x37, 0x38, 0x37, 0x35, 0x31, // .999999747378751 + 0x36, 0x65, 0x2d, 0x30, 0x30, 0x35, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, // 6e-005, float3(0 + 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x37, 0x35, 0x37, 0x38, 0x31, 0x32, 0x35, 0x29, 0x29, // .1593017578125)) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ;. + 0x20, 0x20, 0x5f, 0x37, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x28, 0x66, 0x6c, // _709 = pow((fl + 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x38, 0x33, 0x35, 0x39, 0x33, 0x37, 0x35, 0x29, 0x20, // oat3(0.8359375) + 0x2b, 0x20, 0x28, 0x5f, 0x36, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x31, 0x38, 0x2e, 0x38, 0x35, 0x31, // + (_645 * 18.851 + 0x35, 0x36, 0x32, 0x35, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // 5625)) / (float3 + 0x28, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x36, 0x34, 0x35, 0x20, 0x2a, 0x20, // (1.0) + (_645 * + 0x31, 0x38, 0x2e, 0x36, 0x38, 0x37, 0x35, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // 18.6875)), float + 0x33, 0x28, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 3(78.84375));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x39, 0x20, // _709 + 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, // = float3(0.0);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x38, 0x20, 0x3d, 0x20, // _708 = + 0x5f, 0x37, 0x30, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, // _709;. }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x5f, // _707 = _ + 0x37, 0x30, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, // 708;. }. o + 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, // ut.bgfx_FragData + 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x37, 0x30, 0x37, 0x2c, // 0 = float4(_707, + 0x20, 0x5f, 0x34, 0x33, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // _430.w);. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x40, // turn out;.}....@ + 0x00, // . }; extern const uint8_t* fs_texture_pssl; extern const uint32_t fs_texture_pssl_size; diff --git a/3rdparty/bgfx/tools/texturev/fs_texture.sc b/3rdparty/bgfx/tools/texturev/fs_texture.sc index 07994ca9f6c..c4211343ff0 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture.sc +++ b/3rdparty/bgfx/tools/texturev/fs_texture.sc @@ -1,8 +1,8 @@ $input v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" @@ -12,5 +12,8 @@ SAMPLER2D(s_texColor, 0); void main() { vec4 color = texture2DLod(s_texColor, v_texcoord0.xy, u_textureLod); - gl_FragColor = toEv(color * v_color0); + color.xyz = applyExposure(color.xyz); + color *= v_color0; + + gl_FragColor = toOutput(color, u_outputFormat, u_sdrWhiteNits); } diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_3d.bin.h b/3rdparty/bgfx/tools/texturev/fs_texture_3d.bin.h index 4c5339dc3b1..f54b675e37c 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_3d.bin.h +++ b/3rdparty/bgfx/tools/texturev/fs_texture_3d.bin.h @@ -1,336 +1,1054 @@ -static const uint8_t fs_texture_3d_glsl[592] = +static const uint8_t fs_texture_3d_glsl[2409] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x1d, 0x02, // texColor........ - 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ..varying vec4 v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // _color0;.varying - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec3 v_texcoord - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // 0;.uniform vec4 - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // u_params;.unifor - 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x33, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, // m sampler3D s_te - 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, // xColor;.void mai - 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, // n ().{. vec3 tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_1;. tmpvar - 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // _1.xy = v_texcoo - 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // rd0.xy;. tmpvar - 0x5f, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, // _1.z = u_params. - 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // y;. vec4 _color - 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x20, 0x3d, // _2;. _color_2 = - 0x20, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x33, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x28, // (texture3DLod ( - 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, // s_texColor, tmpv - 0x61, 0x72, 0x5f, 0x31, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, // ar_1, u_params.x - 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, // ) * v_color0);. - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, // vec4 tmpvar_3;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, // tmpvar_3.xyz = - 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, // pow (abs((. - 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x63, // mix (pow (abs(_c - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, // olor_2.xyz), vec - 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, // 3(2.2, 2.2, 2.2) - 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, // ), _color_2.xyz, - 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, // u_params.z). - 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, // * . exp2(u_pa - 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, // rams.w). )), ve - 0x63, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, // c3(0.4545454, 0. - 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, // 4545454, 0.45454 - 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // 54));. tmpvar_3 - 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, // .w = _color_2.w; - 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, // . gl_FragColor - 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // = tmpvar_3;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x02, 0x01, 0x00, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x00, 0x00, 0x76, // r..............v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, // arying vec4 v_co + 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, // lor0;.varying ve + 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // c3 v_texcoord0;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, // uniform vec4 u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // arams0;.uniform + 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, // vec4 u_params1;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x33, // uniform sampler3 + 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, // D s_texColor;.vo + 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, // id main ().{. v + 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, // ec4 color_1;. v + 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, // ec3 tmpvar_2;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, // tmpvar_2.xy = v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, // texcoord0.xy;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x70, // tmpvar_2.z = u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // arams0.y;. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_3;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x33, // var_3 = texture3 + 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // DLod (s_texColor + 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, // , tmpvar_2, u_pa + 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // rams0.x);. colo + 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // r_1.w = tmpvar_3 + 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // .w;. color_1.xy + 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x0a, // z = (mix (pow (. + 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // abs(tmpvar_3 + 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, // .xyz). , vec3(2 + 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, // .2, 2.2, 2.2)), + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, // tmpvar_3.xyz, u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, // params0.z) * exp + 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, // 2(u_params0.w)); + 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, // . color_1 = (co + 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // lor_1 * v_color0 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, // );. vec3 outCol + 0x6f, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, // or_4;. vec3 tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_5;. tmpvar_ + 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 5.x = 0.0;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_5.y = 0.0;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x30, 0x2e, // tmpvar_5.z = 0. + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, 0x20, // 0;. outColor_4 + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, // = tmpvar_5;. if + 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, // ((u_params1.x < + 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, // 0.5)) {. vec + 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 3 tmpvar_6;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, // tmpvar_6 = clamp + 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x30, // (color_1.xyz, 0 + 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, // .0, 1.0);. ve + 0x63, 0x33, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, // c3 _rgb_7;. _ + 0x72, 0x67, 0x62, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // rgb_7 = tmpvar_6 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // ;. float tmpv + 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, // ar_8;. if ((t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, // mpvar_6.x <= 0.0 + 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // 031308)) {. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, // tmpvar_8 = (12. + 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x29, // 92 * tmpvar_6.x) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, // ;. } else {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, // tmpvar_8 = + 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, // ((1.055 * pow (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, // mpvar_6.x, 0.416 + 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, // 6667)) - 0.055); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, // . };. _rgb + 0x5f, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, // _7.x = tmpvar_8; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // . float tmpva + 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, // r_9;. if ((tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x79, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, // pvar_6.y <= 0.00 + 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 31308)) {. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, // tmpvar_9 = (12.9 + 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x79, 0x29, 0x3b, // 2 * tmpvar_6.y); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, // . } else {. + 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, // tmpvar_9 = ( + 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, // (1.055 * pow (tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x79, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, // pvar_6.y, 0.4166 + 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, // 667)) - 0.055);. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, // };. _rgb_ + 0x37, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, // 7.y = tmpvar_9;. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // float tmpvar + 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, // _10;. if ((tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, // pvar_6.z <= 0.00 + 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 31308)) {. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, // tmpvar_10 = (12. + 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, 0x29, // 92 * tmpvar_6.z) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, // ;. } else {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, // tmpvar_10 = + 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // ((1.055 * pow ( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, // tmpvar_6.z, 0.41 + 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, // 66667)) - 0.055) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, // ;. };. _rg + 0x62, 0x5f, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // b_7.z = tmpvar_1 + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // 0;. outColor_ + 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, // 4 = _rgb_7;. } + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, // else {. if (( + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x31, 0x2e, // u_params1.x < 1. + 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, // 5)) {. outC + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // olor_4 = color_1 + 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, // .xyz;. } else + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, // {. if ((u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x2e, 0x35, 0x29, // params1.x < 2.5) + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, // ) {. vec3 + 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // _color_11;. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, // _color_11 = + 0x28, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x37, 0x31, 0x36, 0x36, 0x35, 0x31, 0x2c, // ((mat3(1.716651, + 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, 0x38, 0x2c, 0x20, 0x2d, 0x30, 0x2e, // -0.3556708, -0. + 0x32, 0x35, 0x33, 0x33, 0x36, 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x36, 0x36, 0x36, 0x36, // 2533663, -0.6666 + 0x38, 0x34, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x36, 0x34, 0x38, 0x31, 0x2c, 0x20, 0x30, // 844, 1.616481, 0 + 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x37, 0x36, // .0157685, 0.0176 + 0x33, 0x39, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, 0x37, 0x37, 0x30, 0x36, 0x2c, // 399, -0.0427706, + 0x20, 0x30, 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x6d, // 0.9421031) * (m + 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x31, 0x32, 0x35, 0x35, 0x36, 0x34, 0x2c, 0x20, 0x30, // at3(0.4125564, 0 + 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x38, 0x30, 0x34, // .3575761, 0.1804 + 0x33, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x31, 0x32, 0x36, 0x37, 0x32, 0x39, 0x2c, 0x20, // 375, 0.2126729, + 0x30, 0x2e, 0x37, 0x31, 0x35, 0x31, 0x35, 0x32, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x37, 0x32, // 0.7151522, 0.072 + 0x31, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x39, 0x33, 0x33, 0x33, 0x39, 0x2c, 0x20, // 175, 0.0193339, + 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x35, 0x30, 0x33, // 0.119192, 0.9503 + 0x30, 0x34, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, // 041) * color_1.x + 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, // yz)) * u_params1 + 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, // .y);. vec + 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, // 3 tmpvar_12;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, // tmpvar_12 = + 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x31, // pow ((_color_11 + 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x31, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, // * 0.0001), vec3 + 0x28, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, // (0.1593018, 0.15 + 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, // 93018, 0.1593018 + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, // ));. vec3 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // tmpvar_13;. + 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, // tmpvar_13 = + 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x28, 0x30, 0x2e, 0x38, 0x33, 0x35, 0x39, 0x33, 0x37, 0x35, // pow (((0.8359375 + 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, // + . (1 + 0x38, 0x2e, 0x38, 0x35, 0x31, 0x35, 0x36, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 8.85156 * tmpvar + 0x5f, 0x31, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x2f, // _12). ) / + 0x20, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, // (vec3(1.0, 1.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 1.0) + . + 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, 0x36, 0x38, 0x37, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, // (18.6875 * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // pvar_12). + 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, // )), vec3(78.843 + 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, // 75, 78.84375, 78 + 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // .84375));. + 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x6d, // _color_11 = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // pvar_13;. + 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x6d, // outColor_4 = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, // pvar_13;. } + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // ;. };. };. + 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, // vec4 tmpvar_14;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, // tmpvar_14.xyz + 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, // = outColor_4;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x63, 0x6f, // tmpvar_14.w = co + 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, // lor_1.w;. gl_Fr + 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // agColor = tmpvar + 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _14;.}... }; -static const uint8_t fs_texture_3d_spv[2033] = +static const uint8_t fs_texture_3d_essl[2564] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0xcc, 0x07, 0x00, // _params......... - 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x3b, 0x01, 0x00, // ...#.........;.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, // .....GLSL.std.45 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // 0............... - 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai - 0x6e, 0x00, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, // n............... - 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // ................ - 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // .main........... - 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x33, 0x44, 0x00, 0x00, // .BgfxSampler3D.. - 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, // .............m_s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // ampler.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, // .....m_texture.. - 0x00, 0x05, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....6...s_texCo - 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x38, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, // lor......8...s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, // exColorSampler.. - 0x00, 0x05, 0x00, 0x07, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....;...s_texCo - 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, // lorTexture...... - 0x00, 0x76, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, // .v...$Global.... - 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // .v.......u_param - 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s........x...... - 0x00, 0x05, 0x00, 0x05, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // .........v_color - 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, // 0............v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xc2, 0x00, 0x00, // excoord0........ - 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, // .bgfx_FragData0. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...;..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...;...!...... - 0x00, 0x48, 0x00, 0x05, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...v.......#.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x76, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....G...v...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...x..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x47, 0x00, 0x04, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .G.............. - 0x00, 0x47, 0x00, 0x04, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, // .........!...... - 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, // ................ - 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, // ..... .......... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, // ................ - 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. .. - 0x00, 0x35, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .5...........;.. - 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .5...6....... .. - 0x00, 0x37, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .7...........;.. - 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .7...8....... .. - 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .:...........;.. - 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // .:...;.......... - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .>... .......+.. - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, // .>...C.......... - 0x00, 0x47, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .G.......+...... - 0x00, 0x63, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .c......@+...... - 0x00, 0x6b, 0x00, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x1e, 0x00, 0x03, 0x00, 0x76, 0x00, 0x00, // .k.../..>....v.. - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... ...w...... - 0x00, 0x76, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, // .v...;...w...x.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // .........y... .. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, // .....+...y...z.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... ...{...... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, // .....+.......... - 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, // ....@+...y...... - 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, // .....+...y...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, // .....+...y...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ..... .......... - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, // .....;.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ..... .......... - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, // .....;.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ..... .......... - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, // .....;.......... - 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x39, 0x01, 0x00, // .....,.......9.. - 0x00, 0x63, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, // .c...c...c...,.. - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, // .....:...k...k.. - 0x00, 0x6b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .k...6.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, // ................ - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, // .=.......9...8.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, // .=.......<...;.. - 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, // .P.......=...9.. - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, // .<...>...6...=.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, // .=.............. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, // .=.............. - 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, // .A...{.......x.. - 0x00, 0x43, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .C.......=...... - 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // .........Q...... - 0x00, 0xe2, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, // .P.............. - 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, // .........=...... - 0x00, 0xe5, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .....6...Q...... - 0x00, 0x35, 0x01, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .5...........Q.. - 0x00, 0x08, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....6.......... - 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, // .A...{.......x.. - 0x00, 0x43, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .C.......=...... - 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, // .........V...G.. - 0x00, 0xf8, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x58, 0x00, 0x07, // .....6...5...X.. - 0x00, 0x0e, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, // ................ - 0x00, 0x02, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, // ................ - 0x00, 0xeb, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, // .............O.. - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, // ................ - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x04, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, // .............9.. - 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, // .A...{.......x.. - 0x00, 0x43, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .C...z...=...... - 0x00, 0x07, 0x01, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, // .........P...... - 0x00, 0x08, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, // ................ - 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0xeb, 0x00, 0x00, // .O.............. - 0x00, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // .........'...... - 0x00, 0x2e, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x08, 0x01, 0x00, // ................ - 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, // .A...{.......x.. - 0x00, 0x43, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .C.......=...... - 0x00, 0x0e, 0x01, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // ................ - 0x00, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, // ................ - 0x00, 0x0e, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, // ................ - 0x00, 0x27, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, // .'.............. - 0x00, 0x2b, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, // .+.............. - 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // .........-...... - 0x00, 0x1a, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, // .....+...:...Q.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, // .Q...........-.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, // .....Q.......... - 0x00, 0x2d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // .-.......Q...... - 0x00, 0x16, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, // .....-.......P.. - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x15, 0x01, 0x00, // ................ - 0x00, 0x16, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xc2, 0x00, 0x00, // .........>...... - 0x00, 0x17, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, // .........8...... - 0x00, // . + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x02, 0x01, 0x00, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x09, 0x00, 0x00, 0x76, // r..............v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec + 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ing highp vec3 v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, // orm highp vec4 u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // _params0;.unifor + 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, // m highp vec4 u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // arams1;.uniform + 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x33, 0x44, 0x20, 0x73, // lowp sampler3D s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // _texColor;.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // main ().{. lowp + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 color_1;. + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp vec3 tmpv + 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // ar_2;. tmpvar_2 + 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // .xy = v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // 0.xy;. tmpvar_2 + 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x79, // .z = u_params0.y + 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, // ;. lowp vec4 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_3;. tmpvar + 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x33, 0x44, 0x4c, 0x6f, // _3 = texture3DLo + 0x64, 0x45, 0x58, 0x54, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // dEXT (s_texColor + 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, // , tmpvar_2, u_pa + 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // rams0.x);. colo + 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // r_1.w = tmpvar_3 + 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // .w;. color_1.xy + 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x0a, // z = (mix (pow (. + 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // abs(tmpvar_3 + 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, // .xyz). , vec3(2 + 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, // .2, 2.2, 2.2)), + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, // tmpvar_3.xyz, u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, // params0.z) * exp + 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, // 2(u_params0.w)); + 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, // . color_1 = (co + 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // lor_1 * v_color0 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, // );. mediump vec + 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, // 4 tmpvar_4;. lo + 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // wp vec3 outColor + 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // _5;. lowp vec3 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_6;. tmpv + 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, // ar_6.x = 0.0;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, // tmpvar_6.y = 0.0 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, 0x20, 0x3d, // ;. tmpvar_6.z = + 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // 0.0;. outColor + 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, // _5 = tmpvar_6;. + 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, // if ((u_params1. + 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // x < 0.5)) {. + 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // lowp vec3 tmpvar + 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, // _7;. tmpvar_7 + 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // = clamp (color_ + 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // 1.xyz, 0.0, 1.0) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // ;. lowp vec3 + 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, // _rgb_8;. _rgb + 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, // _8 = tmpvar_7;. + 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // lowp float tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, // pvar_9;. if ( + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x78, 0x20, 0x3c, 0x3d, 0x20, 0x30, // (tmpvar_7.x <= 0 + 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // .0031308)) {. + 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x31, // tmpvar_9 = (1 + 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, // 2.92 * tmpvar_7. + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, // x);. } else { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, // . tmpvar_9 + 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, // = ((1.055 * pow + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x34, // (tmpvar_7.x, 0.4 + 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, // 166667)) - 0.055 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, // );. };. _r + 0x67, 0x62, 0x5f, 0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // gb_8.x = tmpvar_ + 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, // 9;. lowp floa + 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // t tmpvar_10;. + 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x79, // if ((tmpvar_7.y + 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, // <= 0.0031308)) + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // {. tmpvar_1 + 0x30, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // 0 = (12.92 * tmp + 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, // var_7.y);. } + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // else {. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, // var_10 = ((1.055 + 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, // * pow (tmpvar_7 + 0x2e, 0x79, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, // .y, 0.4166667)) + 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, // - 0.055);. }; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, // . _rgb_8.y = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, // tmpvar_10;. l + 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // owp float tmpvar + 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, // _11;. if ((tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x7a, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, // pvar_7.z <= 0.00 + 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 31308)) {. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, // tmpvar_11 = (12. + 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x7a, 0x29, // 92 * tmpvar_7.z) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, // ;. } else {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, // tmpvar_11 = + 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // ((1.055 * pow ( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, // tmpvar_7.z, 0.41 + 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, // 66667)) - 0.055) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, // ;. };. _rg + 0x62, 0x5f, 0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // b_8.z = tmpvar_1 + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // 1;. outColor_ + 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, // 5 = _rgb_8;. } + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, // else {. if (( + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x31, 0x2e, // u_params1.x < 1. + 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, // 5)) {. outC + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // olor_5 = color_1 + 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, // .xyz;. } else + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, // {. if ((u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x2e, 0x35, 0x29, // params1.x < 2.5) + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // ) {. lowp + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x32, 0x3b, // vec3 _color_12; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // . _color_ + 0x31, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x37, 0x31, // 12 = ((mat3(1.71 + 0x36, 0x36, 0x35, 0x31, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, 0x38, // 6651, -0.3556708 + 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x32, 0x35, 0x33, 0x33, 0x36, 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x30, // , -0.2533663, -0 + 0x2e, 0x36, 0x36, 0x36, 0x36, 0x38, 0x34, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x36, 0x34, // .6666844, 1.6164 + 0x38, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x2c, 0x20, 0x30, // 81, 0.0157685, 0 + 0x2e, 0x30, 0x31, 0x37, 0x36, 0x33, 0x39, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, // .0176399, -0.042 + 0x37, 0x37, 0x30, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x31, 0x29, // 7706, 0.9421031) + 0x20, 0x2a, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x31, 0x32, 0x35, 0x35, // * (mat3(0.41255 + 0x36, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x2c, 0x20, 0x30, // 64, 0.3575761, 0 + 0x2e, 0x31, 0x38, 0x30, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x31, 0x32, 0x36, // .1804375, 0.2126 + 0x37, 0x32, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x35, 0x31, 0x35, 0x32, 0x32, 0x2c, 0x20, // 729, 0.7151522, + 0x30, 0x2e, 0x30, 0x37, 0x32, 0x31, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x39, 0x33, // 0.072175, 0.0193 + 0x33, 0x33, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x32, 0x2c, 0x20, 0x30, // 339, 0.119192, 0 + 0x2e, 0x39, 0x35, 0x30, 0x33, 0x30, 0x34, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // .9503041) * colo + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, // r_1.xyz)) * u_pa + 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // rams1.y);. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // lowp vec3 tmpv + 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, // ar_13;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // mpvar_13 = pow ( + 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x30, // (_color_12 * 0.0 + 0x30, 0x30, 0x31, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x31, 0x35, 0x39, // 001), vec3(0.159 + 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, // 3018, 0.1593018, + 0x20, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 0.1593018));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // lowp vec3 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // tmpvar_14;. + 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x70, // tmpvar_14 = p + 0x6f, 0x77, 0x20, 0x28, 0x28, 0x28, 0x30, 0x2e, 0x38, 0x33, 0x35, 0x39, 0x33, 0x37, 0x35, 0x20, // ow (((0.8359375 + 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, // + . (18 + 0x2e, 0x38, 0x35, 0x31, 0x35, 0x36, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // .85156 * tmpvar_ + 0x31, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, // 13). ) / + 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, // (vec3(1.0, 1.0, + 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 1.0) + . + 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, 0x36, 0x38, 0x37, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // (18.6875 * tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // var_13). + 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, // )), vec3(78.8437 + 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, // 5, 78.84375, 78. + 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 84375));. + 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // _color_12 = tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // var_14;. + 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // outColor_5 = tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, // var_14;. }; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // . };. };. l + 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // owp vec4 tmpvar_ + 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, // 15;. tmpvar_15. + 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x35, // xyz = outColor_5 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x77, 0x20, // ;. tmpvar_15.w + 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x74, // = color_1.w;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // mpvar_4 = tmpvar + 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // _15;. gl_FragCo + 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, // lor = tmpvar_4;. + 0x7d, 0x0a, 0x0a, 0x00, // }... }; -static const uint8_t fs_texture_3d_dx9[611] = +static const uint8_t fs_texture_3d_spv[4487] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x08, // _texColor0...... - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x30, 0x02, // u_params......0. - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........,.CTAB.. - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, // ................ - 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, // ......|...D..... - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, // ......P.......`. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........l..... - 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, // ..s_texColor.... - 0x0d, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, // params.......... - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 - 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H - 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi - 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, // ler 10.1..Q..... - 0x0f, 0xa0, 0xcd, 0xcc, 0x0c, 0x40, 0x2f, 0xba, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....@/..>...... - 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, // ................ - 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0xa0, 0x00, 0x08, 0x0f, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x80, 0x01, 0x00, // ................ - 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x00, 0x14, 0xa0, 0x5f, 0x00, // .............._. - 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, // ................ - 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x0f, 0x00, // ................ - 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, // ................ - 0x02, 0x80, 0x01, 0x00, 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, // ....U........... - 0xaa, 0x8b, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x08, 0x80, 0x01, 0x00, 0xff, 0x80, 0x05, 0x00, // ................ - 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0xa0, 0x0e, 0x00, // ................ - 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, // ................ - 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, // ....U........... - 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, // ................ - 0xe4, 0x90, 0x02, 0x00, 0xe4, 0x81, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, // ................ - 0xaa, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x08, 0x80, 0x00, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, // ................ - 0xff, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ - 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x8b, 0x0f, 0x00, // ............U... - 0x00, 0x02, 0x01, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x55, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, // ........U....... - 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, // ................ - 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0xff, 0xff, // U............... - 0x00, 0x00, 0x00, // ... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0xfd, 0x7f, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x12, 0x00, 0x10, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1a, 0x00, 0x34, 0x11, 0x00, 0x00, 0x03, // r0.........4.... + 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xd2, 0x02, 0x00, 0x00, 0x00, // .#.............. + 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, // ...GLSL.std.450. + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. + 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x7d, // ...i...l...p...} + 0x01, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x4b, // ...main........K + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // ...s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x73, // pler.......N...s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // _texColorTexture + 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, // ...........Unifo + 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x80, // rmBlock......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // .......u_params0 + 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, // ...............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x82, // _params1........ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x69, 0x01, 0x00, 0x00, 0x67, // ...........i...g + 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, // l_FragCoord..... + 0x00, 0x05, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, // ...l...v_color0. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x70, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, // .......p...v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x7d, 0x01, 0x00, 0x00, 0x62, // coord0.....}...b + 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, // gfx_FragData0..G + 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...K...".......G + 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x47, // ...K...!.......G + 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...N...".......G + 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, // ...N...!.......H + 0x00, 0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, // ...........#.... + 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, // ...H...........# + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, // .......G........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G.......".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, // ...G.......!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x69, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, // ...G...i........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...l........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x70, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, // ...G...p........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7d, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...}........ + 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, // ...........!.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, // ................ + 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, // ....... ........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, // ...J...........; + 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ...J...K....... + 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, // ...M...........; + 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, // ...M...N........ + 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...Q... .......+ + 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...Q...R.......+ + 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, // ...Q...V........ + 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...Z.......+.... + 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x1e, 0x00, 0x04, 0x00, 0x80, // ...v......@..... + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x81, // ........... .... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x81, // ...........;.... + 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x83, // ................ + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x83, // ... .......+.... + 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x85, // ........... .... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x83, // ..........@+.... + 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x1c, 0x2e, 0x4d, 0x3b, 0x14, 0x00, 0x02, 0x00, 0x99, // .........M;..... + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x52, // ...+...........R + 0xb8, 0x4e, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x3d, // .NA+...........= + 0x0a, 0x87, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x55, // ..?+...........U + 0x55, 0xd5, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xae, // U.>+............ + 0x47, 0x61, 0x3d, 0x2b, 0x00, 0x04, 0x00, 0x83, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, // Ga=+............ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x83, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x01, // ...+............ + 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x98, // ...+............ + 0x3a, 0xd3, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x37, // :.>+...........7 + 0x14, 0xb7, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x9c, // ..>+............ + 0xc4, 0x38, 0x3e, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc2, // .8>,............ + 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xed, 0xc6, 0x59, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, // .........Y>+.... + 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x37, 0x14, 0x37, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, // .......7.7?+.... + 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x7d, 0xd0, 0x93, 0x3d, 0x2c, 0x00, 0x06, 0x00, 0x0b, // .......}..=,.... + 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc8, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x21, // ...+...........! + 0x62, 0x9e, 0x3c, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xef, // b.<+............ + 0x1a, 0xf4, 0x3d, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x21, // ..=+...........! + 0x47, 0x73, 0x3f, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0xca, // Gs?,............ + 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xbf, // ...........,.... + 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xcd, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x3a, // ...+...........: + 0xbb, 0xdb, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x7c, // ..?+...........| + 0x1a, 0xb6, 0xbe, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x3a, // ...+...........: + 0xb9, 0x81, 0xbe, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xd5, // ...,............ + 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd4, 0xab, 0x2a, 0xbf, 0x2b, 0x00, 0x04, 0x00, 0x07, // .........*.+.... + 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xdb, 0xe8, 0xce, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, // ..........?+.... + 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xf1, 0x2c, 0x81, 0x3c, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ........,.<,.... + 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xdb, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x8d, // ...+............ + 0x81, 0x90, 0x3c, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x3a, // ..<+...........: + 0x30, 0x2f, 0xbd, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xab, // 0/.+............ + 0x2d, 0x71, 0x3f, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xdd, // -q?,............ + 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xbf, // ...........,.... + 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xe0, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x00, // ...+............ + 0x20, 0x23, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x00, // #>+............ + 0xb0, 0x9d, 0x42, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x00, // ..B+............ + 0x00, 0x56, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x00, // .V?+............ + 0xd0, 0x96, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, // ..A+............ + 0x80, 0x95, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x17, // ..A+............ + 0xb7, 0xd1, 0x38, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, // ..8+............ + 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x00, // ..?+............ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x00, // ...+............ + 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, // ..?+....... .... + 0x00, 0xc0, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, // ..?+.......(.... + 0x00, 0x20, 0x40, 0x20, 0x00, 0x04, 0x00, 0x68, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, // . @ ...h........ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x68, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x01, // ...;...h...i.... + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x68, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x01, // ...;...h...l.... + 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, // ... ...o........ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x01, // ...;...o...p.... + 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, // ... ...|........ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x7d, 0x01, 0x00, 0x00, 0x03, // ...;...|...}.... + 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x00, 0x76, // ...,...........v + 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ...v...v...,.... + 0x00, 0x00, 0x00, 0xc1, 0x02, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x0f, // ................ + 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc2, 0x02, 0x00, 0x00, 0xe8, // ...,............ + 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ...........,.... + 0x00, 0x00, 0x00, 0xc3, 0x02, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, // ................ + 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc4, 0x02, 0x00, 0x00, 0xff, // ...,............ + 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ...........,.... + 0x00, 0x00, 0x00, 0xc5, 0x02, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xea, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd1, 0x02, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, // ...........=.... + 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, // ...L...K...=.... + 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, // ...O...N...=.... + 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, // ...m...l...=.... + 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x85, // ...q...p...A.... + 0x00, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xb2, // ...........V.... + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0xa7, // ...=............ + 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa9, 0x01, 0x00, 0x00, 0x71, // ...Q...........q + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xaa, // .......Q........ + 0x01, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, // ...q.......P.... + 0x00, 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, 0xa9, 0x01, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, 0xa8, // ................ + 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x82, // ...A............ + 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, // ...V.......=.... + 0x00, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x5a, // ...........V...Z + 0x00, 0x00, 0x00, 0xcb, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x58, // .......O...L...X + 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xce, 0x01, 0x00, 0x00, 0xcb, 0x01, 0x00, 0x00, 0xab, // ................ + 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, // ...........O.... + 0x00, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0xce, 0x01, 0x00, 0x00, 0xce, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb1, // ................ + 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x00, 0x41, // ...............A + 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x56, // ...............V + 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd9, // .......=........ + 0x01, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xda, // .......P........ + 0x01, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0x0c, // ................ + 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, // ................ + 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x41, // ...............A + 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0xde, 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x56, // ...............V + 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdf, // .......=........ + 0x01, 0x00, 0x00, 0xde, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe0, // ................ + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0xdf, // ................ + 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0xf4, // ................ + 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xb4, // .......O........ + 0x01, 0x00, 0x00, 0xce, 0x01, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, // ................ + 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0e, // ................ + 0x00, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x41, // ...........m...A + 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0xb9, 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x52, // ...............R + 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xba, // .......=........ + 0x01, 0x00, 0x00, 0xb9, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0xbb, // .......A........ + 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x3d, // .......R.......= + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0xbb, 0x01, 0x00, 0x00, 0xb8, // ................ + 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, 0x13, // ................ + 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x1d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, // ................ + 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0xf8, // ................ + 0x00, 0x02, 0x00, 0x08, 0x02, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x0a, // ................ + 0x02, 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x1c, // ....... ........ + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x0b, // ................ + 0x02, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x0e, 0x02, 0x00, 0x00, 0xb8, // ................ + 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, 0x28, // ...............( + 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x1b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, // ................ + 0x00, 0x04, 0x00, 0x10, 0x02, 0x00, 0x00, 0x11, 0x02, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, 0xf8, // ................ + 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x13, // .......O........ + 0x02, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x78, // ...............x + 0x02, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0x7e, 0x02, 0x00, 0x00, 0x78, 0x02, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x8e, // ...~...x........ + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x02, 0x00, 0x00, 0x7e, 0x02, 0x00, 0x00, 0xbc, // ...........~.... + 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, 0x19, // ................ + 0x02, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x8e, // ................ + 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, 0xc2, // ................ + 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x8e, // ................ + 0x02, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x94, // ................ + 0x02, 0x00, 0x00, 0xc3, 0x02, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0x98, 0x02, 0x00, 0x00, 0x8e, 0x02, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x81, // ................ + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x99, 0x02, 0x00, 0x00, 0xc4, 0x02, 0x00, 0x00, 0x98, // ................ + 0x02, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x9a, 0x02, 0x00, 0x00, 0x94, // ................ + 0x02, 0x00, 0x00, 0x99, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x9d, // ................ + 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x9a, 0x02, 0x00, 0x00, 0xc5, // ................ + 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1b, // ................ + 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xce, 0x02, 0x00, 0x00, 0xc1, // ................ + 0x02, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, 0x9d, 0x02, 0x00, 0x00, 0x11, 0x02, 0x00, 0x00, 0xf9, // ................ + 0x00, 0x02, 0x00, 0x1c, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x0b, 0x02, 0x00, 0x00, 0x4f, // ...............O + 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x02, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, 0xb7, // ................ + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf9, // ................ + 0x00, 0x02, 0x00, 0x1c, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1c, 0x02, 0x00, 0x00, 0xf5, // ................ + 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xcd, 0x02, 0x00, 0x00, 0xce, 0x02, 0x00, 0x00, 0x1b, // ................ + 0x02, 0x00, 0x00, 0x0d, 0x02, 0x00, 0x00, 0x0b, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x1d, // ................ + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, // ...........O.... + 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x03, // ...........+.... + 0x02, 0x00, 0x00, 0xc1, 0x02, 0x00, 0x00, 0xc4, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, // ...1............ + 0x00, 0x03, 0x00, 0x4d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0xac, // ...M............ + 0x00, 0x00, 0x00, 0x41, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x41, 0x02, 0x00, 0x00, 0xbc, // ...A.......A.... + 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x98, // .......C...1.... + 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, // .......L........ + 0x00, 0x04, 0x00, 0x43, 0x02, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, 0xf8, // ...C...D...G.... + 0x00, 0x02, 0x00, 0x47, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x49, // ...G...........I + 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0xa4, // ...........1.... + 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4a, 0x02, 0x00, 0x00, 0xa2, // ...........J.... + 0x00, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4b, // ...I...........K + 0x02, 0x00, 0x00, 0x4a, 0x02, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, // ...J...........M + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x44, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, // .......D........ + 0x00, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0xf9, // ...F.......1.... + 0x00, 0x02, 0x00, 0x4d, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x02, 0x00, 0x00, 0xff, // ...M.......L.... + 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x07, // .......M........ + 0x00, 0x00, 0x00, 0xc6, 0x02, 0x00, 0x00, 0x4b, 0x02, 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, 0x46, // .......K...G...F + 0x02, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb7, // ...D...R........ + 0x02, 0x00, 0x00, 0xc6, 0x02, 0x00, 0x00, 0xd1, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x35, 0x02, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x01, // .......5........ + 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x5f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, // ......._........ + 0x00, 0x03, 0x00, 0xac, 0x00, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x53, // .......S.......S + 0x02, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, 0x35, // ...........U...5 + 0x02, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x5e, 0x02, 0x00, 0x00, 0x00, // ...........^.... + 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x55, 0x02, 0x00, 0x00, 0x56, 0x02, 0x00, 0x00, 0x59, // .......U...V...Y + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x59, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, // .......Y........ + 0x00, 0x00, 0x00, 0x5b, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x35, // ...[...........5 + 0x02, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x5c, // ................ + 0x02, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x5b, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, // .......[........ + 0x00, 0x00, 0x00, 0x5d, 0x02, 0x00, 0x00, 0x5c, 0x02, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xf9, // ...]............ + 0x00, 0x02, 0x00, 0x5f, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x02, 0x00, 0x00, 0x85, // ..._.......V.... + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x35, // .......X.......5 + 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5f, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5e, // ......._.......^ + 0x02, 0x00, 0x00, 0xff, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5f, 0x02, 0x00, 0x00, 0xf5, // ..........._.... + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x00, 0x5d, 0x02, 0x00, 0x00, 0x59, // ...........]...Y + 0x02, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x56, 0x02, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, // ...X...V...R.... + 0x00, 0x00, 0x00, 0xba, 0x02, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x00, 0xb7, 0x02, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x06, // ...Q.......9.... + 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x71, 0x02, 0x00, 0x00, 0x00, // ...........q.... + 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0xac, 0x00, 0x00, 0x00, 0x65, 0x02, 0x00, 0x00, 0xf8, // ...........e.... + 0x00, 0x02, 0x00, 0x65, 0x02, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x67, // ...e...........g + 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x70, // ...9...........p + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x67, 0x02, 0x00, 0x00, 0x68, // ...........g...h + 0x02, 0x00, 0x00, 0x6b, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x6b, 0x02, 0x00, 0x00, 0x0c, // ...k.......k.... + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // .......m........ + 0x00, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, // ...9............ + 0x00, 0x00, 0x00, 0x6e, 0x02, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x6d, 0x02, 0x00, 0x00, 0x83, // ...n.......m.... + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6f, 0x02, 0x00, 0x00, 0x6e, 0x02, 0x00, 0x00, 0xa7, // .......o...n.... + 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x71, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x68, // .......q.......h + 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6a, 0x02, 0x00, 0x00, 0x9d, // ...........j.... + 0x00, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x71, 0x02, 0x00, 0x00, 0xf8, // ...9.......q.... + 0x00, 0x02, 0x00, 0x70, 0x02, 0x00, 0x00, 0xff, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x71, // ...p...........q + 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xca, 0x02, 0x00, 0x00, 0x6f, // ...............o + 0x02, 0x00, 0x00, 0x6b, 0x02, 0x00, 0x00, 0x6a, 0x02, 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0x52, // ...k...j...h...R + 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xbd, 0x02, 0x00, 0x00, 0xca, 0x02, 0x00, 0x00, 0xba, // ................ + 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x1d, 0x02, 0x00, 0x00, 0xf8, // ................ + 0x00, 0x02, 0x00, 0x1d, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xcc, // ................ + 0x02, 0x00, 0x00, 0xcd, 0x02, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0xbd, 0x02, 0x00, 0x00, 0x71, // ...............q + 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0xb7, // ...Q....... .... + 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x21, // .......Q.......! + 0x02, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, // ..."...........Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x23, 0x02, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x02, // .......#........ + 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x24, 0x02, 0x00, 0x00, 0x21, // ...P.......$...! + 0x02, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, 0x23, 0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x3e, // ..."...#... ...> + 0x00, 0x03, 0x00, 0x7d, 0x01, 0x00, 0x00, 0x24, 0x02, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, // ...}...$.......8 + 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..... . }; -static const uint8_t fs_texture_3d_dx11[814] = +static const uint8_t fs_texture_3d_dx9[1448] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x02, // texColor0....... - 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x86, 0x82, 0x66, 0xf4, 0x03, 0xd8, 0x4a, 0x8f, 0x13, 0x90, // ..DXBC..f...J... - 0xfc, 0x02, 0x5a, 0xc4, 0x38, 0x2a, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, 0x00, 0x03, 0x00, // ..Z.8*.......... - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS - 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, // ..............b. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO - 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD - 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR - 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x1c, 0x02, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@. - 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ......Y...F. ... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ......Z....`.... - 0x00, 0x00, 0x58, 0x28, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, // ..X(...p......UU - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, // ..b...........b. - 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, // ..2.......e.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, // ......h.......6. - 0x00, 0x05, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, // ..2.......F..... - 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, // ..6...B......... - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, // .........H..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x7e, // ......F.......F~ - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, // .......`........ - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x00, // .........8..... - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, // ......F.......F. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, // ....../...r..... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, // ..F...........6. - 0x00, 0x05, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, // ... ......:..... - 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, // ..8...r.......F. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, // .......@.....@.. - 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, // .@...@........r. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, // ......F.......2. - 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..r.......F..... - 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, // ..F.......F...A. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2...r..... - 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // .... .........F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, // ......F......... - 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, // ..........:. ... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8...r..... - 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..........F..... - 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ../...r.......F. - 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, // ..........8...r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, // ......F........@ - 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x00, 0x00, // ../..>/..>/..>.. - 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ......r ......F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // ......>....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, // ....u_params0... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // ........u_params + 0x31, 0x12, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x05, 0x00, 0x00, 0x00, // 1..........X.... + 0x03, 0xff, 0xff, 0xfe, 0xff, 0x34, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0xa1, // .....4.CTAB..... + 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ + 0x91, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // .......X........ + 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, // ...d.......t.... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, // ...s_texColor... + 0x00, 0x0d, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, // ...............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, // _params0........ + 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, // ...........u_par + 0x61, 0x6d, 0x73, 0x31, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, // ams1.ps_3_0.Micr + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, // osoft (R) HLSL S + 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, // hader Compiler 1 + 0x30, 0x2e, 0x31, 0x00, 0xab, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, // 0.1....Q........ + 0xd0, 0x96, 0x41, 0x00, 0x00, 0x56, 0x3f, 0x00, 0x80, 0x95, 0x41, 0x00, 0x00, 0x80, 0x3f, 0x51, // ..A..V?...A...?Q + 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x1c, // ..........@...?. + 0x2e, 0x4d, 0x3b, 0x52, 0xb8, 0x4e, 0x41, 0x51, 0x00, 0x00, 0x05, 0x04, 0x00, 0x0f, 0xa0, 0x55, // .M;R.NAQ.......U + 0x55, 0xd5, 0x3e, 0x3d, 0x0a, 0x87, 0x3f, 0xae, 0x47, 0x61, 0xbd, 0x17, 0xb7, 0xd1, 0x38, 0x51, // U.>=..?.Ga....8Q + 0x00, 0x00, 0x05, 0x05, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0xc0, 0xbf, 0x00, 0x00, 0x20, 0xc0, 0x00, // ............. .. + 0x20, 0x23, 0x3e, 0x00, 0xb0, 0x9d, 0x42, 0x51, 0x00, 0x00, 0x05, 0x06, 0x00, 0x0f, 0xa0, 0x98, // #>...BQ........ + 0x3a, 0xd3, 0x3e, 0x37, 0x14, 0xb7, 0x3e, 0x9c, 0xc4, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x51, // :.>7..>..8>....Q + 0x00, 0x00, 0x05, 0x07, 0x00, 0x0f, 0xa0, 0xed, 0xc6, 0x59, 0x3e, 0x37, 0x14, 0x37, 0x3f, 0x7d, // .........Y>7.7?} + 0xd0, 0x93, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x08, 0x00, 0x0f, 0xa0, 0x21, // ..=....Q.......! + 0x62, 0x9e, 0x3c, 0xef, 0x1a, 0xf4, 0x3d, 0x21, 0x47, 0x73, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x51, // b.<...=!Gs?....Q + 0x00, 0x00, 0x05, 0x09, 0x00, 0x0f, 0xa0, 0x3a, 0xbb, 0xdb, 0x3f, 0x7c, 0x1a, 0xb6, 0xbe, 0x3a, // .......:..?|...: + 0xb9, 0x81, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x0a, 0x00, 0x0f, 0xa0, 0xd4, // .......Q........ + 0xab, 0x2a, 0xbf, 0xdb, 0xe8, 0xce, 0x3f, 0xf1, 0x2c, 0x81, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x51, // .*....?.,.<....Q + 0x00, 0x00, 0x05, 0x0b, 0x00, 0x0f, 0xa0, 0x8d, 0x81, 0x90, 0x3c, 0x3a, 0x30, 0x2f, 0xbd, 0xab, // ..........<:0/.. + 0x2d, 0x71, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // -q?............. + 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x08, 0x0f, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x03, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0c, 0x80, 0x00, // ................ + 0x00, 0x14, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, // ..._............ + 0x08, 0xe4, 0xa0, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x8b, 0x0f, // ................ + 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, // .........U...... + 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, // ................ + 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0e, // .............U.. + 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x12, 0x00, 0x00, 0x04, 0x01, // ................ + 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x0e, // ................ + 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x07, 0x80, 0x01, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x01, // ................ + 0x00, 0x02, 0x80, 0x03, 0x00, 0x55, 0xa0, 0x29, 0x00, 0x04, 0x02, 0x01, 0x00, 0x00, 0xa0, 0x01, // .....U.)........ + 0x00, 0x55, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x17, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x20, // .U............. + 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x04, 0x00, 0x00, 0xa0, 0x04, // ................ + 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x04, 0x00, 0x55, 0xa0, 0x04, // .............U.. + 0x00, 0xaa, 0xa0, 0x20, 0x00, 0x00, 0x03, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, // ... ............ + 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x04, // .............U.. + 0x00, 0x55, 0xa0, 0x04, 0x00, 0xaa, 0xa0, 0x20, 0x00, 0x00, 0x03, 0x01, 0x00, 0x04, 0x80, 0x00, // .U..... ........ + 0x00, 0x55, 0x80, 0x04, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x80, 0x01, // .U.............. + 0x00, 0xaa, 0x80, 0x04, 0x00, 0x55, 0xa0, 0x04, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x02, // .....U.......... + 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x81, 0x03, 0x00, 0xaa, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x03, // ................ + 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xff, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, // ...........X.... + 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xc9, 0x80, 0x2a, // ...............* + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x06, 0x00, 0xe4, 0xa0, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x02, 0x80, 0x07, 0x00, 0xe4, 0xa0, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x04, 0x80, 0x08, 0x00, 0xe4, 0xa0, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x04, 0x80, 0x0b, 0x00, 0xe4, 0xa0, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x80, 0x09, 0x00, 0xe4, 0xa0, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x02, 0x80, 0x0a, 0x00, 0xe4, 0xa0, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x01, // ................ + 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, // .U.............. + 0x00, 0xff, 0xa0, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0f, // ................ + 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x02, // .........U...... + 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, // ................ + 0x00, 0xe4, 0x80, 0x05, 0x00, 0xaa, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, // ................ + 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0e, // .............U.. + 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, // ................ + 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0xff, 0xa0, 0x06, // ................ + 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x02, 0x03, // ................ + 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x06, 0x00, 0x00, 0x02, 0x03, 0x00, 0x04, 0x80, 0x01, // .....U.......... + 0x00, 0xaa, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x03, 0x80, 0x05, 0x00, 0xe4, 0xa0, 0x02, // ................ + 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0xa0, 0x04, // ................ + 0x00, 0x00, 0x04, 0x02, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x02, // ................ + 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x02, // .U.............. + 0x00, 0xe4, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x02, 0x00, 0x00, 0x80, 0x0f, // ................ + 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x02, 0x00, 0x55, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x03, // .........U...... + 0x00, 0x04, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x03, // ................ + 0x00, 0xe4, 0x80, 0x05, 0x00, 0xff, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x02, // ................ + 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x02, 0x00, 0x55, 0x80, 0x0e, // .............U.. + 0x00, 0x00, 0x02, 0x03, 0x00, 0x04, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x58, 0x00, 0x00, 0x04, 0x01, // ...........X.... + 0x00, 0x0e, 0x80, 0x01, 0x00, 0x55, 0x80, 0x06, 0x00, 0xff, 0xa0, 0x03, 0x00, 0x90, 0x80, 0x58, // .....U.........X + 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf9, 0x80, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x00, // ...+............ + 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ........ }; -static const uint8_t fs_texture_3d_mtl[1021] = +static const uint8_t fs_texture_3d_dx11[1828] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0x03, // FSH............. - 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, // ut {. float4 v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // color0;. float3 - 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, // v_texcoord0;.}; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, // haderOutput {. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // float4 gl_FragCo - 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, // lor;.};.struct x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, // latMtlShaderUnif - 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, // orm {. float4 u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, // _params;.};.frag - 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ment xlatMtlShad - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // erOutput xlatMtl - 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // Main (xlatMtlSha - 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, // derInput _mtl_i - 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, // [[stage_in]], co - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // nstant xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, // aderUniform& _mt - 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, // l_u [[buffer(0)] - 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x33, // ]. , texture3 - 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // d<float> s_texCo - 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, // lor [[texture(0) - 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // ]], sampler _mtl - 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, // smp_s_texColor [ - 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, // [sampler(0)]]).{ - 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // . xlatMtlShader - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, // Output _mtl_o;. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // float3 tmpvar_1 - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // = 0;. tmpvar_1 - 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, // .xy = _mtl_i.v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x74, // excoord0.xy;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // mpvar_1.z = _mtl - 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x3b, 0x0a, 0x20, // _u.u_params.y;. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, // float4 _color_2 - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, // = 0;. _color_2 - 0x20, 0x3d, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, // = (s_texColor.s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, // ample(_mtlsmp_s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, // texColor, (float - 0x33, 0x29, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x2c, 0x20, 0x6c, 0x65, // 3)(tmpvar_1), le - 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, // vel(_mtl_u.u_par - 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, // ams.x)) * _mtl_i - 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // .v_color0);. fl - 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, // oat4 tmpvar_3 = - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, // 0;. tmpvar_3.xy - 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x0a, 0x20, // z = pow (abs((. - 0x20, 0x20, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, // mix (pow (abs - 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, // (_color_2.xyz), - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, // float3(2.2, 2.2, - 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, // 2.2)), _color_2 - 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, // .xyz, _mtl_u.u_p - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x0a, 0x20, // arams.z). * . - 0x20, 0x20, 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // exp2(_mtl_u.u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, // _params.w). )), - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, // float3(0.454545 - 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, // 4, 0.4545454, 0. - 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 4545454));. tmp - 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // var_3.w = _color - 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, // _2.w;. _mtl_o.g - 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, // l_FragColor = tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, // pvar_3;. return - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _mtl_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x12, 0x00, 0x10, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, // r0..........s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // xColor0......... + 0xbc, 0x06, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xe8, 0x75, 0x88, 0xa8, 0x62, 0x1b, 0x56, 0x9f, // ....DXBC.u..b.V. + 0xd3, 0x8b, 0xbd, 0x79, 0xc8, 0x40, 0x19, 0x3c, 0x01, 0x00, 0x00, 0x00, 0xbc, 0x06, 0x00, 0x00, // ...y.@.<........ + 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, // ....,........... + 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNl........... + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // b............... + 0x02, 0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT + 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // ION.COLOR.TEXCOO + 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // RD..OSGN,....... + 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .... ........... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, // ............SV_T + 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xe0, 0x05, 0x00, 0x00, // ARGET...SHDR.... + 0x40, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, // @...x...Y...F. . + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, // ........Z....`.. + 0x00, 0x00, 0x00, 0x00, 0x58, 0x28, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....X(...p...... + 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // UU..b........... + 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // b...2.......e... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, // . ......h....... + 0x36, 0x00, 0x00, 0x05, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, // 6...2.......F... + 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....6...B....... + 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, // .. .........H... + 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // F~.......`...... + 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, // .. ........./... + 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, // r.......F....... + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....8...r....... + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, // F........@.....@ + 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, // ...@...@........ + 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // r.......F....... + 0x00, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....r.......F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F...A....... + 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, // 2...r......... . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ........F....... + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, // F............... + 0x01, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....:. ......... + 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, // 8...r........... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // ....F.......8... + 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, // F.......1....... + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ...... ......... + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x04, 0x03, 0x0a, 0x00, 0x10, 0x00, // .@.....?........ + 0x01, 0x00, 0x00, 0x00, 0x36, 0x20, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....6 ..r....... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, // F...........r... + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x1c, 0x2e, 0x4d, 0x3b, 0x1c, 0x2e, 0x4d, 0x3b, // .....@....M;..M; + 0x1c, 0x2e, 0x4d, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ..M;....F....... + 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 8...r.......F... + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x52, 0xb8, 0x4e, 0x41, 0x52, 0xb8, 0x4e, 0x41, // .....@..R.NAR.NA + 0x52, 0xb8, 0x4e, 0x41, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, // R.NA..../...r... + 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, // ....F.......8... + 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // r.......F....... + 0x02, 0x40, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x3e, 0x55, 0x55, 0xd5, 0x3e, 0x55, 0x55, 0xd5, 0x3e, // .@..UU.>UU.>UU.> + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // ........r....... + 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, // F.......2...r... + 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....F........@.. + 0x3d, 0x0a, 0x87, 0x3f, 0x3d, 0x0a, 0x87, 0x3f, 0x3d, 0x0a, 0x87, 0x3f, 0x00, 0x00, 0x00, 0x00, // =..?=..?=..?.... + 0x02, 0x40, 0x00, 0x00, 0xae, 0x47, 0x61, 0xbd, 0xae, 0x47, 0x61, 0xbd, 0xae, 0x47, 0x61, 0xbd, // .@...Ga..Ga..Ga. + 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....7...r....... + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // F.......F....... + 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01, 0x31, 0x00, 0x00, 0x0b, // F...........1... + 0x32, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 2......... ..... + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x20, 0x40, // .....@.....?.. @ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, // ................ + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x98, 0x3a, 0xd3, 0x3e, 0x37, 0x14, 0xb7, 0x3e, // .....@...:.>7..> + 0x9c, 0xc4, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ..8>....F....... + 0x10, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ...."........@.. + 0xed, 0xc6, 0x59, 0x3e, 0x37, 0x14, 0x37, 0x3f, 0x7d, 0xd0, 0x93, 0x3d, 0x00, 0x00, 0x00, 0x00, // ..Y>7.7?}..=.... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, // F...........B... + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x21, 0x62, 0x9e, 0x3c, 0xef, 0x1a, 0xf4, 0x3d, // .....@..!b.<...= + 0x21, 0x47, 0x73, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // !Gs?....F....... + 0x10, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // .............@.. + 0x3a, 0xbb, 0xdb, 0x3f, 0x7c, 0x1a, 0xb6, 0xbe, 0x3a, 0xb9, 0x81, 0xbe, 0x00, 0x00, 0x00, 0x00, // :..?|...:....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, // F..........."... + 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xd4, 0xab, 0x2a, 0xbf, 0xdb, 0xe8, 0xce, 0x3f, // .....@....*....? + 0xf1, 0x2c, 0x81, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // .,.<....F....... + 0x10, 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....B........@.. + 0x8d, 0x81, 0x90, 0x3c, 0x3a, 0x30, 0x2f, 0xbd, 0xab, 0x2d, 0x71, 0x3f, 0x00, 0x00, 0x00, 0x00, // ...<:0/..-q?.... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, // F.......8...r... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x56, 0x85, 0x20, 0x00, // ....F.......V. . + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, // ........8...r... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....F........@.. + 0x17, 0xb7, 0xd1, 0x38, 0x17, 0xb7, 0xd1, 0x38, 0x17, 0xb7, 0xd1, 0x38, 0x00, 0x00, 0x00, 0x00, // ...8...8...8.... + 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // /...r.......F... + 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....8...r....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x20, 0x23, 0x3e, // F........@... #> + 0x00, 0x20, 0x23, 0x3e, 0x00, 0x20, 0x23, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, // . #>. #>........ + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // r.......F....... + 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 2...r.......F... + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0xd0, 0x96, 0x41, 0x00, 0xd0, 0x96, 0x41, // .....@.....A...A + 0x00, 0xd0, 0x96, 0x41, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x56, 0x3f, // ...A.....@....V? + 0x00, 0x00, 0x56, 0x3f, 0x00, 0x00, 0x56, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, // ..V?..V?....2... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // r.......F....... + 0x02, 0x40, 0x00, 0x00, 0x00, 0x80, 0x95, 0x41, 0x00, 0x80, 0x95, 0x41, 0x00, 0x80, 0x95, 0x41, // .@.....A...A...A + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, // .....@.....?...? + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, // ...?........r... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....F.......F... + 0x02, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ..../...r....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, // F.......8...r... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....F........@.. + 0x00, 0xb0, 0x9d, 0x42, 0x00, 0xb0, 0x9d, 0x42, 0x00, 0xb0, 0x9d, 0x42, 0x00, 0x00, 0x00, 0x00, // ...B...B...B.... + 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....r.......F... + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xe2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x56, 0x05, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // V............... + 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, // 7...r........... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, // ....F........... + 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, // ....F.......>... + 0x00, 0x00, 0x20, 0x00, // .. . +}; +static const uint8_t fs_texture_3d_mtl[3757] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // ...s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, // pler...........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // _texColorTexture + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, // ...........u_par + 0x61, 0x6d, 0x73, 0x31, 0x12, 0x01, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, // ams1...........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x22, 0x0e, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // ..."...#include + 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, // <metal_stdlib>.# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, // include <simd/si + 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, // md.h>..using nam + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, // espace metal;..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // float4 u_par + 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // ams0;. float4 + 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // u_params1;.};.. + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, // constant float3 + 0x5f, 0x37, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, // _721 = {};..stru + 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, // ct xlatMtlMain_o + 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // ut.{. float4 + 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, // bgfx_FragData0 [ + 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, // [color(0)]];.};. + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // .struct xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ain_in.{. flo + 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, // at4 v_color0 [[u + 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // ser(locn0)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // float3 v_texco + 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, // ord0 [[user(locn + 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, // 1)]];.};..fragme + 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, // nt xlatMtlMain_o + 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, // ut xlatMtlMain(x + 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, // latMtlMain_in in + 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, // [[stage_in]], c + 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, // onstant _Global& + 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, // _mtl_u [[buffer + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x33, 0x64, // (0)]], texture3d + 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // <float> s_texCol + 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, // or [[texture(0)] + 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // ], sampler s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, // ColorSampler [[s + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, // ampler(0)]]).{. + 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, // xlatMtlMain_o + 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ut out = {};. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x73, // float4 _462 = s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // _texColor.sample + 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, // (s_texColorSampl + 0x65, 0x72, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, // er, float3(in.v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x5f, 0x6d, // texcoord0.xy, _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x79, // tl_u.u_params0.y + 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // ), level(_mtl_u. + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, // u_params0.x));. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, 0x33, 0x33, 0x20, 0x3d, // float3 _433 = + 0x20, 0x5f, 0x34, 0x36, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // _462.xyz;. f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, // loat3 _481 = mix + 0x28, 0x70, 0x6f, 0x77, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x34, 0x33, 0x33, 0x29, 0x2c, 0x20, // (pow(abs(_433), + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, // float3(2.2000000 + 0x34, 0x37, 0x36, 0x38, 0x33, 0x37, 0x31, 0x35, 0x38, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x34, 0x33, // 476837158)), _43 + 0x33, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // 3, float3(_mtl_u + 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2a, // .u_params0.z)) * + 0x20, 0x70, 0x6f, 0x77, 0x28, 0x32, 0x2e, 0x30, 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // pow(2.0, _mtl_u + 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, // .u_params0.w);. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x33, 0x39, 0x20, 0x3d, // float4 _439 = + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x34, 0x38, 0x31, 0x2e, 0x78, 0x2c, 0x20, // float4(_481.x, + 0x5f, 0x34, 0x38, 0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x34, 0x38, 0x31, 0x2e, 0x7a, 0x2c, 0x20, // _481.y, _481.z, + 0x5f, 0x34, 0x36, 0x32, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, // _462.w) * in.v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // olor0;. float + 0x33, 0x20, 0x5f, 0x37, 0x31, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, // 3 _716;. if ( + 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, // _mtl_u.u_params1 + 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, // .x < 0.5). {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, // float3 _ + 0x35, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x63, 0x6c, 0x61, 0x6d, // 518 = fast::clam + 0x70, 0x28, 0x5f, 0x34, 0x33, 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, // p(_439.xyz, floa + 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, // t3(0.0), float3( + 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, // 1.0));. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x31, 0x38, // loat _561 = _518 + 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // .x;. floa + 0x74, 0x20, 0x5f, 0x37, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t _710;. + 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // do. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x35, 0x36, // if (_56 + 0x31, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x30, 0x30, // 1 <= 0.003130800 + 0x30, 0x39, 0x30, 0x37, 0x33, 0x30, 0x31, 0x39, 0x30, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, // 0907301903). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x31, 0x30, 0x20, 0x3d, // _710 = + 0x20, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, 0x32, 0x39, 0x33, // 12.920000076293 + 0x39, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x36, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 945 * _561;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, // brea + 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, // k;. } + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, // . els + 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, // e. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x5f, 0x37, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, // _710 = (1.054999 + 0x39, 0x34, 0x37, 0x35, 0x34, 0x37, 0x39, 0x31, 0x32, 0x36, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, // 9475479126 * pow + 0x28, 0x5f, 0x35, 0x36, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x36, // (_561, 0.4166666 + 0x35, 0x36, 0x37, 0x33, 0x32, 0x35, 0x35, 0x39, 0x32, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, // 567325592)) - 0. + 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x30, 0x31, 0x39, 0x37, 0x36, 0x37, // 0549999997019767 + 0x37, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 76;. + 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, // } while(false); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, // . float3 + 0x5f, 0x36, 0x39, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x32, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, // _695 = _721;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x39, 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, // _695.x = _7 + 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // 10;. floa + 0x74, 0x20, 0x5f, 0x35, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x31, 0x38, 0x2e, 0x79, 0x3b, // t _565 = _518.y; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, // . float _ + 0x37, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x0a, // 712;. do. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x35, 0x36, 0x35, 0x20, 0x3c, // if (_565 < + 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x30, 0x30, 0x30, 0x39, 0x30, // = 0.003130800090 + 0x37, 0x33, 0x30, 0x31, 0x39, 0x30, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 7301903). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x31, 0x32, // _712 = 12 + 0x2e, 0x39, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, 0x32, 0x39, 0x33, 0x39, 0x34, 0x35, // .920000076293945 + 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x36, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // * _565;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x31, // _71 + 0x32, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x34, 0x37, // 2 = (1.054999947 + 0x35, 0x34, 0x37, 0x39, 0x31, 0x32, 0x36, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x5f, 0x35, // 5479126 * pow(_5 + 0x36, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x36, 0x35, 0x36, 0x37, // 65, 0.4166666567 + 0x33, 0x32, 0x35, 0x35, 0x39, 0x32, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x34, // 325592)) - 0.054 + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x30, 0x31, 0x39, 0x37, 0x36, 0x37, 0x37, 0x36, 0x3b, // 999999701976776; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // . + 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, // }. } + 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, // while(false);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x36, 0x39, // float3 _69 + 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x39, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 8 = _695;. + 0x20, 0x20, 0x5f, 0x36, 0x39, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x32, 0x3b, // _698.y = _712; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, // . float _ + 0x35, 0x36, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x31, 0x38, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, // 569 = _518.z;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x31, 0x34, // float _714 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, // ;. do. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x35, 0x36, 0x39, 0x20, 0x3c, 0x3d, 0x20, 0x30, // if (_569 <= 0 + 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x30, 0x30, 0x30, 0x39, 0x30, 0x37, 0x33, 0x30, // .003130800090730 + 0x31, 0x39, 0x30, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 1903). + 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x31, 0x32, 0x2e, 0x39, 0x32, // _714 = 12.92 + 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, 0x32, 0x39, 0x33, 0x39, 0x34, 0x35, 0x20, 0x2a, 0x20, // 0000076293945 * + 0x5f, 0x35, 0x36, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _569;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x31, 0x34, 0x20, 0x3d, // _714 = + 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x34, 0x37, 0x35, 0x34, 0x37, // (1.054999947547 + 0x39, 0x31, 0x32, 0x36, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x5f, 0x35, 0x36, 0x39, 0x2c, // 9126 * pow(_569, + 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x36, 0x35, 0x36, 0x37, 0x33, 0x32, 0x35, // 0.4166666567325 + 0x35, 0x39, 0x32, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, // 592)) - 0.054999 + 0x39, 0x39, 0x39, 0x37, 0x30, 0x31, 0x39, 0x37, 0x36, 0x37, 0x37, 0x36, 0x3b, 0x0a, 0x20, 0x20, // 999701976776;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, // br + 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // eak;. + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, // }. } whi + 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // le(false);. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x30, 0x31, 0x20, 0x3d, // float3 _701 = + 0x20, 0x5f, 0x36, 0x39, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, // _698;. _ + 0x37, 0x30, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, // 701.z = _714;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, // _716 = _70 + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, // 1;. }. els + 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // e. {. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x31, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, // float3 _717;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // if (_mtl_u. + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x31, 0x2e, // u_params1.x < 1. + 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // 5). {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x31, 0x37, 0x20, 0x3d, 0x20, // _717 = + 0x5f, 0x34, 0x33, 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _439.xyz;. + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, // }. else + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // . {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, // float3 _7 + 0x31, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 18;. + 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, // if (_mtl_u.u_par + 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x2e, 0x35, 0x29, 0x0a, 0x20, 0x20, // ams1.x < 2.5). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // floa + 0x74, 0x33, 0x20, 0x5f, 0x36, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x28, 0x28, // t3 _654 = pow((( + 0x28, 0x5f, 0x34, 0x33, 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, // (_439.xyz * floa + 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x31, // t3x3(float3(0.41 + 0x32, 0x35, 0x35, 0x36, 0x34, 0x30, 0x39, 0x38, 0x33, 0x35, 0x38, 0x31, 0x35, 0x34, 0x33, 0x2c, // 255640983581543, + 0x20, 0x30, 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x30, 0x32, 0x30, 0x31, 0x38, 0x33, // 0.3575761020183 + 0x35, 0x36, 0x33, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x38, 0x30, 0x34, 0x33, 0x37, 0x35, 0x30, // 5632, 0.18043750 + 0x35, 0x32, 0x34, 0x35, 0x32, 0x30, 0x38, 0x37, 0x34, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, // 524520874), floa + 0x74, 0x33, 0x28, 0x30, 0x2e, 0x32, 0x31, 0x32, 0x36, 0x37, 0x32, 0x39, 0x30, 0x34, 0x31, 0x33, // t3(0.21267290413 + 0x33, 0x37, 0x39, 0x36, 0x36, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x35, 0x31, 0x35, 0x32, // 379669, 0.715152 + 0x32, 0x30, 0x34, 0x30, 0x33, 0x36, 0x37, 0x31, 0x32, 0x36, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, // 20403671265, 0.0 + 0x37, 0x32, 0x31, 0x37, 0x35, 0x30, 0x30, 0x33, 0x35, 0x38, 0x38, 0x31, 0x39, 0x39, 0x36, 0x31, // 7217500358819961 + 0x35, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x31, 0x39, // 5), float3(0.019 + 0x33, 0x33, 0x33, 0x39, 0x30, 0x30, 0x38, 0x38, 0x33, 0x37, 0x39, 0x33, 0x38, 0x33, 0x31, 0x2c, // 333900883793831, + 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x31, 0x39, 0x39, 0x36, 0x37, 0x35, 0x33, 0x32, // 0.1191919967532 + 0x31, 0x35, 0x37, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x35, 0x30, 0x33, 0x30, 0x34, 0x30, 0x39, // 1579, 0.95030409 + 0x30, 0x39, 0x37, 0x36, 0x37, 0x31, 0x35, 0x30, 0x39, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x66, // 097671509))) * f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x31, // loat3x3(float3(1 + 0x2e, 0x37, 0x31, 0x36, 0x36, 0x35, 0x31, 0x32, 0x30, 0x31, 0x32, 0x34, 0x38, 0x31, 0x36, 0x38, // .716651201248168 + 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, 0x38, 0x30, 0x39, 0x37, // 9, -0.3556708097 + 0x34, 0x35, 0x37, 0x38, 0x38, 0x35, 0x37, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x32, 0x35, 0x33, 0x33, // 4578857, -0.2533 + 0x36, 0x36, 0x32, 0x39, 0x31, 0x35, 0x32, 0x32, 0x39, 0x37, 0x39, 0x37, 0x34, 0x29, 0x2c, 0x20, // 6629152297974), + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x36, 0x36, 0x36, 0x36, 0x38, 0x34, // float3(-0.666684 + 0x33, 0x38, 0x39, 0x31, 0x31, 0x34, 0x33, 0x37, 0x39, 0x38, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x36, // 38911437988, 1.6 + 0x31, 0x36, 0x34, 0x38, 0x31, 0x31, 0x38, 0x34, 0x39, 0x35, 0x39, 0x34, 0x31, 0x31, 0x36, 0x2c, // 164811849594116, + 0x20, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x30, 0x30, 0x30, 0x34, 0x34, 0x39, // 0.0157685000449 + 0x34, 0x31, 0x39, 0x30, 0x32, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, // 41902), float3(0 + 0x2e, 0x30, 0x31, 0x37, 0x36, 0x33, 0x39, 0x38, 0x39, 0x39, 0x36, 0x32, 0x36, 0x33, 0x37, 0x34, // .017639899626374 + 0x32, 0x34, 0x35, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, 0x37, 0x37, 0x30, 0x36, 0x30, // 245, -0.04277060 + 0x31, 0x38, 0x30, 0x39, 0x30, 0x32, 0x34, 0x38, 0x31, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, // 1809024811, 0.94 + 0x32, 0x31, 0x30, 0x33, 0x30, 0x38, 0x37, 0x39, 0x30, 0x32, 0x30, 0x36, 0x39, 0x30, 0x39, 0x29, // 210308790206909) + 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, // )) * _mtl_u.u_pa + 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x39, 0x2e, 0x39, 0x39, 0x39, // rams1.y) * 9.999 + 0x39, 0x39, 0x39, 0x37, 0x34, 0x37, 0x33, 0x37, 0x38, 0x37, 0x35, 0x31, 0x36, 0x65, 0x2d, 0x30, // 9997473787516e-0 + 0x30, 0x35, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x31, 0x35, 0x39, // 05, float3(0.159 + 0x33, 0x30, 0x31, 0x37, 0x35, 0x37, 0x38, 0x31, 0x32, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 3017578125));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, // _7 + 0x31, 0x38, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // 18 = pow((float3 + 0x28, 0x30, 0x2e, 0x38, 0x33, 0x35, 0x39, 0x33, 0x37, 0x35, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, // (0.8359375) + (_ + 0x36, 0x35, 0x34, 0x20, 0x2a, 0x20, 0x31, 0x38, 0x2e, 0x38, 0x35, 0x31, 0x35, 0x36, 0x32, 0x35, // 654 * 18.8515625 + 0x29, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x30, // )) / (float3(1.0 + 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x36, 0x35, 0x34, 0x20, 0x2a, 0x20, 0x31, 0x38, 0x2e, 0x36, // ) + (_654 * 18.6 + 0x38, 0x37, 0x35, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x37, 0x38, // 875)), float3(78 + 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // .84375));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x6c, // _718 = fl + 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // oat3(0.0);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x38, // _717 = _718 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // ;. }. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x37, 0x3b, // _716 = _717; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, // . }. out.b + 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, // gfx_FragData0 = + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x37, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x34, 0x33, // float4(_716, _43 + 0x39, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, // 9.w);. return + 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x40, 0x00, // out;.}....@. }; extern const uint8_t* fs_texture_3d_pssl; extern const uint32_t fs_texture_3d_pssl_size; diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_3d.sc b/3rdparty/bgfx/tools/texturev/fs_texture_3d.sc index 230eaa3a5d2..ae959c49278 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_3d.sc +++ b/3rdparty/bgfx/tools/texturev/fs_texture_3d.sc @@ -1,8 +1,8 @@ $input v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" @@ -12,5 +12,7 @@ SAMPLER3D(s_texColor, 0); void main() { vec4 color = texture3DLod(s_texColor, vec3(v_texcoord0.xy, u_textureLayer), u_textureLod); - gl_FragColor = toEv(color * v_color0); + color.xyz = applyExposure(color.xyz); + color *= v_color0; + gl_FragColor = toOutput(color, u_outputFormat, u_sdrWhiteNits); } diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_array.bin.h b/3rdparty/bgfx/tools/texturev/fs_texture_array.bin.h index 2e0c2352c10..8e3671a8bea 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_array.bin.h +++ b/3rdparty/bgfx/tools/texturev/fs_texture_array.bin.h @@ -1,339 +1,383 @@ -static const uint8_t fs_texture_array_glsl[602] = +static const uint8_t fs_texture_array_glsl[616] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x27, 0x02, // texColor......'. - 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ..varying vec4 v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // _color0;.varying - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec3 v_texcoord - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // 0;.uniform vec4 - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // u_params;.unifor - 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x41, 0x72, 0x72, 0x61, 0x79, // m sampler2DArray - 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, // s_texColor;.voi - 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, // d main ().{. ve - 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c3 tmpvar_1;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x74, // mpvar_1.xy = v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x74, // excoord0.xy;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x70, 0x61, // mpvar_1.z = u_pa - 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, // rams.y;. vec4 _ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // color_2;. _colo - 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, // r_2 = (texture2D - 0x41, 0x72, 0x72, 0x61, 0x79, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ArrayLod (s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2c, 0x20, // olor, tmpvar_1, - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, // u_params.x) * v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // color0);. vec4 - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_3;. tmpv - 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // ar_3.xyz = pow ( - 0x61, 0x62, 0x73, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, // abs((. mix (p - 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, // ow (abs(_color_2 - 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, // .xyz), vec3(2.2, - 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, // 2.2, 2.2)), _co - 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // lor_2.xyz, u_par - 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, // ams.z). * . - 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, // exp2(u_params.w - 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x34, // ). )), vec3(0.4 - 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, // 545454, 0.454545 - 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, // 4, 0.4545454));. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, // tmpvar_3.w = _ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // color_2.w;. gl_ - 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // FragColor = tmpv - 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ar_3;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, // ...s_texColor... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, // .......,...varyi + 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // ng vec4 v_color0 + 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ;.varying vec3 v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // orm vec4 u_param + 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, // s0;.uniform samp + 0x6c, 0x65, 0x72, 0x32, 0x44, 0x41, 0x72, 0x72, 0x61, 0x79, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // ler2DArray s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // Color;.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, // ().{. vec3 tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ + 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // 1.xy = v_texcoor + 0x64, 0x30, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // d0.xy;. tmpvar_ + 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, // 1.z = u_params0. + 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // y;. vec4 _color + 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x20, 0x3d, // _2;. _color_2 = + 0x20, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x41, 0x72, 0x72, 0x61, 0x79, // (texture2DArray + 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, // Lod (s_texColor, + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // tmpvar_1, u_par + 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ams0.x) * v_colo + 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // r0);. vec4 tmpv + 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // ar_3;. tmpvar_3 + 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, // .xyz = pow (abs( + 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, // (. mix (pow ( + 0x61, 0x62, 0x73, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, // abs(_color_2.xyz + 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, // ), vec3(2.2, 2.2 + 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // , 2.2)), _color_ + 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // 2.xyz, u_params0 + 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x78, // .z). * . ex + 0x70, 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, 0x0a, // p2(u_params0.w). + 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, // )), vec3(0.454 + 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, // 5454, 0.4545454, + 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 0.4545454));. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, 0x63, 0x6f, // tmpvar_3.w = _co + 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, // lor_2.w;. gl_Fr + 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // agColor = tmpvar + 0x5f, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _3;.}... }; -static const uint8_t fs_texture_array_spv[2037] = +static const uint8_t fs_texture_array_essl[701] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd0, 0x07, 0x00, // _params......... - 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x3b, 0x01, 0x00, // ...#.........;.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, // .....GLSL.std.45 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // 0............... - 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai - 0x6e, 0x00, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, // n............... - 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // ................ - 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x09, 0x00, 0x00, // .main........... - 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x41, 0x72, // .BgfxSampler2DAr - 0x72, 0x61, 0x79, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ray............. - 0x00, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, // .m_sampler...... - 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, // .........m_textu - 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, // re.......6...s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x38, 0x00, 0x00, // exColor......8.. - 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, // .s_texColorSampl - 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, // er.......;...s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, // exColorTexture.. - 0x00, 0x05, 0x00, 0x04, 0x00, 0x76, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // .....v...$Global - 0x00, 0x06, 0x00, 0x06, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, // .....v.......u_p - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x78, 0x00, 0x00, // arams........x.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, // .............v_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xb7, 0x00, 0x00, // olor0........... - 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, // .v_texcoord0.... - 0x00, 0xc2, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, // .....bgfx_FragDa - 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, // ta0..G...;...".. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, // .....G...;...!.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....H...v...... - 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x76, 0x00, 0x00, // .#.......G...v.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, // .....G...x...".. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .....G.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .....G.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .....G.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, // .............!.. - 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, // ................ - 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, // ......... ...... - 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // ................ - 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x00, 0x17, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x20, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, // . ...5.......... - 0x00, 0x3b, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // .;...5...6...... - 0x00, 0x20, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // . ...7.......... - 0x00, 0x3b, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // .;...7...8...... - 0x00, 0x20, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // . ...:.......... - 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .;...:...;...... - 0x00, 0x15, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....>... ...... - 0x00, 0x2b, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .+...>...C...... - 0x00, 0x1b, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .....G.......+.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x2b, 0x00, 0x04, // .....c......@+.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x1e, 0x00, 0x03, // .....k.../..>... - 0x00, 0x76, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, // .v....... ...w.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, // .....v...;...w.. - 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, // .x...........y.. - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, // . .......+...y.. - 0x00, 0x7a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, // .z....... ...{.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .........+...... - 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, // ........@+...y.. - 0x00, 0x87, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, // .........+...y.. - 0x00, 0x9e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, // .........+...y.. - 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb2, 0x00, 0x00, // ......... ...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb2, 0x00, 0x00, // .........;...... - 0x00, 0xb3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb6, 0x00, 0x00, // ......... ...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb6, 0x00, 0x00, // .........;...... - 0x00, 0xb7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xc1, 0x00, 0x00, // ......... ...... - 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc1, 0x00, 0x00, // .........;...... - 0x00, 0xc2, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, // .........,...... - 0x00, 0x39, 0x01, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, // .9...c...c...c.. - 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0x6b, 0x00, 0x00, // .,.......:...k.. - 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, // .k...k...6...... - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, // ................ - 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, // .....=.......9.. - 0x00, 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, // .8...=.......<.. - 0x00, 0x3b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, // .;...P.......=.. - 0x00, 0x39, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x36, 0x00, 0x00, // .9...<...>...6.. - 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, // .=...=.......... - 0x00, 0xb3, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, // .....=.......... - 0x00, 0xb7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, // .....A...{...... - 0x00, 0x78, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .x...C.......=.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, // .Q.............. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, // .....P.......... - 0x00, 0xe2, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .............=.. - 0x00, 0x09, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .........6...Q.. - 0x00, 0x06, 0x00, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....5.......... - 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xe5, 0x00, 0x00, // .Q.......6...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, // .....A...{...... - 0x00, 0x78, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .x...C.......=.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, // .............V.. - 0x00, 0x47, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, // .G.......6...5.. - 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, // .X.............. - 0x00, 0xe4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, // ................ - 0x00, 0x0e, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, // ................ - 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0xeb, 0x00, 0x00, // .O.............. - 0x00, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, // ................ - 0x00, 0x1d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x00, // ................ - 0x00, 0x39, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, // .9...A...{...... - 0x00, 0x78, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .x...C...z...=.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, // .............P.. - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, // ................ - 0x00, 0x07, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, // .....O.......... - 0x00, 0xeb, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, // .............'.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, // ................ - 0x00, 0x08, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, // .....A...{...... - 0x00, 0x78, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .x...C.......=.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, // ................ - 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, // ................ - 0x00, 0x86, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, // ................ - 0x00, 0x10, 0x01, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, // .....'.......... - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .....+.......... - 0x00, 0x10, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2d, 0x01, 0x00, // .............-.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x3a, 0x01, 0x00, // .........+...:.. - 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0xeb, 0x00, 0x00, // .Q.............. - 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, // .....Q.......... - 0x00, 0x2d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // .-.......Q...... - 0x00, 0x15, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .....-.......Q.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, // .........-...... - 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, // .P.............. - 0x00, 0x15, 0x01, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, // .............>.. - 0x00, 0xc2, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, // .............8.. - 0x00, 0x00, 0x00, 0x10, 0x00, // ..... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, // ...s_texColor... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, // ...........varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // color0;.varying + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // highp vec3 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // coord0;.uniform + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // highp vec4 u_par + 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, // ams0;.uniform sa + 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x41, 0x72, 0x72, 0x61, 0x79, 0x20, 0x73, 0x5f, 0x74, // mpler2DArray s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // exColor;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // in ().{. highp + 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec3 tmpvar_1;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, // tmpvar_1.xy = v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, // _texcoord0.xy;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x75, 0x5f, // tmpvar_1.z = u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, // params0.y;. med + 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // iump vec4 tmpvar + 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // _2;. lowp vec4 + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, // _color_3;. _col + 0x6f, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, // or_3 = (texture2 + 0x44, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4c, 0x6f, 0x64, 0x45, 0x58, 0x54, 0x20, 0x28, 0x73, 0x5f, // DArrayLodEXT (s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // texColor, tmpvar + 0x5f, 0x31, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, // _1, u_params0.x) + 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, // * v_color0);. + 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // lowp vec4 tmpvar + 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, // _4;. tmpvar_4.x + 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x0a, // yz = pow (abs((. + 0x20, 0x20, 0x20, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, // mix (pow (ab + 0x73, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, // s(_color_3.xyz), + 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, // vec3(2.2, 2.2, + 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x2e, // 2.2)), _color_3. + 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x7a, // xyz, u_params0.z + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x78, 0x70, 0x32, // ). * . exp2 + 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, 0x0a, 0x20, 0x20, // (u_params0.w). + 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, // )), vec3(0.45454 + 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, // 54, 0.4545454, 0 + 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // .4545454));. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // pvar_4.w = _colo + 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // r_3.w;. tmpvar_ + 0x32, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, // 2 = tmpvar_4;. + 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, // gl_FragColor = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // mpvar_2;.}... }; -static const uint8_t fs_texture_array_dx9[615] = +static const uint8_t fs_texture_array_spv[1915] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x08, // _texColor0...... - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x34, 0x02, // u_params......4. - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........,.CTAB.. - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, // ................ - 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, // ......|...D..... - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, // ......P.......`. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........l..... - 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, // ..s_texColor.... - 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, // params.......... - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 - 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H - 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi - 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, // ler 10.1..Q..... - 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x2f, 0xba, // .....?.......@/. - 0xe8, 0x3e, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, // .>.............. - 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, // ................ - 0xd0, 0xa0, 0x01, 0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // ................ - 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, // .._............. - 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, // ................ - 0xe4, 0x90, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x8b, 0x0f, 0x00, // ................ - 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, // ........U....... - 0x04, 0x80, 0x01, 0x00, 0xaa, 0x8b, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x08, 0x80, 0x01, 0x00, // ................ - 0xff, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x01, 0x00, // ................ - 0xaa, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0e, 0x00, // ................ - 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, // ........U....... - 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, // ................ - 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x02, 0x00, 0xe4, 0x81, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x07, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x0e, 0x00, // ................ - 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x07, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, // ................ - 0x01, 0x80, 0x00, 0x00, 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, // ................ - 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x05, 0x00, // U............... - 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xff, 0xa0, 0x0e, 0x00, // ................ - 0x00, 0x02, 0x00, 0x08, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, // ................ - 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x04, 0x80, 0x00, 0x00, // ....U........... - 0xaa, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x84, 0x01, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, // ...s_texColor0.. + 0x00, 0x00, 0x00, 0x00, 0x03, 0x1a, 0x00, 0x3c, 0x07, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, // .......<.....#.. + 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x56, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, // .......V........ + 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, // ...............G + 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, // LSL.std.450..... + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0xbb, // .......main..... + 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x10, // ................ + 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, // ................ + 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, // ...............m + 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x73, // ain........<...s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // .......?...s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, // ColorTexture.... + 0x00, 0x06, 0x00, 0x79, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, // ...y...UniformBl + 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, // ock........y.... + 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x00, 0x00, 0x00, 0x05, // ...u_params0.... + 0x00, 0x03, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xbb, // ...{............ + 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, // ...gl_FragCoord. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // ...........v_col + 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x76, // or0............v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xcf, // _texcoord0...... + 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, // ...bgfx_FragData + 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // 0..G...<...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, // ...G...<...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G...?...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, // ...G...?...!.... + 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, // ...H...y.......# + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, // .......G...y.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G...{...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, // ...G...{...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G............ + 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, // ...........!.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, // ................ + 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, // ....... ........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, // ...;...........; + 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ...;...<....... + 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, // ...>...........; + 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, // ...>...?........ + 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...B... .......+ + 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, // ...B...G........ + 0x00, 0x03, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...K.......+.... + 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...g......@+.... + 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x1e, 0x00, 0x03, 0x00, 0x79, // ...o.../..>....y + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x02, // ....... ...z.... + 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x7b, // ...y...;...z...{ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x20, // ...........|... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7d, // .......+...|...} + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x02, // ....... ...~.... + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x88, // .......+........ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x89, // ......@+...|.... + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xa6, // .......+...|.... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xb0, // .......+...|.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xba, 0x00, 0x00, 0x00, 0x01, // ....... ........ + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbb, // .......;........ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbe, // .......;........ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x01, // ....... ........ + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc2, // .......;........ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xce, 0x00, 0x00, 0x00, 0x03, // ....... ........ + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xce, 0x00, 0x00, 0x00, 0xcf, // .......;........ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x54, // .......,.......T + 0x01, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x2c, // ...g...g...g..., + 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6f, // .......U...o...o + 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, // ...o...6........ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, // ................ + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3c, // ...=.......=...< + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, // ...=.......@...? + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xbe, // ...=............ + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, // ...=............ + 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x7b, // ...A...~.......{ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, // ...G.......=.... + 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xf1, // ...P............ + 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7e, // ...........A...~ + 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0xb0, // .......{...G.... + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, // ...=............ + 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x40, // ...V...K.......@ + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0c, // ...=...X........ + 0x01, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf6, // ................ + 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x0c, // ................ + 0x01, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x12, // .......O........ + 0x01, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x32, // ...............2 + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x0c, // ................ + 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // .......4........ + 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7e, // ...2...T...A...~ + 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x7d, // ...$...{...G...} + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x24, // ...=.......%...$ + 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x25, // ...P.......&...% + 0x01, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, // ...%...%........ + 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x34, // ...@...........4 + 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7e, // .......&...A...~ + 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x89, // ...*...{...G.... + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x2a, // ...=.......+...* + 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x01, // ...........,.... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x8e, // ...........+.... + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x2c, // .......-...@..., + 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x01, // ...........E.... + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, // .......-........ + 0x00, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x45, // ...G...........E + 0x01, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x16, // ...U...Q........ + 0x01, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, // .......G.......Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x01, // ...........G.... + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x47, // ...Q...........G + 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1a, // .......P........ + 0x01, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x16, // ................ + 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x1a, 0x01, 0x00, 0x00, 0xfd, // ...>............ + 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // ...8....... }; -static const uint8_t fs_texture_array_dx11[814] = +static const uint8_t fs_texture_array_dx9[624] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x02, // texColor0....... - 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x77, 0x19, 0xf0, 0x17, 0xe9, 0x7f, 0x9c, 0x60, 0x64, 0x2e, // ..DXBCw......`d. - 0x99, 0x47, 0xa5, 0xb8, 0x85, 0xdb, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, 0x00, 0x03, 0x00, // .G.............. - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS - 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, // ..............b. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO - 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD - 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR - 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x1c, 0x02, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@. - 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ......Y...F. ... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ......Z....`.... - 0x00, 0x00, 0x58, 0x40, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, // ..X@...p......UU - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, // ..b...........b. - 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, // ..2.......e.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, // ......h.......6. - 0x00, 0x05, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, // ..2.......F..... - 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, // ..6...B......... - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, // .........H..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x7e, // ......F.......F~ - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, // .......`........ - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x00, // .........8..... - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, // ......F.......F. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, // ....../...r..... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, // ..F...........6. - 0x00, 0x05, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, // ... ......:..... - 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, // ..8...r.......F. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, // .......@.....@.. - 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, // .@...@........r. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, // ......F.......2. - 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..r.......F..... - 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, // ..F.......F...A. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2...r..... - 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // .... .........F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, // ......F......... - 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, // ..........:. ... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8...r..... - 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..........F..... - 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ../...r.......F. - 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, // ..........8...r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, // ......F........@ - 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x00, 0x00, // ../..>/..>/..>.. - 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ......r ......F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // ......>....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, // ....u_params0... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, // .......4........ + 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, // .,.CTAB......... + 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, // ...............| + 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, // ...D...........P + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, // .......`........ + 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...l.......s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // Color........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // .......u_params0 + 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, // ...ps_3_0.Micros + 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, // oft (R) HLSL Sha + 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, // der Compiler 10. + 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, // 1..Q..........?. + 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x2f, 0xba, 0xe8, 0x3e, 0x1f, 0x00, 0x00, 0x02, 0x0a, // ......@/..>..... + 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, // ................ + 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x05, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xd0, 0xa0, 0x01, 0x00, 0xc4, 0x90, 0x01, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, // ..........._.... + 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, // ................ + 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x0f, 0x00, 0x00, 0x02, 0x02, // ................ + 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, // ................ + 0x00, 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x8b, 0x01, // .U.............. + 0x00, 0x00, 0x02, 0x00, 0x08, 0x08, 0x80, 0x01, 0x00, 0xff, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, // ................ + 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xaa, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, // ................ + 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, // ................ + 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x04, // .U.............. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x02, // ................ + 0x00, 0xe4, 0x81, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, // ................ + 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x8b, 0x0f, // ................ + 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, // .........U...... + 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x01, 0x00, 0xff, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x01, 0x80, 0x00, // ................ + 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0e, // .............U.. + 0x00, 0x00, 0x02, 0x00, 0x08, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ................ }; -static const uint8_t fs_texture_array_mtl[1054] = +static const uint8_t fs_texture_array_dx11[844] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x04, // FSH............. - 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, // ut {. float4 v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // color0;. float3 - 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, // v_texcoord0;.}; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, // haderOutput {. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // float4 gl_FragCo - 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, // lor;.};.struct x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, // latMtlShaderUnif - 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, // orm {. float4 u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, // _params;.};.frag - 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ment xlatMtlShad - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // erOutput xlatMtl - 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // Main (xlatMtlSha - 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, // derInput _mtl_i - 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, // [[stage_in]], co - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // nstant xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, // aderUniform& _mt - 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, // l_u [[buffer(0)] - 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, // ]. , texture2 - 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, // d_array<float> s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, // _texColor [[text - 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // ure(0)]], sample - 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // r _mtlsmp_s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, // olor [[sampler(0 - 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // )]]).{. xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, // ShaderOutput _mt - 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, // l_o;. float3 tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // pvar_1 = 0;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // pvar_1.xy = _mtl - 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, // _i.v_texcoord0.x - 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x20, // y;. tmpvar_1.z - 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // = _mtl_u.u_param - 0x73, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x63, // s.y;. float4 _c - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, // olor_2 = 0;. _c - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // olor_2 = (s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // olor.sample(_mtl - 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, // smp_s_texColor, - 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // (float2)((tmpvar - 0x5f, 0x31, 0x29, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x29, 0x28, // _1).xy), (uint)( - 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x6c, // (tmpvar_1).z), l - 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, // evel(_mtl_u.u_pa - 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // rams.x)) * _mtl_ - 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, // i.v_color0);. f - 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, // loat4 tmpvar_3 = - 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, // 0;. tmpvar_3.x - 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x0a, // yz = pow (abs((. - 0x20, 0x20, 0x20, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, // mix (pow (ab - 0x73, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, // s(_color_2.xyz), - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, // float3(2.2, 2.2 - 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // , 2.2)), _color_ - 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, // 2.xyz, _mtl_u.u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x0a, // params.z). * . - 0x20, 0x20, 0x20, 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // exp2(_mtl_u. - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, // u_params.w). )) - 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, // , float3(0.45454 - 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, // 54, 0.4545454, 0 - 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // .4545454));. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // pvar_3.w = _colo - 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, // r_2.w;. _mtl_o. - 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, // gl_FragColor = t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // mpvar_3;. retur - 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // n _mtl_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, // ...s_texColor0.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // ........s_texCol + 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, 0x00, // or0............. + 0x44, 0x58, 0x42, 0x43, 0x77, 0x19, 0xf0, 0x17, 0xe9, 0x7f, 0x9c, 0x60, 0x64, 0x2e, 0x99, 0x47, // DXBCw......`d..G + 0xa5, 0xb8, 0x85, 0xdb, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, // ,...........ISGN + 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // l...........P... + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, // ............b... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, // ....SV_POSITION. + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, // COLOR.TEXCOORD.. + 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGN,........... + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ............... + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, // ........SV_TARGE + 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x1c, 0x02, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // T...SHDR....@... + 0x87, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ....Y...F. ..... + 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....Z....`...... + 0x58, 0x40, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, // X@...p......UU.. + 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, // b...........b... + 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // 2.......e.... .. + 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....h.......6... + 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // 2.......F....... + 0x36, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, // 6...B......... . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, // ........H....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, // ....F.......F~.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, // .....`........ . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, // ........8....... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // ....F.......F... + 0x01, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ..../...r....... + 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // F...........6... + 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // . ......:....... + 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 8...r.......F... + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, // .....@.....@...@ + 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, // ...@........r... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, // ....F.......2... + 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // r.......F....... + 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, // F.......F...A... + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....2...r....... + 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // .. .........F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x06, // ....F........... + 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ........:. ..... + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8...r....... + 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, // /...r.......F... + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, // ........8...r... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....F........@.. + 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00, // /..>/..>/..>.... + 0x19, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....r ......F... + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // ....>....... +}; +static const uint8_t fs_texture_array_mtl[1074] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // ...s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, // pler...........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // _texColorTexture + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, // Color........... + 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, // ...#include <met + 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, // al_stdlib>.#incl + 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, // ude <simd/simd.h + 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, // >..using namespa + 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ce metal;..struc + 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // t _Global.{. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // float4 u_params0 + 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // ;.};..struct xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, // tMtlMain_out.{. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // float4 bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ragData0 [[color + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // (0)]];.};..struc + 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, // t xlatMtlMain_in + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, // .{. float4 v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // color0 [[user(lo + 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // cn0)]];. floa + 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, // t3 v_texcoord0 [ + 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // [user(locn1)]];. + 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // };..fragment xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, // tMtlMain_out xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // tMtlMain(xlatMtl + 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, // Main_in in [[sta + 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // ge_in]], constan + 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // t _Global& _mtl_ + 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, // u [[buffer(0)]], + 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, // texture2d_array + 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // <float> s_texCol + 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, // or [[texture(0)] + 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // ], sampler s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, // ColorSampler [[s + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, // ampler(0)]]).{. + 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, // xlatMtlMain_o + 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ut out = {};. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x20, 0x3d, 0x20, 0x66, // float3 _243 = f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // loat3(in.v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // ord0.xy, _mtl_u. + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, // u_params0.y);. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x35, 0x30, 0x20, 0x3d, 0x20, // float4 _250 = + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s_texColor.sampl + 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, // e(s_texColorSamp + 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x69, // ler, _243.xy, ui + 0x6e, 0x74, 0x28, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x28, 0x5f, 0x32, 0x34, 0x33, 0x2e, 0x7a, 0x29, // nt(round(_243.z) + 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // ), level(_mtl_u. + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2a, 0x20, // u_params0.x)) * + 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // in.v_color0;. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x32, 0x37, 0x34, 0x20, 0x3d, 0x20, 0x5f, // float3 _274 = _ + 0x32, 0x35, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, // 250.xyz;. out + 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, // .bgfx_FragData0 + 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x61, 0x62, 0x73, // = float4(pow(abs + 0x28, 0x6d, 0x69, 0x78, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x32, 0x37, // (mix(pow(abs(_27 + 0x34, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x30, 0x30, // 4), float3(2.200 + 0x30, 0x30, 0x30, 0x30, 0x34, 0x37, 0x36, 0x38, 0x33, 0x37, 0x31, 0x35, 0x38, 0x29, 0x29, 0x2c, // 0000476837158)), + 0x20, 0x5f, 0x32, 0x37, 0x34, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x5f, 0x6d, // _274, float3(_m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x7a, // tl_u.u_params0.z + 0x29, 0x29, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x32, 0x2e, 0x30, 0x2c, 0x20, 0x5f, 0x6d, // )) * pow(2.0, _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, // tl_u.u_params0.w + 0x29, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, // )), float3(0.454 + 0x35, 0x34, 0x35, 0x34, 0x36, 0x38, 0x30, 0x39, 0x31, 0x39, 0x36, 0x34, 0x37, 0x32, 0x29, 0x29, // 54546809196472)) + 0x2c, 0x20, 0x5f, 0x32, 0x35, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, // , _250.w);. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, // eturn out;.}.... + 0x30, 0x00, // 0. }; extern const uint8_t* fs_texture_array_pssl; extern const uint32_t fs_texture_array_pssl_size; diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_array.sc b/3rdparty/bgfx/tools/texturev/fs_texture_array.sc index 51d02db1dcc..94f2be60fcb 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_array.sc +++ b/3rdparty/bgfx/tools/texturev/fs_texture_array.sc @@ -1,8 +1,8 @@ $input v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_cube.bin.h b/3rdparty/bgfx/tools/texturev/fs_texture_cube.bin.h index c06bee315ea..48d4ca4fb64 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_cube.bin.h +++ b/3rdparty/bgfx/tools/texturev/fs_texture_cube.bin.h @@ -1,405 +1,1130 @@ -static const uint8_t fs_texture_cube_glsl[746] = +static const uint8_t fs_texture_cube_glsl[2570] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x05, 0x75, // texColor.......u - 0x5f, 0x6d, 0x74, 0x78, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0xab, 0x02, 0x00, 0x00, 0x76, 0x61, // _mtx..........va - 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // rying vec4 v_col - 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, // or0;.varying vec - 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, // 3 v_texcoord0;.u - 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, // niform vec4 u_pa - 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, // rams;.uniform sa - 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // mplerCube s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, // olor;.uniform ma - 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, // t4 u_mtx;.void m - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // ain ().{. vec3 - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_1;. tmpv - 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, // ar_1.z = 1.0;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x28, // tmpvar_1.xy = (( - 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x20, // (v_texcoord0.xy - 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, // * 2.0) - 1.0) * - 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x29, // vec2(1.0, -1.0)) - 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ;. vec4 tmpvar_ - 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, // 2;. tmpvar_2.w + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x02, 0x01, 0x00, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x75, 0x5f, 0x6d, 0x74, // r...........u_mt + 0x78, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x09, 0x00, 0x00, 0x76, // x..............v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, // arying vec4 v_co + 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, // lor0;.varying ve + 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // c3 v_texcoord0;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, // uniform vec4 u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // arams0;.uniform + 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, // vec4 u_params1;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, // uniform samplerC + 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, // ube s_texColor;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, // uniform mat4 u_m + 0x74, 0x78, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, // tx;.void main () + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // .{. vec4 color_ + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 1;. vec3 tmpvar + 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, // _2;. tmpvar_2.z + 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = 1.0;. tmpvar + 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // _2.xy = (((v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, // coord0.xy * 2.0) + 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, // - 1.0) * vec2(1 + 0x2e, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, // .0, -1.0));. ve + 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_3;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, // mpvar_3.w = 0.0; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_3.xyz + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, // = tmpvar_2;. ve + 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_4;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // mpvar_4 = textur + 0x65, 0x43, 0x75, 0x62, 0x65, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // eCubeLod (s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, // olor, normalize( + 0x28, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // (u_mtx * tmpvar_ + 0x33, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // 3).xyz), u_param + 0x73, 0x30, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // s0.x);. color_1 + 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x3b, // .w = tmpvar_4.w; + 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, // . color_1.xyz = + 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, // (mix (pow (. + 0x20, 0x61, 0x62, 0x73, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x79, // abs(tmpvar_4.xy + 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, // z). , vec3(2.2, + 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x74, 0x6d, 0x70, // 2.2, 2.2)), tmp + 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // var_4.xyz, u_par + 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x75, // ams0.z) * exp2(u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // _params0.w));. + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // color_1 = (color + 0x5f, 0x31, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, // _1 * v_color0);. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // vec3 outColor_ + 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 5;. vec3 tmpvar + 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, // _6;. tmpvar_6.x + 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = 0.0;. tmpvar + 0x5f, 0x36, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // _6.y = 0.0;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, // pvar_6.z = 0.0;. + 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, // outColor_5 = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, // mpvar_6;. if (( + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, // u_params1.x < 0. + 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, // 5)) {. vec3 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // mpvar_7;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x63, // var_7 = clamp (c + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, // olor_1.xyz, 0.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // 1.0);. vec3 + 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, // _rgb_8;. _rgb + 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, // _8 = tmpvar_7;. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // float tmpvar_ + 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // 9;. if ((tmpv + 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x78, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, // ar_7.x <= 0.0031 + 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, // 308)) {. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, // pvar_9 = (12.92 + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, // * tmpvar_7.x);. + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // } else {. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, // tmpvar_9 = ((1 + 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // .055 * pow (tmpv + 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, // ar_7.x, 0.416666 + 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 7)) - 0.055);. + 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x38, 0x2e, // };. _rgb_8. + 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, // x = tmpvar_9;. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // float tmpvar_1 + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // 0;. if ((tmpv + 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x79, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, // ar_7.y <= 0.0031 + 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, // 308)) {. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, // pvar_10 = (12.92 + 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x79, 0x29, 0x3b, 0x0a, // * tmpvar_7.y);. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // } else {. + 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, // tmpvar_10 = ( + 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, // (1.055 * pow (tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x79, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, // pvar_7.y, 0.4166 + 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, // 667)) - 0.055);. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, // };. _rgb_ + 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, // 8.y = tmpvar_10; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // . float tmpva + 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, // r_11;. if ((t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x7a, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, // mpvar_7.z <= 0.0 + 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // 031308)) {. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, // tmpvar_11 = (12 + 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x7a, // .92 * tmpvar_7.z + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, // );. } else {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, // tmpvar_11 + 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, // = ((1.055 * pow + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x34, // (tmpvar_7.z, 0.4 + 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, // 166667)) - 0.055 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, // );. };. _r + 0x67, 0x62, 0x5f, 0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // gb_8.z = tmpvar_ + 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // 11;. outColor + 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x7d, // _5 = _rgb_8;. } + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, // else {. if ( + 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x31, // (u_params1.x < 1 + 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, // .5)) {. out + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // Color_5 = color_ + 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, // 1.xyz;. } els + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, // e {. if ((u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x2e, 0x35, // _params1.x < 2.5 + 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, // )) {. vec + 0x33, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, // 3 _color_12;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, // _color_12 = + 0x20, 0x28, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x37, 0x31, 0x36, 0x36, 0x35, 0x31, // ((mat3(1.716651 + 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, 0x38, 0x2c, 0x20, 0x2d, 0x30, // , -0.3556708, -0 + 0x2e, 0x32, 0x35, 0x33, 0x33, 0x36, 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x36, 0x36, 0x36, // .2533663, -0.666 + 0x36, 0x38, 0x34, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x36, 0x34, 0x38, 0x31, 0x2c, 0x20, // 6844, 1.616481, + 0x30, 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x37, // 0.0157685, 0.017 + 0x36, 0x33, 0x39, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, 0x37, 0x37, 0x30, 0x36, // 6399, -0.0427706 + 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x28, // , 0.9421031) * ( + 0x6d, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x31, 0x32, 0x35, 0x35, 0x36, 0x34, 0x2c, 0x20, // mat3(0.4125564, + 0x30, 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x38, 0x30, // 0.3575761, 0.180 + 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x31, 0x32, 0x36, 0x37, 0x32, 0x39, 0x2c, // 4375, 0.2126729, + 0x20, 0x30, 0x2e, 0x37, 0x31, 0x35, 0x31, 0x35, 0x32, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x37, // 0.7151522, 0.07 + 0x32, 0x31, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x39, 0x33, 0x33, 0x33, 0x39, 0x2c, // 2175, 0.0193339, + 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x35, 0x30, // 0.119192, 0.950 + 0x33, 0x30, 0x34, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, // 3041) * color_1. + 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // xyz)) * u_params + 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, // 1.y);. ve + 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, // c3 tmpvar_13;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, // tmpvar_13 + 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // = pow ((_color_1 + 0x32, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x31, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, // 2 * 0.0001), vec + 0x33, 0x28, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, // 3(0.1593018, 0.1 + 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, // 593018, 0.159301 + 0x38, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, // 8));. vec + 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, // 3 tmpvar_14;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x3d, // tmpvar_14 = + 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x28, 0x30, 0x2e, 0x38, 0x33, 0x35, 0x39, 0x33, 0x37, // pow (((0.835937 + 0x35, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, // 5 + . ( + 0x31, 0x38, 0x2e, 0x38, 0x35, 0x31, 0x35, 0x36, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // 18.85156 * tmpva + 0x72, 0x5f, 0x31, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, // r_13). ) + 0x2f, 0x20, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // / (vec3(1.0, 1.0 + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // , 1.0) + . + 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, 0x36, 0x38, 0x37, 0x35, 0x20, 0x2a, 0x20, 0x74, // (18.6875 * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // mpvar_13). + 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x37, 0x38, 0x2e, 0x38, 0x34, // )), vec3(78.84 + 0x33, 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x37, // 375, 78.84375, 7 + 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // 8.84375));. + 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x74, // _color_12 = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // mpvar_14;. + 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, // outColor_5 = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // mpvar_14;. + 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, // };. };. };. + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, // vec4 tmpvar_15; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x78, 0x79, 0x7a, // . tmpvar_15.xyz + 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, // = outColor_5;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x63, // tmpvar_15.w = c + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, // olor_1.w;. gl_F + 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ragColor = tmpva + 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // r_15;.}... +}; +static const uint8_t fs_texture_cube_essl[2737] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x02, 0x01, 0x00, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x75, 0x5f, 0x6d, 0x74, // r...........u_mt + 0x78, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x0a, 0x00, 0x00, 0x76, // x..........Q...v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec + 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ing highp vec3 v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, // orm highp vec4 u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // _params0;.unifor + 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, // m highp vec4 u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // arams1;.uniform + 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, // lowp samplerCube + 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // s_texColor;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // form highp mat4 + 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // u_mtx;.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, // ().{. lowp vec + 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, // 4 color_1;. hig + 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // hp vec3 tmpvar_2 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x20, 0x3d, // ;. tmpvar_2.z = + 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // 1.0;. tmpvar_2 + 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // .xy = (((v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2d, // ord0.xy * 2.0) - + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x2e, 0x30, // 1.0) * vec2(1.0 + 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, // , -1.0));. high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, // p vec4 tmpvar_3; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_3.w = + 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, // 0.0;. tmpvar_3. + 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, // xyz = tmpvar_2;. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // lowp vec4 tmpv + 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, // ar_4;. tmpvar_4 + 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x4c, 0x6f, // = textureCubeLo + 0x64, 0x20, 0x20, 0x20, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // d (s_texColor + 0x2c, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x28, 0x75, 0x5f, 0x6d, // , normalize((u_m + 0x74, 0x78, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x2e, 0x78, // tx * tmpvar_3).x + 0x79, 0x7a, 0x29, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, // yz), u_params0.x + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, // );. color_1.w = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x63, // tmpvar_4.w;. c + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, // olor_1.xyz = (mi + 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, // x (pow (. abs + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x0a, 0x20, // (tmpvar_4.xyz). + 0x20, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, // , vec3(2.2, 2.2 + 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // , 2.2)), tmpvar_ + 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // 4.xyz, u_params0 + 0x2e, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, // .z) * exp2(u_par + 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // ams0.w));. colo + 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x2a, // r_1 = (color_1 * + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, // v_color0);. me + 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // diump vec4 tmpva + 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // r_5;. lowp vec3 + 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // outColor_6;. l + 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // owp vec3 tmpvar_ + 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x78, 0x20, // 7;. tmpvar_7.x 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = 0.0;. tmpvar_ - 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // 2.xyz = tmpvar_1 - 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // ;. vec4 _color_ - 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, // 3;. _color_3 = - 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x4c, 0x6f, 0x64, 0x20, // (textureCubeLod - 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x6e, 0x6f, 0x72, // (s_texColor, nor - 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x28, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x20, 0x2a, 0x20, // malize((u_mtx * - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, // tmpvar_2).xyz), - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, // u_params.x) * v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // color0);. vec4 - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_4;. tmpv - 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // ar_4.xyz = pow ( - 0x61, 0x62, 0x73, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, // abs((. mix (p - 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, // ow (abs(_color_3 - 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, // .xyz), vec3(2.2, - 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, // 2.2, 2.2)), _co - 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // lor_3.xyz, u_par - 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, // ams.z). * . - 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, // exp2(u_params.w - 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x34, // ). )), vec3(0.4 - 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, // 545454, 0.454545 - 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, // 4, 0.4545454));. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, // tmpvar_4.w = _ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // color_3.w;. gl_ - 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // FragColor = tmpv - 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ar_4;.}... + 0x37, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 7.y = 0.0;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_7.z = 0.0;. + 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x6d, // outColor_6 = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, // pvar_7;. if ((u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, // _params1.x < 0.5 + 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, // )) {. lowp ve + 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, // c3 tmpvar_8;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, // tmpvar_8 = clam + 0x70, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, // p (color_1.xyz, + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, // 0.0, 1.0);. l + 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x39, 0x3b, // owp vec3 _rgb_9; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x6d, // . _rgb_9 = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // pvar_8;. lowp + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, // float tmpvar_10 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // ;. if ((tmpva + 0x72, 0x5f, 0x38, 0x2e, 0x78, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, // r_8.x <= 0.00313 + 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // 08)) {. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, // var_10 = (12.92 + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, // * tmpvar_8.x);. + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // } else {. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x28, // tmpvar_10 = (( + 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, // 1.055 * pow (tmp + 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, // var_8.x, 0.41666 + 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, // 67)) - 0.055);. + 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x39, // };. _rgb_9 + 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, // .x = tmpvar_10;. + 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // lowp float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, // mpvar_11;. if + 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x79, 0x20, 0x3c, 0x3d, // ((tmpvar_8.y <= + 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, // 0.0031308)) {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, // tmpvar_11 = + 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // (12.92 * tmpvar + 0x5f, 0x38, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, // _8.y);. } els + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // e {. tmpvar + 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, // _11 = ((1.055 * + 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x79, 0x2c, // pow (tmpvar_8.y, + 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, // 0.4166667)) - 0 + 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // .055);. };. + 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x39, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // _rgb_9.y = tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // var_11;. lowp + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, // float tmpvar_12 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // ;. if ((tmpva + 0x72, 0x5f, 0x38, 0x2e, 0x7a, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, // r_8.z <= 0.00313 + 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // 08)) {. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, // var_12 = (12.92 + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x7a, 0x29, 0x3b, 0x0a, 0x20, // * tmpvar_8.z);. + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // } else {. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x28, // tmpvar_12 = (( + 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, // 1.055 * pow (tmp + 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, // var_8.z, 0.41666 + 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, // 67)) - 0.055);. + 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x39, // };. _rgb_9 + 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, // .z = tmpvar_12;. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x36, 0x20, 0x3d, // outColor_6 = + 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, // _rgb_9;. } els + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, // e {. if ((u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x35, 0x29, 0x29, // arams1.x < 1.5)) + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, // {. outColo + 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // r_6 = color_1.xy + 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, // z;. } else {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, // if ((u_par + 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, // ams1.x < 2.5)) { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, // . lowp ve + 0x63, 0x33, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, // c3 _color_13;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, // _color_13 + 0x3d, 0x20, 0x28, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x37, 0x31, 0x36, 0x36, 0x35, // = ((mat3(1.71665 + 0x31, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, 0x38, 0x2c, 0x20, 0x2d, // 1, -0.3556708, - + 0x30, 0x2e, 0x32, 0x35, 0x33, 0x33, 0x36, 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x36, 0x36, // 0.2533663, -0.66 + 0x36, 0x36, 0x38, 0x34, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x36, 0x34, 0x38, 0x31, 0x2c, // 66844, 1.616481, + 0x20, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, // 0.0157685, 0.01 + 0x37, 0x36, 0x33, 0x39, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, 0x37, 0x37, 0x30, // 76399, -0.042770 + 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x31, 0x29, 0x20, 0x2a, 0x20, // 6, 0.9421031) * + 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x31, 0x32, 0x35, 0x35, 0x36, 0x34, 0x2c, // (mat3(0.4125564, + 0x20, 0x30, 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x38, // 0.3575761, 0.18 + 0x30, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x31, 0x32, 0x36, 0x37, 0x32, 0x39, // 04375, 0.2126729 + 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x35, 0x31, 0x35, 0x32, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x30, // , 0.7151522, 0.0 + 0x37, 0x32, 0x31, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x39, 0x33, 0x33, 0x33, 0x39, // 72175, 0.0193339 + 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x35, // , 0.119192, 0.95 + 0x30, 0x33, 0x30, 0x34, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // 03041) * color_1 + 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // .xyz)) * u_param + 0x73, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, // s1.y);. l + 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // owp vec3 tmpvar_ + 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // 14;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x5f, 0x63, // ar_14 = pow ((_c + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x31, // olor_13 * 0.0001 + 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, // ), vec3(0.159301 + 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, 0x30, 0x2e, // 8, 0.1593018, 0. + 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // 1593018));. + 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, // lowp vec3 tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // var_15;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, // tmpvar_15 = pow + 0x28, 0x28, 0x28, 0x30, 0x2e, 0x38, 0x33, 0x35, 0x39, 0x33, 0x37, 0x35, 0x20, 0x2b, 0x20, 0x0a, // (((0.8359375 + . + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, 0x38, 0x35, // (18.85 + 0x31, 0x35, 0x36, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x29, // 156 * tmpvar_14) + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x76, 0x65, // . ) / (ve + 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // c3(1.0, 1.0, 1.0 + 0x29, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, // ) + . ( + 0x31, 0x38, 0x2e, 0x36, 0x38, 0x37, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 18.6875 * tmpvar + 0x5f, 0x31, 0x34, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x2c, // _14). )), + 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, // vec3(78.84375, + 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, // 78.84375, 78.843 + 0x37, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, // 75));. _c + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // olor_13 = tmpvar + 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, // _15;. out + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // Color_6 = tmpvar + 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // _15;. };. + 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // };. };. lowp + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x3b, // vec4 tmpvar_16; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x2e, 0x78, 0x79, 0x7a, // . tmpvar_16.xyz + 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, // = outColor_6;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x63, // tmpvar_16.w = c + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // olor_1.w;. tmpv + 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, // ar_5 = tmpvar_16 + 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ;. gl_FragColor + 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // = tmpvar_5;.}.. + 0x00, // . }; -static const uint8_t fs_texture_cube_spv[2425] = +static const uint8_t fs_texture_cube_spv[4867] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x75, // FSH............u - 0x5f, 0x6d, 0x74, 0x78, 0x14, 0x01, 0x10, 0x00, 0x04, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // _mtx.......u_par - 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x48, 0x09, 0x00, 0x00, 0x03, 0x02, 0x23, // ams......H.....# - 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // .........[...... - 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, // .GLSL.std.450... - 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x08, // ................ - 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, // .........main... - 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, // ................ - 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, // ................ - 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai - 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x42, 0x67, 0x66, // n............Bgf - 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x00, 0x06, 0x00, 0x06, // xSamplerCube.... - 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, // .........m_sampl - 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // er.............. - 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, // .m_texture...... - 0x00, 0x36, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, // .6...s_texColor. - 0x00, 0x05, 0x00, 0x07, 0x00, 0x38, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....8...s_texCo - 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, // lorSampler...... - 0x00, 0x3b, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, // .;...s_texColorT - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, // exture.......w.. - 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x77, 0x00, 0x00, // .$Global.....w.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, // .....u_params... - 0x00, 0x06, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, // .....w.......u_m - 0x74, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // tx.......y...... - 0x00, 0x05, 0x00, 0x05, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // .........v_color - 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, // 0............v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xd4, 0x00, 0x00, // excoord0........ - 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, // .bgfx_FragData0. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...;..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...;...!...... - 0x00, 0x48, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...w.......#.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....H...w...... - 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....H...w...... - 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, // .#.......H...w.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, // .............G.. - 0x00, 0x77, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, // .w.......G...y.. - 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, // .".......G...... - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc9, 0x00, 0x00, // .........G...... - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd4, 0x00, 0x00, // .........G...... - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, // .!.............. - 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // ............. .. - 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // ................ - 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, // ................ - 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, // ................ - 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // ..... ...5...... - 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, // .....;...5...6.. - 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // ..... ...7...... - 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, // .....;...7...8.. - 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ..... ...:...... - 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, // .....;...:...;.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // .........>... .. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, // .....+...>...?.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, // .....+...>...C.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // .........G...... - 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, // .+.......c...... - 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x2f, 0xba, 0xe8, // @+.......k.../.. - 0x3e, 0x18, 0x00, 0x04, 0x00, 0x76, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // >....v.......... - 0x00, 0x1e, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, // .....w.......v.. - 0x00, 0x20, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, // . ...x.......w.. - 0x00, 0x3b, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .;...x...y...... - 0x00, 0x15, 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....z... ...... - 0x00, 0x2b, 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .+...z...{...... - 0x00, 0x20, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, // . ...|.......... - 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .+.............. - 0x40, 0x2b, 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // @+...z.......... - 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .+.............. - 0x00, 0x17, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // .+.............. - 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // ?+.............. - 0xbf, 0x2c, 0x00, 0x05, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, // .,.............. - 0x00, 0xa3, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xae, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... .......... - 0x00, 0x76, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, // .v...+...z...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ..... .......... - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, // .....;.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ..... .......... - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, // .....;.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ..... .......... - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, // .....;.......... - 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x58, 0x01, 0x00, // .....,.......X.. - 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, // .........,...... - 0x00, 0x59, 0x01, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, // .Y...c...c...c.. - 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x6b, 0x00, 0x00, // .,.......Z...k.. - 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, // .k...k...6...... - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, // ................ - 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, // .....=.......9.. - 0x00, 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, // .8...=.......<.. - 0x00, 0x3b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, // .;...P.......=.. - 0x00, 0x39, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x36, 0x00, 0x00, // .9...<...>...6.. - 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, // .=...=.......... - 0x00, 0xc5, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, // .....=.......... - 0x00, 0xc9, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, // .....O.......... - 0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x8e, 0x00, 0x05, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, // ................ - 0x00, 0x87, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, // ................ - 0x00, 0xf2, 0x00, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x9c, 0x00, 0x00, // .....X.......... - 0x00, 0xf5, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, // .Q.............. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, // .....P.......... - 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, // ................ - 0x00, 0x41, 0x00, 0x05, 0x00, 0xae, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, // .A...........y.. - 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x76, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, // .?...=...v...... - 0x00, 0xfe, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0xfd, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, // .........O...... - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, // ................ - 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, // .........E...... - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x36, 0x00, 0x00, // .=...........6.. - 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, // .Q.......T...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, // .....Q.......U.. - 0x00, 0x03, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7c, 0x00, 0x00, // .........A...|.. - 0x00, 0x05, 0x01, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, // .....y...C...... - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, // .=.............. - 0x00, 0x56, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x55, 0x01, 0x00, // .V...G.......U.. - 0x00, 0x54, 0x01, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1a, 0x01, 0x00, // .T...X.......... - 0x00, 0x17, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, // ................ - 0x00, 0x85, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x1a, 0x01, 0x00, // ................ - 0x00, 0xc6, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, // .....O.......#.. - 0x00, 0x0a, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, // .............:.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, // .........#...... - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, // .....<.......... - 0x00, 0x3a, 0x01, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7c, 0x00, 0x00, // .:...Y...A...|.. - 0x00, 0x25, 0x01, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, // .%...y...C...{.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x25, 0x01, 0x00, // .=.......&...%.. - 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, // .P.......'...&.. - 0x00, 0x26, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, // .&...&...O...... - 0x00, 0x29, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // .).............. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, // ................ - 0x00, 0x46, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, // .F...........<.. - 0x00, 0x29, 0x01, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7c, 0x00, 0x00, // .)...'...A...|.. - 0x00, 0x2c, 0x01, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, // .,...y...C...... - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x2c, 0x01, 0x00, // .=.......-...,.. - 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x1a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, // .........-...... - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, 0x2e, 0x01, 0x00, // ...../...F...... - 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x4a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // .........J...... - 0x00, 0x04, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, // ...../.......... - 0x00, 0x4c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x4a, 0x01, 0x00, // .L...........J.. - 0x00, 0x5a, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, // .Z...Q.......2.. - 0x00, 0x0a, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // .........Q...... - 0x00, 0x33, 0x01, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .3...L.......Q.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // .....4...L...... - 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x4c, 0x01, 0x00, // .Q.......5...L.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, // .....P.......6.. - 0x00, 0x33, 0x01, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x32, 0x01, 0x00, // .3...4...5...2.. - 0x00, 0x3e, 0x00, 0x03, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, // .>.......6...... - 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, // .8.....P. + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0xfd, 0x7f, 0x05, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x14, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, // ...u_mtx.. ..... + 0xfd, 0x7f, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x12, 0x00, 0x10, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1a, 0x00, 0xa0, 0x12, 0x00, 0x00, 0x03, // r0.............. + 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xf3, 0x02, 0x00, 0x00, 0x00, // .#.............. + 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, // ...GLSL.std.450. + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. + 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x90, // ...|............ + 0x01, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x4b, // ...main........K + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // ...s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x73, // pler.......N...s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // _texColorTexture + 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x81, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, // ...........Unifo + 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x81, // rmBlock......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // .......u_params0 + 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, // ...............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x81, // _params1........ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x00, 0x00, 0x00, 0x05, // .......u_mtx.... + 0x00, 0x03, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x7c, // ...............| + 0x01, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, // ...gl_FragCoord. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // ...........v_col + 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x83, 0x01, 0x00, 0x00, 0x76, // or0............v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x90, // _texcoord0...... + 0x01, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, // ...bgfx_FragData + 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // 0..G...K...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, // ...G...K...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G...N...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, // ...G...N...!.... + 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, // ...H...........# + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, // .......H........ + 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x81, // ...#.......H.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x81, // ...........H.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, // .......#... ...H + 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, // ................ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, // ...G...........G + 0x00, 0x04, 0x00, 0x83, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // .......".......G + 0x00, 0x04, 0x00, 0x83, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, // .......!.......G + 0x00, 0x04, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, // ...|...........G + 0x00, 0x04, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...............G + 0x00, 0x04, 0x00, 0x83, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, // ...............G + 0x00, 0x04, 0x00, 0x90, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, // ................ + 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, // .......!........ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, // ... ............ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0e, // ................ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4a, // ........... ...J + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4a, // ...........;...J + 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4d, // ...K....... ...M + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4d, // ...........;...M + 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x51, // ...N...........Q + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x51, // ... .......+...Q + 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x51, // ...R.......+...Q + 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x5a, // ...V...........Z + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x76, // .......+.......v + 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x18, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0e, // ......@......... + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, 0x0e, // ................ + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x82, // ........... .... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x82, // ...........;.... + 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x84, // ................ + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x84, // ... .......+.... + 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x86, // ........... .... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x84, // ..........@+.... + 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x1c, 0x2e, 0x4d, 0x3b, 0x14, 0x00, 0x02, 0x00, 0x9a, // .........M;..... + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x52, // ...+...........R + 0xb8, 0x4e, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x3d, // .NA+...........= + 0x0a, 0x87, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x55, // ..?+...........U + 0x55, 0xd5, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xae, // U.>+............ + 0x47, 0x61, 0x3d, 0x2b, 0x00, 0x04, 0x00, 0x84, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, // Ga=+............ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x84, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x01, // ...+............ + 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x98, // ...+............ + 0x3a, 0xd3, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x37, // :.>+...........7 + 0x14, 0xb7, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x9c, // ..>+............ + 0xc4, 0x38, 0x3e, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc3, // .8>,............ + 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xed, 0xc6, 0x59, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, // .........Y>+.... + 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x37, 0x14, 0x37, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, // .......7.7?+.... + 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x7d, 0xd0, 0x93, 0x3d, 0x2c, 0x00, 0x06, 0x00, 0x0b, // .......}..=,.... + 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc9, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x21, // ...+...........! + 0x62, 0x9e, 0x3c, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xef, // b.<+............ + 0x1a, 0xf4, 0x3d, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x21, // ..=+...........! + 0x47, 0x73, 0x3f, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xcb, // Gs?,............ + 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xc0, // ...........,.... + 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xce, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x3a, // ...+...........: + 0xbb, 0xdb, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x7c, // ..?+...........| + 0x1a, 0xb6, 0xbe, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x3a, // ...+...........: + 0xb9, 0x81, 0xbe, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd6, // ...,............ + 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xd4, 0xab, 0x2a, 0xbf, 0x2b, 0x00, 0x04, 0x00, 0x07, // .........*.+.... + 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xdb, 0xe8, 0xce, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, // ..........?+.... + 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xf1, 0x2c, 0x81, 0x3c, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ........,.<,.... + 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xdc, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x8d, // ...+............ + 0x81, 0x90, 0x3c, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x3a, // ..<+...........: + 0x30, 0x2f, 0xbd, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xab, // 0/.+............ + 0x2d, 0x71, 0x3f, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xde, // -q?,............ + 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xc0, // ...........,.... + 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe1, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, // ...+............ + 0x20, 0x23, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x00, // #>+............ + 0xb0, 0x9d, 0x42, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x00, // ..B+............ + 0x00, 0x56, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, // .V?+............ + 0xd0, 0x96, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, // ..A+............ + 0x80, 0x95, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x17, // ..A+............ + 0xb7, 0xd1, 0x38, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ..8+............ + 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, // ..?+............ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, // ...+............ + 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, // ..?+.......!.... + 0x00, 0xc0, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x00, // ..?+.......).... + 0x00, 0x20, 0x40, 0x17, 0x00, 0x04, 0x00, 0x47, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, // . @....G........ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4d, 0x01, 0x00, 0x00, 0x00, // ...+.......M.... + 0x00, 0x80, 0xbf, 0x2c, 0x00, 0x05, 0x00, 0x47, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x00, // ...,...G...N.... + 0x01, 0x00, 0x00, 0x4d, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x58, // ...M...+...Q...X + 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x59, 0x01, 0x00, 0x00, 0x02, // ....... ...Y.... + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7b, 0x01, 0x00, 0x00, 0x01, // ....... ...{.... + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7b, 0x01, 0x00, 0x00, 0x7c, // .......;...{...| + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7b, 0x01, 0x00, 0x00, 0x7f, // .......;...{.... + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x82, 0x01, 0x00, 0x00, 0x01, // ....... ........ + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x82, 0x01, 0x00, 0x00, 0x83, // .......;........ + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8f, 0x01, 0x00, 0x00, 0x03, // ....... ........ + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x01, 0x00, 0x00, 0x90, // .......;........ + 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x47, 0x01, 0x00, 0x00, 0xe0, // .......,...G.... + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ...........,.... + 0x00, 0x00, 0x00, 0xe1, 0x02, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, // .......v...v...v + 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe2, 0x02, 0x00, 0x00, 0x10, // ...,............ + 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ...........,.... + 0x00, 0x00, 0x00, 0xe3, 0x02, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe9, // ................ + 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe4, 0x02, 0x00, 0x00, 0xed, // ...,............ + 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ...........,.... + 0x00, 0x00, 0x00, 0xe5, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe6, 0x02, 0x00, 0x00, 0xeb, // ...,............ + 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0xf2, 0x02, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, // .......6........ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, // ................ + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4b, // ...=.......L...K + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, // ...=.......O...N + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7f, // ...=............ + 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x83, // ...=............ + 0x01, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x47, 0x01, 0x00, 0x00, 0xb9, 0x01, 0x00, 0x00, 0x84, // ...O...G........ + 0x01, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8e, // ................ + 0x00, 0x05, 0x00, 0x47, 0x01, 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, 0xb9, 0x01, 0x00, 0x00, 0x90, // ...G............ + 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x47, 0x01, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0xba, // .......G........ + 0x01, 0x00, 0x00, 0xe0, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x47, 0x01, 0x00, 0x00, 0xbd, // ...........G.... + 0x01, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // .......N...Q.... + 0x00, 0x00, 0x00, 0xbe, 0x01, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc5, 0x01, 0x00, 0x00, 0xbe, // ...P............ + 0x01, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x41, // ...............A + 0x00, 0x05, 0x00, 0x59, 0x01, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x58, // ...Y...........X + 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0xc6, // ...=............ + 0x01, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0xc5, // ................ + 0x01, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc9, // .......O........ + 0x01, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xca, // ................ + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, 0x41, // .......E.......A + 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0xcd, 0x01, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x56, // ...............V + 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xce, // .......=........ + 0x01, 0x00, 0x00, 0xcd, 0x01, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xeb, // .......V...Z.... + 0x01, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, // ...O...L...X.... + 0x00, 0x00, 0x00, 0xee, 0x01, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0xca, 0x01, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0xce, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd1, // .......O........ + 0x01, 0x00, 0x00, 0xee, 0x01, 0x00, 0x00, 0xee, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, // ................ + 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x0c, // ................ + 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x00, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0xe1, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x86, // ...........A.... + 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x85, // ...........V.... + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, 0xf8, // ...=............ + 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0xf9, // ...P............ + 0x01, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x08, // ................ + 0x02, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x86, // ...........A.... + 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x91, // ...........V.... + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xfe, // ...=............ + 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x8e, // ................ + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x00, // ................ + 0x02, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0xee, // ...O............ + 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, // ................ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xd7, // ................ + 0x01, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x86, // ...........A.... + 0x00, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xad, // ...........R.... + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0xd9, // ...=............ + 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0x83, // ...A............ + 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, // ...R.......=.... + 0x00, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x9a, // ................ + 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0xf7, // ... ............ + 0x00, 0x03, 0x00, 0x3d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x20, // ...=........... + 0x02, 0x00, 0x00, 0x21, 0x02, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x28, // ...!...(.......( + 0x02, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x00, 0x00, 0xda, // ...........*.... + 0x01, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x00, // ...!.......<.... + 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x2a, 0x02, 0x00, 0x00, 0x2b, 0x02, 0x00, 0x00, 0x2e, // .......*...+.... + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2e, 0x02, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x9a, // ................ + 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0xf7, // ...0.......).... + 0x00, 0x03, 0x00, 0x3b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x30, // ...;...........0 + 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x3b, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x31, // ...1...;.......1 + 0x02, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x33, 0x02, 0x00, 0x00, 0xd7, // ...O.......3.... + 0x01, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x98, 0x02, 0x00, 0x00, 0x33, // ...............3 + 0x02, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x9e, // ................ + 0x02, 0x00, 0x00, 0x98, 0x02, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x9e, 0x02, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x8e, // ...9............ + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xab, 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0xf4, // ...........9.... + 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xae, 0x02, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xab, 0x02, 0x00, 0x00, 0xe3, 0x02, 0x00, 0x00, 0x8e, // ................ + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb2, 0x02, 0x00, 0x00, 0xae, 0x02, 0x00, 0x00, 0xef, // ................ + 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x00, 0xe4, // ................ + 0x02, 0x00, 0x00, 0xb2, 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb8, // ................ + 0x02, 0x00, 0x00, 0xae, 0x02, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0xb9, 0x02, 0x00, 0x00, 0xe5, 0x02, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x00, 0x88, // ................ + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xba, 0x02, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x00, 0xb9, // ................ + 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xbd, 0x02, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xba, 0x02, 0x00, 0x00, 0xe6, 0x02, 0x00, 0x00, 0xf9, // ................ + 0x00, 0x02, 0x00, 0x3b, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3b, 0x02, 0x00, 0x00, 0xf5, // ...;.......;.... + 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xef, 0x02, 0x00, 0x00, 0xe2, 0x02, 0x00, 0x00, 0x2e, // ................ + 0x02, 0x00, 0x00, 0xbd, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3c, // .......1.......< + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2b, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, // .......+...O.... + 0x00, 0x00, 0x00, 0x2d, 0x02, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0x00, // ...-............ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3c, // ...............< + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3c, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0b, // .......<........ + 0x00, 0x00, 0x00, 0xee, 0x02, 0x00, 0x00, 0xef, 0x02, 0x00, 0x00, 0x3b, 0x02, 0x00, 0x00, 0x2d, // ...........;...- + 0x02, 0x00, 0x00, 0x2b, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3d, 0x02, 0x00, 0x00, 0xf8, // ...+.......=.... + 0x00, 0x02, 0x00, 0x21, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x23, // ...!...O.......# + 0x02, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x26, // ...............& + 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x23, 0x02, 0x00, 0x00, 0xe2, // .......+...#.... + 0x02, 0x00, 0x00, 0xe5, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x51, // .......Q.......Q + 0x02, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x6d, // ...&...........m + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0xad, 0x00, 0x00, 0x00, 0x61, // ...............a + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x61, 0x02, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x9a, // .......a........ + 0x00, 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x51, 0x02, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xf7, // ...c...Q........ + 0x00, 0x03, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x63, // ...l...........c + 0x02, 0x00, 0x00, 0x64, 0x02, 0x00, 0x00, 0x67, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x67, // ...d...g.......g + 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x69, 0x02, 0x00, 0x00, 0x01, // ...........i.... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x51, 0x02, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x85, // .......Q........ + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6a, 0x02, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x69, // .......j.......i + 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6b, 0x02, 0x00, 0x00, 0x6a, // ...........k...j + 0x02, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6d, 0x02, 0x00, 0x00, 0xf8, // ...........m.... + 0x00, 0x02, 0x00, 0x64, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x66, // ...d...........f + 0x02, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x51, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6d, // .......Q.......m + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x6c, 0x02, 0x00, 0x00, 0xff, 0x00, 0x01, 0x00, 0xf8, // .......l........ + 0x00, 0x02, 0x00, 0x6d, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe7, // ...m............ + 0x02, 0x00, 0x00, 0x6b, 0x02, 0x00, 0x00, 0x67, 0x02, 0x00, 0x00, 0x66, 0x02, 0x00, 0x00, 0x64, // ...k...g...f...d + 0x02, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd7, 0x02, 0x00, 0x00, 0xe7, // ...R............ + 0x02, 0x00, 0x00, 0xf2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf7, // ...U...&........ + 0x00, 0x03, 0x00, 0x7f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0xad, // ................ + 0x00, 0x00, 0x00, 0x73, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x73, 0x02, 0x00, 0x00, 0xbc, // ...s.......s.... + 0x00, 0x05, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x75, 0x02, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, 0x99, // .......u...U.... + 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x7e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, // .......~........ + 0x00, 0x04, 0x00, 0x75, 0x02, 0x00, 0x00, 0x76, 0x02, 0x00, 0x00, 0x79, 0x02, 0x00, 0x00, 0xf8, // ...u...v...y.... + 0x00, 0x02, 0x00, 0x79, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7b, // ...y...........{ + 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, 0xa5, // ...........U.... + 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, 0xa3, // ...........|.... + 0x00, 0x00, 0x00, 0x7b, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, // ...{...........} + 0x02, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x7f, // ...|............ + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x76, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, // .......v........ + 0x00, 0x00, 0x00, 0x78, 0x02, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, 0xf9, // ...x.......U.... + 0x00, 0x02, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7e, 0x02, 0x00, 0x00, 0xff, // ...........~.... + 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0xe9, 0x02, 0x00, 0x00, 0x7d, 0x02, 0x00, 0x00, 0x79, 0x02, 0x00, 0x00, 0x78, // .......}...y...x + 0x02, 0x00, 0x00, 0x76, 0x02, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xda, // ...v...R........ + 0x02, 0x00, 0x00, 0xe9, 0x02, 0x00, 0x00, 0xd7, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x59, 0x02, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00, 0x02, // .......Y...&.... + 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x91, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, // ................ + 0x00, 0x03, 0x00, 0xad, 0x00, 0x00, 0x00, 0x85, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x85, // ................ + 0x02, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x87, 0x02, 0x00, 0x00, 0x59, // ...............Y + 0x02, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x87, 0x02, 0x00, 0x00, 0x88, 0x02, 0x00, 0x00, 0x8b, // ................ + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8b, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x8d, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x59, // ...............Y + 0x02, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8e, // ................ + 0x02, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x8d, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, 0x8e, 0x02, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf9, // ................ + 0x00, 0x02, 0x00, 0x91, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x88, 0x02, 0x00, 0x00, 0x85, // ................ + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x02, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x59, // ...............Y + 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x91, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x90, // ................ + 0x02, 0x00, 0x00, 0xff, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x91, 0x02, 0x00, 0x00, 0xf5, // ................ + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xeb, 0x02, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, 0x8b, // ................ + 0x02, 0x00, 0x00, 0x8a, 0x02, 0x00, 0x00, 0x88, 0x02, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, // ...........R.... + 0x00, 0x00, 0x00, 0xdd, 0x02, 0x00, 0x00, 0xeb, 0x02, 0x00, 0x00, 0xda, 0x02, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3d, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3d, // .......=.......= + 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xed, 0x02, 0x00, 0x00, 0xee, // ................ + 0x02, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0xdd, 0x02, 0x00, 0x00, 0x91, 0x02, 0x00, 0x00, 0x51, // ...<...........Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0x03, // .......@........ + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x41, 0x02, 0x00, 0x00, 0xed, // ...Q.......A.... + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x42, // .......Q.......B + 0x02, 0x00, 0x00, 0xed, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0xed, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, // ...C...........P + 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x41, 0x02, 0x00, 0x00, 0x42, // .......D...A...B + 0x02, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x90, // ...C...@...>.... + 0x01, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, // ...D.......8.... + 0x00, 0x60, 0x00, // .`. }; -static const uint8_t fs_texture_cube_dx9[779] = +static const uint8_t fs_texture_cube_dx9[1596] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x73, // FSH............s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x05, // _texColor0...... - 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x14, 0x01, 0x00, 0x00, 0x03, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, // u_mtx.......u_pa - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x03, 0x00, 0x01, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x00, 0x03, // rams............ - 0xff, 0xff, 0xfe, 0xff, 0x37, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0xaf, 0x00, // ....7.CTAB...... - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, // ................ - 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // ......X......... - 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, // ..d.......t..... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, // ......|......... - 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, // ..s_texColor.... - 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ - 0x6d, 0x74, 0x78, 0x00, 0xab, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, // mtx............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, // ......u_params.. - 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, // ..ps_3_0.Microso - 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, // ft (R) HLSL Shad - 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, // er Compiler 10.1 - 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x04, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, // ..Q..........@.. - 0x80, 0xbf, 0x00, 0x00, 0x80, 0x3f, 0xcd, 0xcc, 0x0c, 0x40, 0x51, 0x00, 0x00, 0x05, 0x05, 0x00, // .....?...@Q..... - 0x0f, 0xa0, 0x2f, 0xba, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ../..>.......... - 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, // ................ - 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x01, 0x00, // ................ - 0xe4, 0x90, 0x04, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ........U....... - 0x03, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0xe6, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x0e, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0x90, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ....U........... - 0x07, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x02, 0x00, // ................ - 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x24, 0x00, // ..............$. - 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, // ................ - 0x08, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, // ......_......... - 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, // ................ - 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, // ................ - 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x8b, 0x0f, 0x00, // ............U... - 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x8b, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, // ................ - 0x08, 0x80, 0x01, 0x00, 0xff, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, // ................ - 0xe4, 0x80, 0x04, 0x00, 0xff, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, // ................ - 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0e, 0x00, // ............U... - 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x02, 0x00, 0xe4, 0x81, 0x04, 0x00, // ................ - 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x03, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, // ................ - 0xe4, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x03, 0x00, 0xff, 0xa0, 0x05, 0x00, // ................ - 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x0f, 0x00, // ................ - 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, // ................ - 0x02, 0x80, 0x00, 0x00, 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x80, 0x00, 0x00, // ....U........... - 0xaa, 0x8b, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, // ................ - 0x00, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, // ................ - 0x00, 0x02, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, // ........U....... - 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ........... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x05, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x14, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, // ....u_mtx....... + 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x03, // ....u_params0... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // ........u_params + 0x31, 0x12, 0x01, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x05, 0x00, 0x00, 0x00, // 1............... + 0x03, 0xff, 0xff, 0xfe, 0xff, 0x3f, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0xcd, // .....?.CTAB..... + 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ + 0x91, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // .......l........ + 0x00, 0x02, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x02, // ...x............ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0xac, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // r............... + 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x00, 0xab, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, // ...u_mtx........ + 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, // ...........u_par + 0x61, 0x6d, 0x73, 0x30, 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, // ams0............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, // .......u_params1 + 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, // .ps_3_0.Microsof + 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, // t (R) HLSL Shade + 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, // r Compiler 10.1. + 0xab, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05, 0x05, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x00, // ...Q..........@. + 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0x3f, 0xcd, 0xcc, 0x0c, 0x40, 0x51, 0x00, 0x00, 0x05, 0x06, // ......?...@Q.... + 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x3f, 0x1c, 0x2e, 0x4d, 0x3b, 0x52, 0xb8, 0x4e, 0x41, 0x55, // ......?..M;R.NAU + 0x55, 0xd5, 0x3e, 0x51, 0x00, 0x00, 0x05, 0x07, 0x00, 0x0f, 0xa0, 0x3d, 0x0a, 0x87, 0x3f, 0xae, // U.>Q.......=..?. + 0x47, 0x61, 0xbd, 0x00, 0x00, 0xc0, 0xbf, 0x00, 0x00, 0x20, 0xc0, 0x51, 0x00, 0x00, 0x05, 0x08, // Ga....... .Q.... + 0x00, 0x0f, 0xa0, 0x98, 0x3a, 0xd3, 0x3e, 0x37, 0x14, 0xb7, 0x3e, 0x9c, 0xc4, 0x38, 0x3e, 0x17, // ....:.>7..>..8>. + 0xb7, 0xd1, 0x38, 0x51, 0x00, 0x00, 0x05, 0x09, 0x00, 0x0f, 0xa0, 0x00, 0xd0, 0x96, 0x41, 0x00, // ..8Q..........A. + 0x00, 0x56, 0x3f, 0x00, 0x80, 0x95, 0x41, 0x00, 0x00, 0x80, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x0a, // .V?...A...?Q.... + 0x00, 0x0f, 0xa0, 0x3a, 0xbb, 0xdb, 0x3f, 0x7c, 0x1a, 0xb6, 0xbe, 0x3a, 0xb9, 0x81, 0xbe, 0x00, // ...:..?|...:.... + 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x0b, 0x00, 0x0f, 0xa0, 0x21, 0x62, 0x9e, 0x3c, 0xef, // ...Q.......!b.<. + 0x1a, 0xf4, 0x3d, 0x21, 0x47, 0x73, 0x3f, 0x00, 0xb0, 0x9d, 0x42, 0x51, 0x00, 0x00, 0x05, 0x0c, // ..=!Gs?...BQ.... + 0x00, 0x0f, 0xa0, 0xed, 0xc6, 0x59, 0x3e, 0x37, 0x14, 0x37, 0x3f, 0x7d, 0xd0, 0x93, 0x3d, 0x00, // .....Y>7.7?}..=. + 0x20, 0x23, 0x3e, 0x51, 0x00, 0x00, 0x05, 0x0d, 0x00, 0x0f, 0xa0, 0xd4, 0xab, 0x2a, 0xbf, 0xdb, // #>Q.........*.. + 0xe8, 0xce, 0x3f, 0xf1, 0x2c, 0x81, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x0e, // ..?.,.<....Q.... + 0x00, 0x0f, 0xa0, 0x8d, 0x81, 0x90, 0x3c, 0x3a, 0x30, 0x2f, 0xbd, 0xab, 0x2d, 0x71, 0x3f, 0x00, // ......<:0/..-q?. + 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, // ................ + 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x01, // ................ + 0x00, 0xe4, 0x90, 0x05, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // .........U...... + 0x00, 0x03, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x05, 0x00, 0xe6, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x0e, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0x90, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, // .....U.......... + 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x02, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x24, // ...............$ + 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, // ................ + 0x00, 0x08, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, // ......._........ + 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x00, // ................ + 0x00, 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x8b, 0x0f, // .............U.. + 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x05, 0x00, 0x00, 0x03, 0x01, // ................ + 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0xff, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, // ................ + 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, // ................ + 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x12, // .U.............. + 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x03, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x02, // ................ + 0x00, 0xe4, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, 0x80, 0x03, 0x00, 0xff, 0xa0, 0x05, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x05, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x01, // ................ + 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x06, 0x00, 0x00, 0xa0, 0x29, 0x00, 0x04, 0x02, 0x04, // ...........).... + 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x17, 0x80, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x20, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x06, // ... ............ + 0x00, 0xff, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x07, // ................ + 0x00, 0x00, 0xa0, 0x07, 0x00, 0x55, 0xa0, 0x20, 0x00, 0x00, 0x03, 0x01, 0x00, 0x02, 0x80, 0x00, // .....U. ........ + 0x00, 0x00, 0x80, 0x06, 0x00, 0xff, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x02, 0x80, 0x01, // ................ + 0x00, 0x55, 0x80, 0x07, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x55, 0xa0, 0x20, 0x00, 0x00, 0x03, 0x01, // .U.......U. .... + 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x06, 0x00, 0xff, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, // .....U.......... + 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x07, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x55, 0xa0, 0x02, // .............U.. + 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x81, 0x06, 0x00, 0x55, 0xa0, 0x05, // .............U.. + 0x00, 0x00, 0x03, 0x03, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x06, 0x00, 0xaa, 0xa0, 0x58, // ...............X + 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x01, // ................ + 0x00, 0xc9, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x08, // ...*............ + 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x02, 0x80, 0x0c, // ................ + 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x04, 0x80, 0x0b, // ................ + 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x04, 0x80, 0x0e, // ................ + 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x80, 0x0a, // ................ + 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x02, 0x80, 0x0d, // ................ + 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, // ................ + 0x00, 0xe4, 0x80, 0x04, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, // .....U.......... + 0x00, 0xe4, 0x80, 0x08, 0x00, 0xff, 0xa0, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, // ................ + 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0f, // .............U.. + 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, // ................ + 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x0c, 0x00, 0xff, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, // ................ + 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, // ................ + 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x04, // .U.............. + 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x09, 0x00, 0xaa, 0xa0, 0x09, // ................ + 0x00, 0xff, 0xa0, 0x06, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x06, // ................ + 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x06, 0x00, 0x00, 0x02, 0x03, // .........U...... + 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0c, 0x80, 0x07, // ................ + 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x80, 0x01, 0x00, 0xee, 0x80, 0x04, // ................ + 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x09, // ................ + 0x00, 0x00, 0xa0, 0x09, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x03, // .....U.......... + 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x02, // ................ + 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x02, 0x00, 0x55, 0x80, 0x0f, // .............U.. + 0x00, 0x00, 0x02, 0x03, 0x00, 0x04, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x02, // ................ + 0x00, 0x07, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x0b, 0x00, 0xff, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x03, // ................ + 0x00, 0x01, 0x80, 0x02, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x02, // ................ + 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x03, 0x00, 0x04, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x58, // .U.............X + 0x00, 0x00, 0x04, 0x01, 0x00, 0x0e, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0a, 0x00, 0xff, 0xa0, 0x03, // .........U...... + 0x00, 0x90, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, // ...X............ + 0x00, 0xf9, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, // .......+........ + 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ............ }; -static const uint8_t fs_texture_cube_dx11[1062] = +static const uint8_t fs_texture_cube_dx11[2080] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x75, 0x5f, // _params.......u_ - 0x6d, 0x74, 0x78, 0x14, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // mtx.......s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xe4, 0x03, 0x00, 0x00, 0x44, 0x58, // olor0.........DX - 0x42, 0x43, 0xb0, 0x62, 0x27, 0x2c, 0xcd, 0x2b, 0x52, 0x62, 0x21, 0x09, 0x5c, 0x97, 0xe9, 0xc6, // BC.b',.+Rb!..... - 0x0d, 0x4f, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, // .O............,. - 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, // ..........ISGNl. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........P..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........b..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x03, // ................ - 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, // ..SV_POSITION.CO - 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, // LOR.TEXCOORD..OS - 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, // GN,........... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, // ......SV_TARGET. - 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x08, 0x03, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc2, 0x00, // ..SHDR....@..... - 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, // ..Y...F. ....... - 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, // ..Z....`......X0 - 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, // ...p......UU..b. - 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, // ..........b...2. - 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // ......e.... .... - 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, 0x32, 0x00, // ..h.......2...2. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, // ......F........@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....@...@...... - 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, // ...@............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8...2..... - 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, // ..F........@.... - 0x80, 0x3f, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, // .?............8. - 0x00, 0x08, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, // ..........V..... - 0x00, 0x00, 0x06, 0x89, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, // .... .........2. - 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, // ..r.......F. ... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, // ................ - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ..........r..... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, // ..F.......F. ... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..F.......F..... - 0x00, 0x00, 0x44, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, // ..D...........:. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8...r..... - 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..........F..... - 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..H...........F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, // ......F~.......` - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ ....... - 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, // ..8...........F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x00, // ......F......./. - 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, // ..r.......F..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, // ......6.... .... - 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, // ..:.......8...r. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, // ......F........@ - 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, // .....@...@...@.. - 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, // ......r.......F. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2...r..... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, // ..F.......F..... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, // ..F...A.......2. - 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, // ..r......... ... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ......F.......F. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, // ..:. .........8. - 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, // ..r............. - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, // ..F......./...r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, // ......F......... - 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..8...r.......F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, // .......@../..>/. - 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x20, // .>/..>........r - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, // ......F.......>. - 0x00, 0x01, 0x00, 0x00, 0x50, 0x00, // ....P. + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x12, 0x00, 0x10, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x14, 0x00, 0x20, 0x00, // .......u_mtx.. . + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, // r0..........s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // xColor0......... + 0xa8, 0x07, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x80, 0x5f, 0x81, 0x67, 0x05, 0x7d, 0x62, 0xae, // ....DXBC._.g.}b. + 0x51, 0xfc, 0xdc, 0x7e, 0x3b, 0x72, 0x2d, 0x0c, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x07, 0x00, 0x00, // Q..~;r-......... + 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, // ....,........... + 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNl........... + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // b............... + 0x02, 0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT + 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // ION.COLOR.TEXCOO + 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // RD..OSGN,....... + 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .... ........... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, // ............SV_T + 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xcc, 0x06, 0x00, 0x00, // ARGET...SHDR.... + 0x40, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, // @.......Y...F. . + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, // ........Z....`.. + 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....X0...p...... + 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // UU..b........... + 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // b...2.......e... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, // . ......h....... + 0x32, 0x00, 0x00, 0x0f, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, // 2...2.......F... + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, // .....@.....@...@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, // .........@...... + 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, // ............8... + 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // 2.......F....... + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, // .@.....?........ + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8........... + 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x89, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // V......... ..... + 0x03, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....2...r....... + 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, // F. ............. + 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // ................ + 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // r.......F....... + 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, // F. ............. + 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, // F.......D....... + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // ....:.......8... + 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // r............... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, // F.......H....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, // ....F.......F~.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, // .....`........ . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, // ......../...r... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F........... + 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 8...r.......F... + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, // .....@.....@...@ + 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, // ...@........r... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // ....F........... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // r.......F....... + 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, // F...A.......2... + 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // r......... ..... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....F.......F... + 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // :. .........8... + 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // r............... + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, // F.......8....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // ....F.......F... + 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....1........... + 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, // .. ..........@.. + 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x04, 0x03, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ...?............ + 0x36, 0x20, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 6 ..r.......F... + 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........r....... + 0x02, 0x40, 0x00, 0x00, 0x1c, 0x2e, 0x4d, 0x3b, 0x1c, 0x2e, 0x4d, 0x3b, 0x1c, 0x2e, 0x4d, 0x3b, // .@....M;..M;..M; + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, // ....F.......8... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // r.......F....... + 0x02, 0x40, 0x00, 0x00, 0x52, 0xb8, 0x4e, 0x41, 0x52, 0xb8, 0x4e, 0x41, 0x52, 0xb8, 0x4e, 0x41, // .@..R.NAR.NAR.NA + 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // ..../...r....... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, // F.......8...r... + 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....F........@.. + 0x55, 0x55, 0xd5, 0x3e, 0x55, 0x55, 0xd5, 0x3e, 0x55, 0x55, 0xd5, 0x3e, 0x00, 0x00, 0x00, 0x00, // UU.>UU.>UU.>.... + 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....r.......F... + 0x03, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // ....2...r....... + 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x3d, 0x0a, 0x87, 0x3f, // F........@..=..? + 0x3d, 0x0a, 0x87, 0x3f, 0x3d, 0x0a, 0x87, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // =..?=..?.....@.. + 0xae, 0x47, 0x61, 0xbd, 0xae, 0x47, 0x61, 0xbd, 0xae, 0x47, 0x61, 0xbd, 0x00, 0x00, 0x00, 0x00, // .Ga..Ga..Ga..... + 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 7...r.......F... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....F.......F... + 0x03, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01, 0x31, 0x00, 0x00, 0x0b, 0x32, 0x00, 0x10, 0x00, // ........1...2... + 0x01, 0x00, 0x00, 0x00, 0x06, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ...... ......... + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, // .@.....?.. @.... + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x02, 0x40, 0x00, 0x00, 0x98, 0x3a, 0xd3, 0x3e, 0x37, 0x14, 0xb7, 0x3e, 0x9c, 0xc4, 0x38, 0x3e, // .@...:.>7..>..8> + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, // ....F........... + 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xed, 0xc6, 0x59, 0x3e, // "........@....Y> + 0x37, 0x14, 0x37, 0x3f, 0x7d, 0xd0, 0x93, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 7.7?}..=....F... + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ........B....... + 0x02, 0x40, 0x00, 0x00, 0x21, 0x62, 0x9e, 0x3c, 0xef, 0x1a, 0xf4, 0x3d, 0x21, 0x47, 0x73, 0x3f, // .@..!b.<...=!Gs? + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, // ....F........... + 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x3a, 0xbb, 0xdb, 0x3f, // .........@..:..? + 0x7c, 0x1a, 0xb6, 0xbe, 0x3a, 0xb9, 0x81, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // |...:.......F... + 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // ........"....... + 0x02, 0x40, 0x00, 0x00, 0xd4, 0xab, 0x2a, 0xbf, 0xdb, 0xe8, 0xce, 0x3f, 0xf1, 0x2c, 0x81, 0x3c, // .@....*....?.,.< + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, // ....F........... + 0x42, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x8d, 0x81, 0x90, 0x3c, // B........@.....< + 0x3a, 0x30, 0x2f, 0xbd, 0xab, 0x2d, 0x71, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // :0/..-q?....F... + 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....8...r....... + 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x56, 0x85, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // F.......V. ..... + 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....8...r....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x17, 0xb7, 0xd1, 0x38, // F........@.....8 + 0x17, 0xb7, 0xd1, 0x38, 0x17, 0xb7, 0xd1, 0x38, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, // ...8...8..../... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // r.......F....... + 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 8...r.......F... + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x20, 0x23, 0x3e, 0x00, 0x20, 0x23, 0x3e, // .....@... #>. #> + 0x00, 0x20, 0x23, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, // . #>........r... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, // ....F.......2... + 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // r.......F....... + 0x02, 0x40, 0x00, 0x00, 0x00, 0xd0, 0x96, 0x41, 0x00, 0xd0, 0x96, 0x41, 0x00, 0xd0, 0x96, 0x41, // .@.....A...A...A + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x56, 0x3f, 0x00, 0x00, 0x56, 0x3f, // .....@....V?..V? + 0x00, 0x00, 0x56, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, // ..V?....2...r... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....F........@.. + 0x00, 0x80, 0x95, 0x41, 0x00, 0x80, 0x95, 0x41, 0x00, 0x80, 0x95, 0x41, 0x00, 0x00, 0x00, 0x00, // ...A...A...A.... + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, // .@.....?...?...? + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ........r....... + 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // F.......F....... + 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // /...r.......F... + 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....8...r....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0xb0, 0x9d, 0x42, // F........@.....B + 0x00, 0xb0, 0x9d, 0x42, 0x00, 0xb0, 0x9d, 0x42, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, // ...B...B........ + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // r.......F....... + 0x01, 0x00, 0x00, 0x07, 0xe2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, // ............V... + 0x01, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, // ............7... + 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // r............... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // F............... + 0x15, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....6.... ...... + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x60, 0x00, // F.......>.....`. }; -static const uint8_t fs_texture_cube_mtl[1167] = +static const uint8_t fs_texture_cube_mtl[3861] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x04, // FSH...........|. - 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, // ut {. float4 v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // color0;. float3 - 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, // v_texcoord0;.}; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, // haderOutput {. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // float4 gl_FragCo - 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, // lor;.};.struct x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, // latMtlShaderUnif - 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, // orm {. float4 u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _params;. float - 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, // 4x4 u_mtx;.};.fr - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // agment xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // aderOutput xlatM - 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // tlMain (xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // haderInput _mtl_ - 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, // i [[stage_in]], - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // constant xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, // ShaderUniform& _ - 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, // mtl_u [[buffer(0 - 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // )]]. , textur - 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, // ecube<float> s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // exColor [[textur - 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, // e(0)]], sampler - 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // _mtlsmp_s_texCol - 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, // or [[sampler(0)] - 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // ]).{. xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // aderOutput _mtl_ - 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // o;. float3 tmpv - 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // ar_1 = 0;. tmpv - 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, // ar_1.z = 1.0;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x28, // tmpvar_1.xy = (( - 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // (_mtl_i.v_texcoo - 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, // rd0.xy * 2.0) - - 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x31, 0x2e, // 1.0) * float2(1. - 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // 0, -1.0));. flo - 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, // at4 tmpvar_2 = 0 - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, // ;. tmpvar_2.w = - 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // 0.0;. tmpvar_2 - 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // .xyz = tmpvar_1; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // . float4 _color - 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // _3 = 0;. _color - 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // _3 = (s_texColor - 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, // .sample(_mtlsmp_ - 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, // s_texColor, (flo - 0x61, 0x74, 0x33, 0x29, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x28, // at3)(normalize(( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x20, 0x2a, 0x20, 0x74, // _mtl_u.u_mtx * t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x2c, 0x20, // mpvar_2).xyz)), - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, // level(_mtl_u.u_p - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // arams.x)) * _mtl - 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, // _i.v_color0);. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, // float4 tmpvar_4 - 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, // = 0;. tmpvar_4. - 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, // xyz = pow (abs(( - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, // . mix (pow (a - 0x62, 0x73, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x29, // bs(_color_3.xyz) - 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, // , float3(2.2, 2. - 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // 2, 2.2)), _color - 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // _3.xyz, _mtl_u.u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, // _params.z). * - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // . exp2(_mtl_u - 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x29, // .u_params.w). ) - 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, // ), float3(0.4545 - 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, // 454, 0.4545454, - 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, // 0.4545454));. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, 0x63, 0x6f, 0x6c, // mpvar_4.w = _col - 0x6f, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // or_3.w;. _mtl_o - 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // .gl_FragColor = - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, // tmpvar_4;. retu - 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // rn _mtl_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // ...s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, // pler...........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // _texColorTexture + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x75, 0x5f, 0x6d, 0x74, 0x78, // ...........u_mtx + 0x14, 0x01, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, // .. ........u_par + 0x61, 0x6d, 0x73, 0x31, 0x12, 0x01, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, // ams1...........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x7a, 0x0e, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // ...z...#include + 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, // <metal_stdlib>.# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, // include <simd/si + 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, // md.h>..using nam + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, // espace metal;..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // float4 u_par + 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // ams0;. float4 + 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // u_params1;. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x74, 0x78, 0x3b, 0x0a, // float4x4 u_mtx;. + 0x7d, 0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, // };..constant flo + 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, // at3 _754 = {};.. + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // struct xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // in_out.{. flo + 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, // at4 bgfx_FragDat + 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, // a0 [[color(0)]]; + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // .};..struct xlat + 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, // MtlMain_in.{. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // float4 v_color0 + 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, // [[user(locn0)]] + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, // ;. float3 v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, // excoord0 [[user( + 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, // locn1)]];.};..fr + 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // agment xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // in_out xlatMtlMa + 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // in(xlatMtlMain_i + 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, // n in [[stage_in] + 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, // ], constant _Glo + 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, // bal& _mtl_u [[bu + 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, // ffer(0)]], textu + 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, // recube<float> s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, // texColor [[textu + 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // re(0)]], sampler + 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, // s_texColorSampl + 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, // er [[sampler(0)] + 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ]).{. xlatMtl + 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, // Main_out out = { + 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, // };. float4 _4 + 0x39, 0x34, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, // 94 = s_texColor. + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // sample(s_texColo + 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, // rSampler, normal + 0x69, 0x7a, 0x65, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x74, // ize((_mtl_u.u_mt + 0x78, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x28, 0x28, 0x69, 0x6e, 0x2e, // x * float4(((in. + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x20, 0x2a, // v_texcoord0.xy * + 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x31, // 2.0) - float2(1 + 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x31, 0x2e, // .0)) * float2(1. + 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x30, // 0, -1.0), 1.0, 0 + 0x2e, 0x30, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, // .0)).xyz), level + 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // (_mtl_u.u_params + 0x30, 0x2e, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // 0.x));. float + 0x33, 0x20, 0x5f, 0x34, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x39, 0x34, 0x2e, 0x78, 0x79, // 3 _465 = _494.xy + 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x35, // z;. float3 _5 + 0x31, 0x33, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x61, 0x62, 0x73, // 13 = mix(pow(abs + 0x28, 0x5f, 0x34, 0x36, 0x35, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x32, // (_465), float3(2 + 0x2e, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x37, 0x36, 0x38, 0x33, 0x37, 0x31, 0x35, // .200000047683715 + 0x38, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x34, 0x36, 0x35, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // 8)), _465, float + 0x33, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // 3(_mtl_u.u_param + 0x73, 0x30, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x32, 0x2e, 0x30, // s0.z)) * pow(2.0 + 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // , _mtl_u.u_param + 0x73, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // s0.w);. float + 0x34, 0x20, 0x5f, 0x34, 0x37, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, // 4 _471 = float4( + 0x5f, 0x35, 0x31, 0x33, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x35, 0x31, 0x33, 0x2e, 0x79, 0x2c, 0x20, // _513.x, _513.y, + 0x5f, 0x35, 0x31, 0x33, 0x2e, 0x7a, 0x2c, 0x20, 0x5f, 0x34, 0x39, 0x34, 0x2e, 0x77, 0x29, 0x20, // _513.z, _494.w) + 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, // * in.v_color0;. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x34, 0x39, 0x3b, 0x0a, // float3 _749;. + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // if (_mtl_u.u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, // _params1.x < 0.5 + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ). {. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x35, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x61, // float3 _550 = fa + 0x73, 0x74, 0x3a, 0x3a, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x5f, 0x34, 0x37, 0x31, 0x2e, 0x78, // st::clamp(_471.x + 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, // yz, float3(0.0), + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, // float3(1.0));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x39, // float _59 + 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x35, 0x30, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 3 = _550.x;. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x34, 0x33, 0x3b, 0x0a, // float _743;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // do. + 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x35, 0x39, 0x33, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, // if (_593 <= 0.0 + 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x30, 0x30, 0x30, 0x39, 0x30, 0x37, 0x33, 0x30, 0x31, 0x39, // 0313080009073019 + 0x30, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 03). + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x5f, 0x37, 0x34, 0x33, 0x20, 0x3d, 0x20, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x30, 0x30, // _743 = 12.9200 + 0x30, 0x30, 0x30, 0x37, 0x36, 0x32, 0x39, 0x33, 0x39, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x5f, 0x35, // 00076293945 * _5 + 0x39, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 93;. + 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x34, 0x33, 0x20, 0x3d, 0x20, 0x28, // _743 = ( + 0x31, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x34, 0x37, 0x35, 0x34, 0x37, 0x39, 0x31, // 1.05499994754791 + 0x32, 0x36, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x5f, 0x35, 0x39, 0x33, 0x2c, 0x20, 0x30, // 26 * pow(_593, 0 + 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x36, 0x35, 0x36, 0x37, 0x33, 0x32, 0x35, 0x35, 0x39, // .416666656732559 + 0x32, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x39, // 2)) - 0.05499999 + 0x39, 0x37, 0x30, 0x31, 0x39, 0x37, 0x36, 0x37, 0x37, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 9701976776;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, // brea + 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, // k;. } + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, // . } while + 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // (false);. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x32, 0x37, 0x20, 0x3d, 0x20, 0x5f, // float3 _727 = _ + 0x37, 0x35, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x32, // 754;. _72 + 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x34, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 7.x = _743;. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x39, 0x37, 0x20, 0x3d, // float _597 = + 0x20, 0x5f, 0x35, 0x35, 0x30, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _550.y;. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x34, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, // float _745;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // do. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, // {. if + 0x20, 0x28, 0x5f, 0x35, 0x39, 0x37, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, // (_597 <= 0.0031 + 0x33, 0x30, 0x38, 0x30, 0x30, 0x30, 0x39, 0x30, 0x37, 0x33, 0x30, 0x31, 0x39, 0x30, 0x33, 0x29, // 308000907301903) + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // . {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, // _ + 0x37, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, // 745 = 12.9200000 + 0x37, 0x36, 0x32, 0x39, 0x33, 0x39, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x39, 0x37, 0x3b, // 76293945 * _597; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // . + 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, // _745 = (1.0 + 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x34, 0x37, 0x35, 0x34, 0x37, 0x39, 0x31, 0x32, 0x36, 0x20, // 549999475479126 + 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x5f, 0x35, 0x39, 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, // * pow(_597, 0.41 + 0x36, 0x36, 0x36, 0x36, 0x36, 0x35, 0x36, 0x37, 0x33, 0x32, 0x35, 0x35, 0x39, 0x32, 0x29, 0x29, // 66666567325592)) + 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x30, // - 0.05499999970 + 0x31, 0x39, 0x37, 0x36, 0x37, 0x37, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 1976776;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, // } while(fa + 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // lse);. fl + 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x32, 0x37, // oat3 _730 = _727 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x33, 0x30, 0x2e, 0x79, // ;. _730.y + 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x34, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // = _745;. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x35, // float _601 = _5 + 0x35, 0x30, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // 50.z;. fl + 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x34, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // oat _747;. + 0x20, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // do. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, // if (_ + 0x36, 0x30, 0x31, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, // 601 <= 0.0031308 + 0x30, 0x30, 0x30, 0x39, 0x30, 0x37, 0x33, 0x30, 0x31, 0x39, 0x30, 0x33, 0x29, 0x0a, 0x20, 0x20, // 000907301903). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x34, 0x37, // _747 + 0x20, 0x3d, 0x20, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, 0x32, // = 12.9200000762 + 0x39, 0x33, 0x39, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x30, 0x31, 0x3b, 0x0a, 0x20, 0x20, // 93945 * _601;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, // br + 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // eak;. + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, // }. e + 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // lse. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x5f, 0x37, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x34, 0x39, // _747 = (1.0549 + 0x39, 0x39, 0x39, 0x34, 0x37, 0x35, 0x34, 0x37, 0x39, 0x31, 0x32, 0x36, 0x20, 0x2a, 0x20, 0x70, // 999475479126 * p + 0x6f, 0x77, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, // ow(_601, 0.41666 + 0x36, 0x36, 0x35, 0x36, 0x37, 0x33, 0x32, 0x35, 0x35, 0x39, 0x32, 0x29, 0x29, 0x20, 0x2d, 0x20, // 66567325592)) - + 0x30, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x30, 0x31, 0x39, 0x37, // 0.05499999970197 + 0x36, 0x37, 0x37, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 6776;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, // } while(false + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // );. float + 0x33, 0x20, 0x5f, 0x37, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x33, 0x30, 0x3b, 0x0a, 0x20, // 3 _733 = _730;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x33, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, // _733.z = + 0x5f, 0x37, 0x34, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, // _747;. _7 + 0x34, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x33, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, // 49 = _733;. } + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, // . else. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, // float3 _ + 0x37, 0x35, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, // 750;. if + 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // (_mtl_u.u_params + 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // 1.x < 1.5). + 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x5f, 0x37, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x31, 0x2e, 0x78, 0x79, 0x7a, // _750 = _471.xyz + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // ;. }. + 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, // {. f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x35, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // loat3 _751;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // if (_mtl + 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, // _u.u_params1.x < + 0x20, 0x32, 0x2e, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 2.5). + 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x36, 0x38, 0x36, 0x20, // float3 _686 + 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x34, 0x37, 0x31, 0x2e, 0x78, 0x79, // = pow((((_471.xy + 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x6c, 0x6f, // z * float3x3(flo + 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x31, 0x32, 0x35, 0x35, 0x36, 0x34, 0x30, 0x39, 0x38, // at3(0.4125564098 + 0x33, 0x35, 0x38, 0x31, 0x35, 0x34, 0x33, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, // 3581543, 0.35757 + 0x36, 0x31, 0x30, 0x32, 0x30, 0x31, 0x38, 0x33, 0x35, 0x36, 0x33, 0x32, 0x2c, 0x20, 0x30, 0x2e, // 610201835632, 0. + 0x31, 0x38, 0x30, 0x34, 0x33, 0x37, 0x35, 0x30, 0x35, 0x32, 0x34, 0x35, 0x32, 0x30, 0x38, 0x37, // 1804375052452087 + 0x34, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x32, 0x31, 0x32, // 4), float3(0.212 + 0x36, 0x37, 0x32, 0x39, 0x30, 0x34, 0x31, 0x33, 0x33, 0x37, 0x39, 0x36, 0x36, 0x39, 0x2c, 0x20, // 67290413379669, + 0x30, 0x2e, 0x37, 0x31, 0x35, 0x31, 0x35, 0x32, 0x32, 0x30, 0x34, 0x30, 0x33, 0x36, 0x37, 0x31, // 0.71515220403671 + 0x32, 0x36, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x37, 0x32, 0x31, 0x37, 0x35, 0x30, 0x30, 0x33, // 265, 0.072175003 + 0x35, 0x38, 0x38, 0x31, 0x39, 0x39, 0x36, 0x31, 0x35, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, // 588199615), floa + 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x31, 0x39, 0x33, 0x33, 0x33, 0x39, 0x30, 0x30, 0x38, 0x38, // t3(0.01933390088 + 0x33, 0x37, 0x39, 0x33, 0x38, 0x33, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, // 3793831, 0.11919 + 0x31, 0x39, 0x39, 0x36, 0x37, 0x35, 0x33, 0x32, 0x31, 0x35, 0x37, 0x39, 0x2c, 0x20, 0x30, 0x2e, // 199675321579, 0. + 0x39, 0x35, 0x30, 0x33, 0x30, 0x34, 0x30, 0x39, 0x30, 0x39, 0x37, 0x36, 0x37, 0x31, 0x35, 0x30, // 9503040909767150 + 0x39, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, // 9))) * float3x3( + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x37, 0x31, 0x36, 0x36, 0x35, 0x31, 0x32, // float3(1.7166512 + 0x30, 0x31, 0x32, 0x34, 0x38, 0x31, 0x36, 0x38, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, // 012481689, -0.35 + 0x35, 0x36, 0x37, 0x30, 0x38, 0x30, 0x39, 0x37, 0x34, 0x35, 0x37, 0x38, 0x38, 0x35, 0x37, 0x2c, // 567080974578857, + 0x20, 0x2d, 0x30, 0x2e, 0x32, 0x35, 0x33, 0x33, 0x36, 0x36, 0x32, 0x39, 0x31, 0x35, 0x32, 0x32, // -0.253366291522 + 0x39, 0x37, 0x39, 0x37, 0x34, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x2d, // 97974), float3(- + 0x30, 0x2e, 0x36, 0x36, 0x36, 0x36, 0x38, 0x34, 0x33, 0x38, 0x39, 0x31, 0x31, 0x34, 0x33, 0x37, // 0.66668438911437 + 0x39, 0x38, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x36, 0x34, 0x38, 0x31, 0x31, 0x38, 0x34, // 988, 1.616481184 + 0x39, 0x35, 0x39, 0x34, 0x31, 0x31, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, // 9594116, 0.01576 + 0x38, 0x35, 0x30, 0x30, 0x30, 0x34, 0x34, 0x39, 0x34, 0x31, 0x39, 0x30, 0x32, 0x29, 0x2c, 0x20, // 8500044941902), + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x31, 0x37, 0x36, 0x33, 0x39, 0x38, // float3(0.0176398 + 0x39, 0x39, 0x36, 0x32, 0x36, 0x33, 0x37, 0x34, 0x32, 0x34, 0x35, 0x2c, 0x20, 0x2d, 0x30, 0x2e, // 99626374245, -0. + 0x30, 0x34, 0x32, 0x37, 0x37, 0x30, 0x36, 0x30, 0x31, 0x38, 0x30, 0x39, 0x30, 0x32, 0x34, 0x38, // 0427706018090248 + 0x31, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x30, 0x38, 0x37, 0x39, // 11, 0.9421030879 + 0x30, 0x32, 0x30, 0x36, 0x39, 0x30, 0x39, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, // 0206909))) * _mt + 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x79, 0x29, // l_u.u_params1.y) + 0x20, 0x2a, 0x20, 0x39, 0x2e, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x34, 0x37, 0x33, 0x37, // * 9.99999974737 + 0x38, 0x37, 0x35, 0x31, 0x36, 0x65, 0x2d, 0x30, 0x30, 0x35, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, // 87516e-005, floa + 0x74, 0x33, 0x28, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x37, 0x35, 0x37, 0x38, 0x31, // t3(0.15930175781 + 0x32, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 25));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, // _751 = pow + 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x38, 0x33, 0x35, 0x39, 0x33, // ((float3(0.83593 + 0x37, 0x35, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x36, 0x38, 0x36, 0x20, 0x2a, 0x20, 0x31, 0x38, // 75) + (_686 * 18 + 0x2e, 0x38, 0x35, 0x31, 0x35, 0x36, 0x32, 0x35, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x66, 0x6c, // .8515625)) / (fl + 0x6f, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x36, 0x38, // oat3(1.0) + (_68 + 0x36, 0x20, 0x2a, 0x20, 0x31, 0x38, 0x2e, 0x36, 0x38, 0x37, 0x35, 0x29, 0x29, 0x2c, 0x20, 0x66, // 6 * 18.6875)), f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, 0x29, // loat3(78.84375)) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, // ;. }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, // else + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // . {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, // _ + 0x37, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, // 751 = float3(0.0 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, // );. } + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x35, // . _75 + 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x35, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 0 = _751;. + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x34, 0x39, // }. _749 + 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, // = _750;. }. + 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, // out.bgfx_Frag + 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, // Data0 = float4(_ + 0x37, 0x34, 0x39, 0x2c, 0x20, 0x5f, 0x34, 0x37, 0x31, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 749, _471.w);. + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, // return out;.}. + 0x0a, 0x00, 0x00, 0x80, 0x00, // ..... }; extern const uint8_t* fs_texture_cube_pssl; extern const uint32_t fs_texture_cube_pssl_size; diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_cube.sc b/3rdparty/bgfx/tools/texturev/fs_texture_cube.sc index 091bffd5169..8bd4fddbea5 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_cube.sc +++ b/3rdparty/bgfx/tools/texturev/fs_texture_cube.sc @@ -1,8 +1,8 @@ $input v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" @@ -16,5 +16,8 @@ void main() dir = normalize(mul(u_mtx, vec4(dir, 0.0) ).xyz); vec4 color = textureCubeLod(s_texColor, dir, u_textureLod); - gl_FragColor = toEv(color * v_color0); + color.xyz = applyExposure(color.xyz); + color *= v_color0; + + gl_FragColor = toOutput(color, u_outputFormat, u_sdrWhiteNits); } diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_cube2.bin.h b/3rdparty/bgfx/tools/texturev/fs_texture_cube2.bin.h index 0c7a950ce43..961634a7e3d 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_cube2.bin.h +++ b/3rdparty/bgfx/tools/texturev/fs_texture_cube2.bin.h @@ -1,317 +1,1032 @@ -static const uint8_t fs_texture_cube2_glsl[523] = +static const uint8_t fs_texture_cube2_glsl[2335] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd8, 0x01, // texColor........ - 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ..varying vec4 v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // _color0;.varying - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec3 v_texcoord - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // 0;.uniform vec4 - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // u_params;.unifor - 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, // m samplerCube s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, // texColor;.void m - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // ain ().{. vec4 - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, // _color_1;. _col - 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, // or_1 = (textureC - 0x75, 0x62, 0x65, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // ubeLod (s_texCol - 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2c, // or, v_texcoord0, - 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2a, 0x20, 0x76, // u_params.x) * v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // _color0);. vec4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_2;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, // var_2.xyz = pow - 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, // (abs((. mix ( - 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // pow (abs(_color_ - 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, // 1.xyz), vec3(2.2 - 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, // , 2.2, 2.2)), _c - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, // olor_1.xyz, u_pa - 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, // rams.z). * . - 0x20, 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, // exp2(u_params. - 0x77, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, // w). )), vec3(0. - 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, // 4545454, 0.45454 - 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, // 54, 0.4545454)); - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_2.w = - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // _color_1.w;. gl - 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // _FragColor = tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // var_2;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x02, 0x01, 0x00, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x08, 0x00, 0x00, 0x76, // r..............v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, // arying vec4 v_co + 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, // lor0;.varying ve + 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // c3 v_texcoord0;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, // uniform vec4 u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // arams0;.uniform + 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, // vec4 u_params1;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, // uniform samplerC + 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, // ube s_texColor;. + 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, // void main ().{. + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 color_1;. + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, // vec4 tmpvar_2;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, // tmpvar_2 = tex + 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, // tureCubeLod (s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // exColor, v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, // ord0, u_params0. + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, // x);. color_1.w + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, // = tmpvar_2.w;. + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x6d, // color_1.xyz = (m + 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, // ix (pow (. ab + 0x73, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x0a, // s(tmpvar_2.xyz). + 0x20, 0x20, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, // , vec3(2.2, 2. + 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 2, 2.2)), tmpvar + 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // _2.xyz, u_params + 0x30, 0x2e, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, // 0.z) * exp2(u_pa + 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, // rams0.w));. col + 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, // or_1 = (color_1 + 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, // * v_color0);. v + 0x65, 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x3b, 0x0a, // ec3 outColor_3;. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, // vec3 tmpvar_4; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, // . tmpvar_4.x = + 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, // 0.0;. tmpvar_4. + 0x79, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // y = 0.0;. tmpva + 0x72, 0x5f, 0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x6f, // r_4.z = 0.0;. o + 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // utColor_3 = tmpv + 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, // ar_4;. if ((u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, // arams1.x < 0.5)) + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // {. vec3 tmpv + 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ar_5;. tmpvar + 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, // _5 = clamp (colo + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, // r_1.xyz, 0.0, 1. + 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x72, 0x67, // 0);. vec3 _rg + 0x62, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x36, 0x20, // b_6;. _rgb_6 + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // = tmpvar_5;. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, // float tmpvar_7;. + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // if ((tmpvar_ + 0x35, 0x2e, 0x78, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, // 5.x <= 0.0031308 + 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // )) {. tmpva + 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, // r_7 = (12.92 * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // mpvar_5.x);. + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, // } else {. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, // mpvar_7 = ((1.05 + 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 5 * pow (tmpvar_ + 0x35, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, // 5.x, 0.4166667)) + 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, // - 0.055);. } + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x36, 0x2e, 0x78, 0x20, 0x3d, // ;. _rgb_6.x = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // tmpvar_7;. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, // loat tmpvar_8;. + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, // if ((tmpvar_5 + 0x2e, 0x79, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, // .y <= 0.0031308) + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ) {. tmpvar + 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, // _8 = (12.92 * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, // pvar_5.y);. } + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, // else {. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, // pvar_8 = ((1.055 + 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, // * pow (tmpvar_5 + 0x2e, 0x79, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, // .y, 0.4166667)) + 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, // - 0.055);. }; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x36, 0x2e, 0x79, 0x20, 0x3d, 0x20, // . _rgb_6.y = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // tmpvar_8;. fl + 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, // oat tmpvar_9;. + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, // if ((tmpvar_5. + 0x7a, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, // z <= 0.0031308)) + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // {. tmpvar_ + 0x39, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // 9 = (12.92 * tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, // var_5.z);. } + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // else {. tmp + 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, // var_9 = ((1.055 + 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, // * pow (tmpvar_5. + 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, // z, 0.4166667)) - + 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, // 0.055);. };. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, // _rgb_6.z = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, // mpvar_9;. out + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x36, // Color_3 = _rgb_6 + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // ;. } else {. + 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, // if ((u_params1. + 0x78, 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // x < 1.5)) {. + 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x63, // outColor_3 = c + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // olor_1.xyz;. + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, // } else {. i + 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, // f ((u_params1.x + 0x3c, 0x20, 0x32, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // < 2.5)) {. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x30, // vec3 _color_10 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ;. _color + 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x37, // _10 = ((mat3(1.7 + 0x31, 0x36, 0x36, 0x35, 0x31, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, // 16651, -0.355670 + 0x38, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x32, 0x35, 0x33, 0x33, 0x36, 0x36, 0x33, 0x2c, 0x20, 0x2d, // 8, -0.2533663, - + 0x30, 0x2e, 0x36, 0x36, 0x36, 0x36, 0x38, 0x34, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x36, // 0.6666844, 1.616 + 0x34, 0x38, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x2c, 0x20, // 481, 0.0157685, + 0x30, 0x2e, 0x30, 0x31, 0x37, 0x36, 0x33, 0x39, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, // 0.0176399, -0.04 + 0x32, 0x37, 0x37, 0x30, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x31, // 27706, 0.9421031 + 0x29, 0x20, 0x2a, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x31, 0x32, 0x35, // ) * (mat3(0.4125 + 0x35, 0x36, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x2c, 0x20, // 564, 0.3575761, + 0x30, 0x2e, 0x31, 0x38, 0x30, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x31, 0x32, // 0.1804375, 0.212 + 0x36, 0x37, 0x32, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x35, 0x31, 0x35, 0x32, 0x32, 0x2c, // 6729, 0.7151522, + 0x20, 0x30, 0x2e, 0x30, 0x37, 0x32, 0x31, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x39, // 0.072175, 0.019 + 0x33, 0x33, 0x33, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x32, 0x2c, 0x20, // 3339, 0.119192, + 0x30, 0x2e, 0x39, 0x35, 0x30, 0x33, 0x30, 0x34, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6f, 0x6c, // 0.9503041) * col + 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, // or_1.xyz)) * u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // arams1.y);. + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // vec3 tmpvar_1 + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // 1;. tmpva + 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x5f, 0x63, 0x6f, // r_11 = pow ((_co + 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x31, 0x29, // lor_10 * 0.0001) + 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, // , vec3(0.1593018 + 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, // , 0.1593018, 0.1 + 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 593018));. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, // vec3 tmpvar_12 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ;. tmpvar + 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x28, 0x30, 0x2e, 0x38, // _12 = pow (((0.8 + 0x33, 0x35, 0x39, 0x33, 0x37, 0x35, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 359375 + . + 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, 0x38, 0x35, 0x31, 0x35, 0x36, 0x20, 0x2a, 0x20, // (18.85156 * + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // tmpvar_11). + 0x20, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, // ) / (vec3(1.0 + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x0a, 0x20, // , 1.0, 1.0) + . + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, 0x36, 0x38, 0x37, // (18.687 + 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x0a, 0x20, // 5 * tmpvar_11). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, // )), vec3( + 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, // 78.84375, 78.843 + 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, 0x29, 0x3b, 0x0a, // 75, 78.84375));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // _color_1 + 0x30, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, // 0 = tmpvar_12;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // outColor_ + 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, // 3 = tmpvar_12;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, // };. };. + 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // };. vec4 tmpva + 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_13;. tmpvar_1 + 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // 3.xyz = outColor + 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, // _3;. tmpvar_13. + 0x77, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, // w = color_1.w;. + 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // gl_FragColor = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tmpvar_13;.}... }; -static const uint8_t fs_texture_cube2_spv[1913] = +static const uint8_t fs_texture_cube2_essl[2484] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x54, 0x07, 0x00, // _params......T.. - 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x2d, 0x01, 0x00, // ...#.........-.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, // .....GLSL.std.45 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // 0............... - 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai - 0x6e, 0x00, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, // n............... - 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // ................ - 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // .main........... - 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, // .BgfxSamplerCube - 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, // .............m_s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // ampler.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, // .....m_texture.. - 0x00, 0x05, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....6...s_texCo - 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x38, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, // lor......8...s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, // exColorSampler.. - 0x00, 0x05, 0x00, 0x07, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....;...s_texCo - 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, // lorTexture...... - 0x00, 0x76, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, // .v...$Global.... - 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // .v.......u_param - 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s........x...... - 0x00, 0x05, 0x00, 0x05, 0x00, 0xab, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // .........v_color - 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, // 0............v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xba, 0x00, 0x00, // excoord0........ - 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, // .bgfx_FragData0. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...;..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...;...!...... - 0x00, 0x48, 0x00, 0x05, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...v.......#.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x76, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....G...v...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...x..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0xab, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x47, 0x00, 0x04, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .G.............. - 0x00, 0x47, 0x00, 0x04, 0x00, 0xba, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, // .........!...... - 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, // ................ - 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, // ..... .......... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, // ................ - 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. .. - 0x00, 0x35, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .5...........;.. - 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .5...6....... .. - 0x00, 0x37, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .7...........;.. - 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .7...8....... .. - 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .:...........;.. - 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // .:...;.......... - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .>... .......+.. - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, // .>...C.......... - 0x00, 0x47, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .G.......+...... - 0x00, 0x63, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .c......@+...... - 0x00, 0x6b, 0x00, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x1e, 0x00, 0x03, 0x00, 0x76, 0x00, 0x00, // .k.../..>....v.. - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... ...w...... - 0x00, 0x76, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, // .v...;...w...x.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // .........y... .. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, // .....+...y...z.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... ...{...... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, // .....+.......... - 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, // ....@+...y...... - 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, // .....+...y...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ..... .......... - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, // .....;.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xae, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ..... .......... - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, // .....;.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ..... .......... - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, // .....;.......... - 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, // .....,.......+.. - 0x00, 0x63, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, // .c...c...c...,.. - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, // .....,...k...k.. - 0x00, 0x6b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .k...6.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, // ................ - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, // .=.......9...8.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, // .=.......<...;.. - 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, // .P.......=...9.. - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, // .<...>...6...=.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, // .=.............. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, // .=.............. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, // .=...........6.. - 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0xd6, 0x00, 0x00, // .Q.......'...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, // .....Q.......(.. - 0x00, 0xd6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, // .........A...{.. - 0x00, 0xd8, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, // .....x...C...... - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, // .=.............. - 0x00, 0x56, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, // .V...G.......(.. - 0x00, 0x27, 0x01, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, // .'...X.......... - 0x00, 0xea, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, // ................ - 0x00, 0x85, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, // ................ - 0x00, 0xac, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, // .....O.......... - 0x00, 0xdd, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, // ................ - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, // ................ - 0x00, 0x0d, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, // .....+...A...{.. - 0x00, 0xf8, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, // .....x...C...z.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, // .=.............. - 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, // .P.............. - 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, // .........O...... - 0x00, 0xfc, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, // ................ - 0x00, 0x19, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, // ................ - 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, // .........A...{.. - 0x00, 0xff, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, // .....x...C...... - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, // .=.............. - 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x1a, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, // ................ - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, // ................ - 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, // ................ - 0x00, 0x1f, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, // ................ - 0x00, 0x2c, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, // .,...Q.......... - 0x00, 0xdd, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // .........Q...... - 0x00, 0x06, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, // .Q.............. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, // .....P.......... - 0x00, 0x06, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, // ................ - 0x00, 0x3e, 0x00, 0x03, 0x00, 0xba, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, // .>.............. - 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // .8....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x02, 0x01, 0x00, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x09, 0x00, 0x00, 0x76, // r..........d...v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec + 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ing highp vec3 v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, // orm highp vec4 u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // _params0;.unifor + 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, // m highp vec4 u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // arams1;.uniform + 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, // lowp samplerCube + 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, // s_texColor;.voi + 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, // d main ().{. lo + 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x3b, // wp vec4 color_1; + 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // . lowp vec4 tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_2;. tmpvar_ + 0x32, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x4c, // 2 = textureCubeL + 0x6f, 0x64, 0x20, 0x20, 0x20, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // od (s_texColo + 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2c, 0x20, // r, v_texcoord0, + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, // u_params0.x);. + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // color_1.w = tmpv + 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // ar_2.w;. color_ + 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, // 1.xyz = (mix (po + 0x77, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, 0x28, 0x74, 0x6d, 0x70, 0x76, // w (. abs(tmpv + 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x76, 0x65, // ar_2.xyz). , ve + 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, // c3(2.2, 2.2, 2.2 + 0x29, 0x29, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, // )), tmpvar_2.xyz + 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x7a, 0x29, 0x20, 0x2a, // , u_params0.z) * + 0x20, 0x65, 0x78, 0x70, 0x32, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, // exp2(u_params0. + 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x3d, // w));. color_1 = + 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, // (color_1 * v_co + 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, // lor0);. mediump + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, // vec4 tmpvar_3;. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x43, // lowp vec3 outC + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, // olor_4;. lowp v + 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, // ec3 tmpvar_5;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, // tmpvar_5.x = 0.0 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2e, 0x79, 0x20, 0x3d, // ;. tmpvar_5.y = + 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, // 0.0;. tmpvar_5 + 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, // .z = 0.0;. outC + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // olor_4 = tmpvar_ + 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // 5;. if ((u_para + 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, // ms1.x < 0.5)) {. + 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, // lowp vec3 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // pvar_6;. tmpv + 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x63, 0x6f, // ar_6 = clamp (co + 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, // lor_1.xyz, 0.0, + 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, // 1.0);. lowp v + 0x65, 0x63, 0x33, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // ec3 _rgb_7;. + 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // _rgb_7 = tmpvar_ + 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, // 6;. lowp floa + 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // t tmpvar_8;. + 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x20, // if ((tmpvar_6.x + 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, // <= 0.0031308)) { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, // . tmpvar_8 + 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // = (12.92 * tmpva + 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, // r_6.x);. } el + 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // se {. tmpva + 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, // r_8 = ((1.055 * + 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x2c, // pow (tmpvar_6.x, + 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, // 0.4166667)) - 0 + 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // .055);. };. + 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // _rgb_7.x = tmp + 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, // var_8;. lowp + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, // float tmpvar_9;. + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // if ((tmpvar_ + 0x36, 0x2e, 0x79, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, // 6.y <= 0.0031308 + 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // )) {. tmpva + 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, // r_9 = (12.92 * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // mpvar_6.y);. + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, // } else {. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, // mpvar_9 = ((1.05 + 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 5 * pow (tmpvar_ + 0x36, 0x2e, 0x79, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, // 6.y, 0.4166667)) + 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, // - 0.055);. } + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x37, 0x2e, 0x79, 0x20, 0x3d, // ;. _rgb_7.y = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, // tmpvar_9;. l + 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // owp float tmpvar + 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, // _10;. if ((tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, // pvar_6.z <= 0.00 + 0x33, 0x31, 0x33, 0x30, 0x38, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 31308)) {. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x32, 0x2e, // tmpvar_10 = (12. + 0x39, 0x32, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, 0x29, // 92 * tmpvar_6.z) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, // ;. } else {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, // tmpvar_10 = + 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // ((1.055 * pow ( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, // tmpvar_6.z, 0.41 + 0x36, 0x36, 0x36, 0x36, 0x37, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x35, 0x29, // 66667)) - 0.055) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x72, 0x67, // ;. };. _rg + 0x62, 0x5f, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // b_7.z = tmpvar_1 + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // 0;. outColor_ + 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x72, 0x67, 0x62, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, // 4 = _rgb_7;. } + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, // else {. if (( + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x31, 0x2e, // u_params1.x < 1. + 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x43, // 5)) {. outC + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // olor_4 = color_1 + 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, // .xyz;. } else + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, // {. if ((u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x2e, 0x35, 0x29, // params1.x < 2.5) + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // ) {. lowp + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x31, 0x3b, // vec3 _color_11; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // . _color_ + 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x31, 0x2e, 0x37, 0x31, // 11 = ((mat3(1.71 + 0x36, 0x36, 0x35, 0x31, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, 0x38, // 6651, -0.3556708 + 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x32, 0x35, 0x33, 0x33, 0x36, 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x30, // , -0.2533663, -0 + 0x2e, 0x36, 0x36, 0x36, 0x36, 0x38, 0x34, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x36, 0x34, // .6666844, 1.6164 + 0x38, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x2c, 0x20, 0x30, // 81, 0.0157685, 0 + 0x2e, 0x30, 0x31, 0x37, 0x36, 0x33, 0x39, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, // .0176399, -0.042 + 0x37, 0x37, 0x30, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x31, 0x29, // 7706, 0.9421031) + 0x20, 0x2a, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x31, 0x32, 0x35, 0x35, // * (mat3(0.41255 + 0x36, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x2c, 0x20, 0x30, // 64, 0.3575761, 0 + 0x2e, 0x31, 0x38, 0x30, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x31, 0x32, 0x36, // .1804375, 0.2126 + 0x37, 0x32, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x35, 0x31, 0x35, 0x32, 0x32, 0x2c, 0x20, // 729, 0.7151522, + 0x30, 0x2e, 0x30, 0x37, 0x32, 0x31, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x39, 0x33, // 0.072175, 0.0193 + 0x33, 0x33, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x32, 0x2c, 0x20, 0x30, // 339, 0.119192, 0 + 0x2e, 0x39, 0x35, 0x30, 0x33, 0x30, 0x34, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // .9503041) * colo + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, // r_1.xyz)) * u_pa + 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // rams1.y);. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // lowp vec3 tmpv + 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, // ar_12;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // mpvar_12 = pow ( + 0x28, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x30, // (_color_11 * 0.0 + 0x30, 0x30, 0x31, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x31, 0x35, 0x39, // 001), vec3(0.159 + 0x33, 0x30, 0x31, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x2c, // 3018, 0.1593018, + 0x20, 0x30, 0x2e, 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x38, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 0.1593018));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // lowp vec3 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // tmpvar_13;. + 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x70, // tmpvar_13 = p + 0x6f, 0x77, 0x20, 0x28, 0x28, 0x28, 0x30, 0x2e, 0x38, 0x33, 0x35, 0x39, 0x33, 0x37, 0x35, 0x20, // ow (((0.8359375 + 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x38, // + . (18 + 0x2e, 0x38, 0x35, 0x31, 0x35, 0x36, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // .85156 * tmpvar_ + 0x31, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, // 12). ) / + 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, // (vec3(1.0, 1.0, + 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 1.0) + . + 0x20, 0x20, 0x28, 0x31, 0x38, 0x2e, 0x36, 0x38, 0x37, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // (18.6875 * tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // var_12). + 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, // )), vec3(78.8437 + 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x2c, 0x20, 0x37, 0x38, 0x2e, // 5, 78.84375, 78. + 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 84375));. + 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // _color_11 = tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // var_13;. + 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // outColor_4 = tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, // var_13;. }; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // . };. };. l + 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // owp vec4 tmpvar_ + 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, // 14;. tmpvar_14. + 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x34, // xyz = outColor_4 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x20, // ;. tmpvar_14.w + 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x74, // = color_1.w;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // mpvar_3 = tmpvar + 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // _14;. gl_FragCo + 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, // lor = tmpvar_3;. + 0x7d, 0x0a, 0x0a, 0x00, // }... }; -static const uint8_t fs_texture_cube2_dx9[611] = +static const uint8_t fs_texture_cube2_spv[4383] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x08, // _texColor0...... - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x30, 0x02, // u_params......0. - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........,.CTAB.. - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, // ................ - 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, // ......|...D..... - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, // ......P.......`. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........l..... - 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, // ..s_texColor.... - 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, // params.......... - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 - 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H - 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi - 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, // ler 10.1..Q..... - 0x0f, 0xa0, 0xcd, 0xcc, 0x0c, 0x40, 0x2f, 0xba, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....@/..>...... - 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, // ................ - 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x07, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, // ................ - 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, 0x00, // .............._. - 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, // ................ - 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x0f, 0x00, // ................ - 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, // ................ - 0x02, 0x80, 0x01, 0x00, 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, // ....U........... - 0xaa, 0x8b, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x08, 0x80, 0x01, 0x00, 0xff, 0x80, 0x05, 0x00, // ................ - 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0xa0, 0x0e, 0x00, // ................ - 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, // ................ - 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, // ....U........... - 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, // ................ - 0xe4, 0x90, 0x02, 0x00, 0xe4, 0x81, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, // ................ - 0xaa, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x08, 0x80, 0x00, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, // ................ - 0xff, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ - 0x00, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x8b, 0x0f, 0x00, // ............U... - 0x00, 0x02, 0x01, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x55, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, // ........U....... - 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, // ................ - 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0xff, 0xff, // U............... - 0x00, 0x00, 0x00, // ... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0xfd, 0x7f, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x12, 0x00, 0x10, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1a, 0x00, 0xcc, 0x10, 0x00, 0x00, 0x03, // r0.............. + 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xc5, 0x02, 0x00, 0x00, 0x00, // .#.............. + 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, // ...GLSL.std.450. + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. + 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x76, // ...b...e...i...v + 0x01, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x4b, // ...main........K + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // ...s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x73, // pler.......N...s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // _texColorTexture + 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, // ...........Unifo + 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x80, // rmBlock......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // .......u_params0 + 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, // ...............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x82, // _params1........ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x62, 0x01, 0x00, 0x00, 0x67, // ...........b...g + 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, // l_FragCoord..... + 0x00, 0x05, 0x00, 0x65, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, // ...e...v_color0. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x69, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, // .......i...v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x76, 0x01, 0x00, 0x00, 0x62, // coord0.....v...b + 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, // gfx_FragData0..G + 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...K...".......G + 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x47, // ...K...!.......G + 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...N...".......G + 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, // ...N...!.......H + 0x00, 0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, // ...........#.... + 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, // ...H...........# + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, // .......G........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G.......".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, // ...G.......!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x62, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, // ...G...b........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x65, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...e........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x69, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, // ...G...i........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x76, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...v........ + 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, // ...........!.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, // ................ + 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, // ....... ........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, // ...J...........; + 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ...J...K....... + 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, // ...M...........; + 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, // ...M...N........ + 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...Q... .......+ + 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...Q...R.......+ + 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, // ...Q...V........ + 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...Z.......+.... + 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x1e, 0x00, 0x04, 0x00, 0x80, // ...v......@..... + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x81, // ........... .... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x81, // ...........;.... + 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x83, // ................ + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x83, // ... .......+.... + 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x85, // ........... .... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x83, // ..........@+.... + 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x1c, 0x2e, 0x4d, 0x3b, 0x14, 0x00, 0x02, 0x00, 0x99, // .........M;..... + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x52, // ...+...........R + 0xb8, 0x4e, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x3d, // .NA+...........= + 0x0a, 0x87, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x55, // ..?+...........U + 0x55, 0xd5, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xae, // U.>+............ + 0x47, 0x61, 0x3d, 0x2b, 0x00, 0x04, 0x00, 0x83, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, // Ga=+............ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x83, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x01, // ...+............ + 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x98, // ...+............ + 0x3a, 0xd3, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x37, // :.>+...........7 + 0x14, 0xb7, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x9c, // ..>+............ + 0xc4, 0x38, 0x3e, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc2, // .8>,............ + 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xed, 0xc6, 0x59, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, // .........Y>+.... + 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x37, 0x14, 0x37, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, // .......7.7?+.... + 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x7d, 0xd0, 0x93, 0x3d, 0x2c, 0x00, 0x06, 0x00, 0x0b, // .......}..=,.... + 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc8, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x21, // ...+...........! + 0x62, 0x9e, 0x3c, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xef, // b.<+............ + 0x1a, 0xf4, 0x3d, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x21, // ..=+...........! + 0x47, 0x73, 0x3f, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0xca, // Gs?,............ + 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xbf, // ...........,.... + 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xcd, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x3a, // ...+...........: + 0xbb, 0xdb, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x7c, // ..?+...........| + 0x1a, 0xb6, 0xbe, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x3a, // ...+...........: + 0xb9, 0x81, 0xbe, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xd5, // ...,............ + 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd4, 0xab, 0x2a, 0xbf, 0x2b, 0x00, 0x04, 0x00, 0x07, // .........*.+.... + 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xdb, 0xe8, 0xce, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, // ..........?+.... + 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xf1, 0x2c, 0x81, 0x3c, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ........,.<,.... + 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xdb, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x8d, // ...+............ + 0x81, 0x90, 0x3c, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x3a, // ..<+...........: + 0x30, 0x2f, 0xbd, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xab, // 0/.+............ + 0x2d, 0x71, 0x3f, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xdd, // -q?,............ + 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xbf, // ...........,.... + 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xe0, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x00, // ...+............ + 0x20, 0x23, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x00, // #>+............ + 0xb0, 0x9d, 0x42, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x00, // ..B+............ + 0x00, 0x56, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x00, // .V?+............ + 0xd0, 0x96, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, // ..A+............ + 0x80, 0x95, 0x41, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x17, // ..A+............ + 0xb7, 0xd1, 0x38, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, // ..8+............ + 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x00, // ..?+............ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x00, // ...+............ + 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, // ..?+....... .... + 0x00, 0xc0, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, // ..?+.......(.... + 0x00, 0x20, 0x40, 0x20, 0x00, 0x04, 0x00, 0x61, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, // . @ ...a........ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x61, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x01, // ...;...a...b.... + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x61, 0x01, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x01, // ...;...a...e.... + 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x68, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, // ... ...h........ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x68, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x01, // ...;...h...i.... + 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x75, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, // ... ...u........ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x75, 0x01, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00, 0x03, // ...;...u...v.... + 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb3, 0x02, 0x00, 0x00, 0x76, // ...,...........v + 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ...v...v...,.... + 0x00, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x0f, // ................ + 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb5, 0x02, 0x00, 0x00, 0xe8, // ...,............ + 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ...........,.... + 0x00, 0x00, 0x00, 0xb6, 0x02, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, // ................ + 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb7, 0x02, 0x00, 0x00, 0xff, // ...,............ + 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, // ...........,.... + 0x00, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xea, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc4, 0x02, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, // ...........=.... + 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, // ...L...K...=.... + 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, // ...O...N...=.... + 0x00, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, // ...f...e...=.... + 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x85, // ...j...i...A.... + 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xac, // ...........V.... + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0xa0, // ...=............ + 0x01, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xbe, 0x01, 0x00, 0x00, 0x4f, // ...V...Z.......O + 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc1, // ...L...X........ + 0x01, 0x00, 0x00, 0xbe, 0x01, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa1, // .......j........ + 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0xc1, // ...O............ + 0x01, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xd9, // ................ + 0x01, 0x00, 0x00, 0xb3, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0xcb, // .......A........ + 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x3d, // .......V.......= + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcc, 0x01, 0x00, 0x00, 0xcb, 0x01, 0x00, 0x00, 0x50, // ...............P + 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xcd, 0x01, 0x00, 0x00, 0xcc, 0x01, 0x00, 0x00, 0xcc, // ................ + 0x01, 0x00, 0x00, 0xcc, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe7, // ................ + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0xa4, // ................ + 0x01, 0x00, 0x00, 0xcd, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0xd1, // .......A........ + 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x3d, // .......V.......= + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x0c, // ................ + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd3, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0xe7, 0x01, 0x00, 0x00, 0xd3, 0x01, 0x00, 0x00, 0x4f, // ...............O + 0x00, 0x09, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, 0xd4, // ................ + 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, 0xa7, // ................ + 0x01, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0xac, // ...f...A........ + 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x3d, // .......R.......= + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0x41, // ...............A + 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x52, // ...............R + 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xaf, // .......=........ + 0x01, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0xf3, // ................ + 0x01, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x10, // ................ + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xf3, 0x01, 0x00, 0x00, 0xf4, // ................ + 0x01, 0x00, 0x00, 0xfb, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xfb, 0x01, 0x00, 0x00, 0xb8, // ................ + 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0xfd, 0x01, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x20, // ............... + 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, // ................ + 0x00, 0x04, 0x00, 0xfd, 0x01, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xf8, // ................ + 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x03, // ................ + 0x02, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x0e, // .......(........ + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x03, 0x02, 0x00, 0x00, 0x04, // ................ + 0x02, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x00, 0x4f, // ...............O + 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, 0xaa, // ................ + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, // ................ + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x6b, 0x02, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0xce, // .......k........ + 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x71, 0x02, 0x00, 0x00, 0x6b, // ...........q...k + 0x02, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, // ................ + 0x02, 0x00, 0x00, 0x71, 0x02, 0x00, 0x00, 0xaf, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, // ...q............ + 0x00, 0x00, 0x00, 0x7e, 0x02, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x0c, // ...~............ + 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x00, 0x00, 0x00, 0x7e, 0x02, 0x00, 0x00, 0xb5, 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, // ...~............ + 0x00, 0x00, 0x00, 0x85, 0x02, 0x00, 0x00, 0x81, 0x02, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x81, // ................ + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x87, 0x02, 0x00, 0x00, 0xb6, 0x02, 0x00, 0x00, 0x85, // ................ + 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, 0x81, // ................ + 0x02, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x8c, // ................ + 0x02, 0x00, 0x00, 0xb7, 0x02, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0x8d, 0x02, 0x00, 0x00, 0x87, 0x02, 0x00, 0x00, 0x8c, 0x02, 0x00, 0x00, 0x0c, // ................ + 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x00, 0x00, 0x00, 0x8d, 0x02, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x0e, // ................ + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x0e, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0xc1, 0x02, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x90, // ................ + 0x02, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x0f, 0x02, 0x00, 0x00, 0xf8, // ................ + 0x00, 0x02, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, // .......O........ + 0x02, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x0f, 0x02, 0x00, 0x00, 0xf8, // ................ + 0x00, 0x02, 0x00, 0x0f, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc0, // ................ + 0x02, 0x00, 0x00, 0xc1, 0x02, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xfe, // ................ + 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xf4, // ................ + 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xf6, 0x01, 0x00, 0x00, 0xaa, // ...O............ + 0x01, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xf6, 0x01, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x00, 0xb7, // ...+............ + 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x24, 0x02, 0x00, 0x00, 0xf9, // ...Q.......$.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, // ...........@.... + 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0xac, 0x00, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0xf8, // ...........4.... + 0x00, 0x02, 0x00, 0x34, 0x02, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x36, // ...4...........6 + 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x3f, // ...$...........? + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x36, 0x02, 0x00, 0x00, 0x37, // ...........6...7 + 0x02, 0x00, 0x00, 0x3a, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x02, 0x00, 0x00, 0x0c, // ...:.......:.... + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // .......<........ + 0x00, 0x00, 0x00, 0x24, 0x02, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, // ...$............ + 0x00, 0x00, 0x00, 0x3d, 0x02, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x83, // ...=.......<.... + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x00, 0x00, 0x3d, 0x02, 0x00, 0x00, 0xa7, // .......>...=.... + 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x40, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x37, // .......@.......7 + 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x9d, // ...........9.... + 0x00, 0x00, 0x00, 0x24, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x40, 0x02, 0x00, 0x00, 0xf8, // ...$.......@.... + 0x00, 0x02, 0x00, 0x3f, 0x02, 0x00, 0x00, 0xff, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x40, // ...?...........@ + 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb9, 0x02, 0x00, 0x00, 0x3e, // ...............> + 0x02, 0x00, 0x00, 0x3a, 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x52, // ...:...9...7...R + 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xaa, 0x02, 0x00, 0x00, 0xb9, 0x02, 0x00, 0x00, 0xc4, // ................ + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x28, // .......Q.......( + 0x02, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x52, // ...............R + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0xac, 0x00, 0x00, 0x00, 0x46, // ...............F + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x99, // .......F........ + 0x00, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0xf7, // ...H...(........ + 0x00, 0x03, 0x00, 0x51, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x48, // ...Q...........H + 0x02, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x4c, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4c, // ...I...L.......L + 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x00, 0x01, // ...........N.... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x85, // .......(........ + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4f, 0x02, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x4e, // .......O.......N + 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x4f, // ...........P...O + 0x02, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x52, 0x02, 0x00, 0x00, 0xf8, // ...........R.... + 0x00, 0x02, 0x00, 0x49, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4b, // ...I...........K + 0x02, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x52, // .......(.......R + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x51, 0x02, 0x00, 0x00, 0xff, 0x00, 0x01, 0x00, 0xf8, // .......Q........ + 0x00, 0x02, 0x00, 0x52, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbb, // ...R............ + 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x4c, 0x02, 0x00, 0x00, 0x4b, 0x02, 0x00, 0x00, 0x49, // ...P...L...K...I + 0x02, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xad, 0x02, 0x00, 0x00, 0xbb, // ...R............ + 0x02, 0x00, 0x00, 0xaa, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf7, // ...,............ + 0x00, 0x03, 0x00, 0x64, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0xac, // ...d............ + 0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x58, 0x02, 0x00, 0x00, 0xbc, // ...X.......X.... + 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x5a, 0x02, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0x98, // .......Z...,.... + 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x63, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, // .......c........ + 0x00, 0x04, 0x00, 0x5a, 0x02, 0x00, 0x00, 0x5b, 0x02, 0x00, 0x00, 0x5e, 0x02, 0x00, 0x00, 0xf8, // ...Z...[...^.... + 0x00, 0x02, 0x00, 0x5e, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x60, // ...^...........` + 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0xa4, // ...........,.... + 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x61, 0x02, 0x00, 0x00, 0xa2, // ...........a.... + 0x00, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x62, // ...`...........b + 0x02, 0x00, 0x00, 0x61, 0x02, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x64, // ...a...........d + 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5b, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, // .......[........ + 0x00, 0x00, 0x00, 0x5d, 0x02, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0xf9, // ...].......,.... + 0x00, 0x02, 0x00, 0x64, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x63, 0x02, 0x00, 0x00, 0xff, // ...d.......c.... + 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x64, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x07, // .......d........ + 0x00, 0x00, 0x00, 0xbd, 0x02, 0x00, 0x00, 0x62, 0x02, 0x00, 0x00, 0x5e, 0x02, 0x00, 0x00, 0x5d, // .......b...^...] + 0x02, 0x00, 0x00, 0x5b, 0x02, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb0, // ...[...R........ + 0x02, 0x00, 0x00, 0xbd, 0x02, 0x00, 0x00, 0xad, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf9, // ................ + 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0xf5, // ................ + 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xbf, 0x02, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x00, 0x0f, // ................ + 0x02, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x64, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // .......d...Q.... + 0x00, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0xbf, 0x02, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x15, 0x02, 0x00, 0x00, 0xbf, // ...Q............ + 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x16, // .......Q........ + 0x02, 0x00, 0x00, 0xbf, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, // ...........P.... + 0x00, 0x00, 0x00, 0x17, 0x02, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x15, 0x02, 0x00, 0x00, 0x16, // ................ + 0x02, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x76, 0x01, 0x00, 0x00, 0x17, // .......>...v.... + 0x02, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .......8..... . }; -static const uint8_t fs_texture_cube2_dx11[770] = +static const uint8_t fs_texture_cube2_dx9[1448] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xcc, 0x02, // texColor0....... - 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x32, 0x0d, 0xe1, 0x0b, 0xad, 0x35, 0x1f, 0xb7, 0x80, 0x3e, // ..DXBC2....5...> - 0xa3, 0x13, 0x8a, 0x22, 0xfa, 0x7a, 0x01, 0x00, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x03, 0x00, // ...".z.......... - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS - 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, // ..............b. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO - 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD - 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR - 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xf0, 0x01, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@. - 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..|...Y...F. ... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ......Z....`.... - 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, // ..X0...p......UU - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, // ..b...........b. - 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, // ..r.......e.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, // ......h.......H. - 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, // ..........F..... - 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ..F~.......`.... - 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, // .... .........8. - 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, // ..........F..... - 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, // ..F......./...r. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, // ......F......... - 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, // ..6.... ......:. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, // ......8...r..... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xcd, 0xcc, // ..F........@.... - 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, // .@...@...@...... - 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, // ..r.......F..... - 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..2...r.......F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, // ......F.......F. - 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, // ..A.......2...r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ ....... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, // ..F.......F..... - 0x00, 0x00, 0x19, 0x00, 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, // ..............:. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, // .........8...r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..............F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ....../...r..... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, // ..F...........8. - 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..r.......F..... - 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, // ...@../..>/..>/. - 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, // .>........r .... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, // ..F.......>..... - 0x10, 0x00, // .. + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, // ....u_params0... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // ........u_params + 0x31, 0x12, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x05, 0x00, 0x00, 0x00, // 1..........X.... + 0x03, 0xff, 0xff, 0xfe, 0xff, 0x34, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0xa1, // .....4.CTAB..... + 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ + 0x91, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // .......X........ + 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, // ...d.......t.... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, // ...s_texColor... + 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, // ...............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, // _params0........ + 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, // ...........u_par + 0x61, 0x6d, 0x73, 0x31, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, // ams1.ps_3_0.Micr + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, // osoft (R) HLSL S + 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, // hader Compiler 1 + 0x30, 0x2e, 0x31, 0x00, 0xab, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, // 0.1....Q........ + 0xd0, 0x96, 0x41, 0x00, 0x00, 0x56, 0x3f, 0x00, 0x80, 0x95, 0x41, 0x00, 0x00, 0x80, 0x3f, 0x51, // ..A..V?...A...?Q + 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x1c, // ..........@...?. + 0x2e, 0x4d, 0x3b, 0x52, 0xb8, 0x4e, 0x41, 0x51, 0x00, 0x00, 0x05, 0x04, 0x00, 0x0f, 0xa0, 0x55, // .M;R.NAQ.......U + 0x55, 0xd5, 0x3e, 0x3d, 0x0a, 0x87, 0x3f, 0xae, 0x47, 0x61, 0xbd, 0x17, 0xb7, 0xd1, 0x38, 0x51, // U.>=..?.Ga....8Q + 0x00, 0x00, 0x05, 0x05, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0xc0, 0xbf, 0x00, 0x00, 0x20, 0xc0, 0x00, // ............. .. + 0x20, 0x23, 0x3e, 0x00, 0xb0, 0x9d, 0x42, 0x51, 0x00, 0x00, 0x05, 0x06, 0x00, 0x0f, 0xa0, 0x98, // #>...BQ........ + 0x3a, 0xd3, 0x3e, 0x37, 0x14, 0xb7, 0x3e, 0x9c, 0xc4, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x51, // :.>7..>..8>....Q + 0x00, 0x00, 0x05, 0x07, 0x00, 0x0f, 0xa0, 0xed, 0xc6, 0x59, 0x3e, 0x37, 0x14, 0x37, 0x3f, 0x7d, // .........Y>7.7?} + 0xd0, 0x93, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x08, 0x00, 0x0f, 0xa0, 0x21, // ..=....Q.......! + 0x62, 0x9e, 0x3c, 0xef, 0x1a, 0xf4, 0x3d, 0x21, 0x47, 0x73, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x51, // b.<...=!Gs?....Q + 0x00, 0x00, 0x05, 0x09, 0x00, 0x0f, 0xa0, 0x3a, 0xbb, 0xdb, 0x3f, 0x7c, 0x1a, 0xb6, 0xbe, 0x3a, // .......:..?|...: + 0xb9, 0x81, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x0a, 0x00, 0x0f, 0xa0, 0xd4, // .......Q........ + 0xab, 0x2a, 0xbf, 0xdb, 0xe8, 0xce, 0x3f, 0xf1, 0x2c, 0x81, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x51, // .*....?.,.<....Q + 0x00, 0x00, 0x05, 0x0b, 0x00, 0x0f, 0xa0, 0x8d, 0x81, 0x90, 0x3c, 0x3a, 0x30, 0x2f, 0xbd, 0xab, // ..........<:0/.. + 0x2d, 0x71, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // -q?............. + 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x07, 0x90, 0x1f, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x80, 0x01, // ................ + 0x00, 0xe4, 0x90, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, // ..._............ + 0x08, 0xe4, 0xa0, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x8b, 0x0f, // ................ + 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x8b, 0x0f, 0x00, 0x00, 0x02, 0x01, // .........U...... + 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, // ................ + 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0e, // .............U.. + 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x12, 0x00, 0x00, 0x04, 0x01, // ................ + 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x0e, // ................ + 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x07, 0x80, 0x01, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x01, // ................ + 0x00, 0x02, 0x80, 0x03, 0x00, 0x55, 0xa0, 0x29, 0x00, 0x04, 0x02, 0x01, 0x00, 0x00, 0xa0, 0x01, // .....U.)........ + 0x00, 0x55, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x17, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x20, // .U............. + 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x04, 0x00, 0x00, 0xa0, 0x04, // ................ + 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x04, 0x00, 0x55, 0xa0, 0x04, // .............U.. + 0x00, 0xaa, 0xa0, 0x20, 0x00, 0x00, 0x03, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, // ... ............ + 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x04, // .............U.. + 0x00, 0x55, 0xa0, 0x04, 0x00, 0xaa, 0xa0, 0x20, 0x00, 0x00, 0x03, 0x01, 0x00, 0x04, 0x80, 0x00, // .U..... ........ + 0x00, 0x55, 0x80, 0x04, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x80, 0x01, // .U.............. + 0x00, 0xaa, 0x80, 0x04, 0x00, 0x55, 0xa0, 0x04, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x02, // .....U.......... + 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x81, 0x03, 0x00, 0xaa, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x03, // ................ + 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xff, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, // ...........X.... + 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xc9, 0x80, 0x2a, // ...............* + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x06, 0x00, 0xe4, 0xa0, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x02, 0x80, 0x07, 0x00, 0xe4, 0xa0, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x04, 0x80, 0x08, 0x00, 0xe4, 0xa0, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x04, 0x80, 0x0b, 0x00, 0xe4, 0xa0, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x80, 0x09, 0x00, 0xe4, 0xa0, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x02, 0x80, 0x0a, 0x00, 0xe4, 0xa0, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x01, // ................ + 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, // .U.............. + 0x00, 0xff, 0xa0, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0f, // ................ + 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x02, // .........U...... + 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x02, // ................ + 0x00, 0xe4, 0x80, 0x05, 0x00, 0xaa, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x01, // ................ + 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x0e, // .............U.. + 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, // ................ + 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0xff, 0xa0, 0x06, // ................ + 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x02, 0x03, // ................ + 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x80, 0x06, 0x00, 0x00, 0x02, 0x03, 0x00, 0x04, 0x80, 0x01, // .....U.......... + 0x00, 0xaa, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x03, 0x80, 0x05, 0x00, 0xe4, 0xa0, 0x02, // ................ + 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0xa0, 0x04, // ................ + 0x00, 0x00, 0x04, 0x02, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x02, // ................ + 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x02, // .U.............. + 0x00, 0xe4, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x02, 0x00, 0x00, 0x80, 0x0f, // ................ + 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x02, 0x00, 0x55, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x03, // .........U...... + 0x00, 0x04, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x03, // ................ + 0x00, 0xe4, 0x80, 0x05, 0x00, 0xff, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x02, // ................ + 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x02, 0x00, 0x55, 0x80, 0x0e, // .............U.. + 0x00, 0x00, 0x02, 0x03, 0x00, 0x04, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x58, 0x00, 0x00, 0x04, 0x01, // ...........X.... + 0x00, 0x0e, 0x80, 0x01, 0x00, 0x55, 0x80, 0x06, 0x00, 0xff, 0xa0, 0x03, 0x00, 0x90, 0x80, 0x58, // .....U.........X + 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf9, 0x80, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x00, // ...+............ + 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ........ }; -static const uint8_t fs_texture_cube2_mtl[937] = +static const uint8_t fs_texture_cube2_dx11[1784] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x03, // FSH............. - 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, // ut {. float4 v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // color0;. float3 - 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, // v_texcoord0;.}; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, // haderOutput {. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // float4 gl_FragCo - 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, // lor;.};.struct x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, // latMtlShaderUnif - 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, // orm {. float4 u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, // _params;.};.frag - 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ment xlatMtlShad - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // erOutput xlatMtl - 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // Main (xlatMtlSha - 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, // derInput _mtl_i - 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, // [[stage_in]], co - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // nstant xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, // aderUniform& _mt - 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, // l_u [[buffer(0)] - 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, // ]. , texturec - 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // ube<float> s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, // Color [[texture( - 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, // 0)]], sampler _m - 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // tlsmp_s_texColor - 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, // [[sampler(0)]]) - 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // .{. xlatMtlShad - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, // erOutput _mtl_o; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // . float4 _color - 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // _1 = 0;. _color - 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // _1 = (s_texColor - 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, // .sample(_mtlsmp_ - 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, // s_texColor, (flo - 0x61, 0x74, 0x33, 0x29, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, // at3)(_mtl_i.v_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, // xcoord0), level( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, // _mtl_u.u_params. - 0x78, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, // x)) * _mtl_i.v_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // olor0);. float4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // tmpvar_2 = 0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_2.xyz = - 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, // pow (abs((. m - 0x69, 0x78, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x63, 0x6f, // ix (pow (abs(_co - 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, // lor_1.xyz), floa - 0x74, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, // t3(2.2, 2.2, 2.2 - 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, // )), _color_1.xyz - 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // , _mtl_u.u_param - 0x73, 0x2e, 0x7a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, // s.z). * . e - 0x78, 0x70, 0x32, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, // xp2(_mtl_u.u_par - 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, // ams.w). )), flo - 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, // at3(0.4545454, 0 - 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, // .4545454, 0.4545 - 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 454));. tmpvar_ - 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x2e, 0x77, // 2.w = _color_1.w - 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, // ;. _mtl_o.gl_Fr - 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // agColor = tmpvar - 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, // _2;. return _mt - 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // l_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x12, 0x00, 0x10, 0x00, // ...u_params1.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, // r0..........s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // xColor0......... + 0x90, 0x06, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xf6, 0xeb, 0xb4, 0x17, 0x2a, 0x57, 0x03, 0xc9, // ....DXBC....*W.. + 0xa5, 0x0c, 0x41, 0x19, 0xa4, 0x74, 0xfe, 0x03, 0x01, 0x00, 0x00, 0x00, 0x90, 0x06, 0x00, 0x00, // ..A..t.......... + 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, // ....,........... + 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNl........... + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // b............... + 0x02, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT + 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // ION.COLOR.TEXCOO + 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // RD..OSGN,....... + 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .... ........... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, // ............SV_T + 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xb4, 0x05, 0x00, 0x00, // ARGET...SHDR.... + 0x40, 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, // @...m...Y...F. . + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, // ........Z....`.. + 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....X0...p...... + 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // UU..b........... + 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // b...r.......e... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, // . ......h....... + 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, // H...........F... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, // ....F~.......`.. + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ......... + 0x2f, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, // /...r.......F... + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, // ........8...r... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....F........@.. + 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, // ...@...@...@.... + 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....r.......F... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ........r....... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, // F.......F...A... + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....2...r....... + 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // .. .........F... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x06, // ....F........... + 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ........:. ..... + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8...r....... + 0xf6, 0x0f, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........F....... + 0x38, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // 8...........F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x08, // ....F.......1... + 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // .......... ..... + 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x04, 0x03, // .....@.....?.... + 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x20, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, // ........6 ..r... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x0a, // ....F........... + 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x1c, 0x2e, 0x4d, 0x3b, // r........@....M; + 0x1c, 0x2e, 0x4d, 0x3b, 0x1c, 0x2e, 0x4d, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ..M;..M;....F... + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....8...r....... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x52, 0xb8, 0x4e, 0x41, // F........@..R.NA + 0x52, 0xb8, 0x4e, 0x41, 0x52, 0xb8, 0x4e, 0x41, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, // R.NAR.NA..../... + 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // r.......F....... + 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 8...r.......F... + 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x3e, 0x55, 0x55, 0xd5, 0x3e, // .....@..UU.>UU.> + 0x55, 0x55, 0xd5, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, // UU.>........r... + 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, // ....F.......2... + 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // r.......F....... + 0x02, 0x40, 0x00, 0x00, 0x3d, 0x0a, 0x87, 0x3f, 0x3d, 0x0a, 0x87, 0x3f, 0x3d, 0x0a, 0x87, 0x3f, // .@..=..?=..?=..? + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xae, 0x47, 0x61, 0xbd, 0xae, 0x47, 0x61, 0xbd, // .....@...Ga..Ga. + 0xae, 0x47, 0x61, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, // .Ga.....7...r... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....F.......F... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01, // ....F........... + 0x31, 0x00, 0x00, 0x0b, 0x32, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x80, 0x20, 0x00, // 1...2......... . + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, // .........@.....? + 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, // .. @............ + 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x98, 0x3a, 0xd3, 0x3e, // .........@...:.> + 0x37, 0x14, 0xb7, 0x3e, 0x9c, 0xc4, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 7..>..8>....F... + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ........"....... + 0x02, 0x40, 0x00, 0x00, 0xed, 0xc6, 0x59, 0x3e, 0x37, 0x14, 0x37, 0x3f, 0x7d, 0xd0, 0x93, 0x3d, // .@....Y>7.7?}..= + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, // ....F........... + 0x42, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x21, 0x62, 0x9e, 0x3c, // B........@..!b.< + 0xef, 0x1a, 0xf4, 0x3d, 0x21, 0x47, 0x73, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ...=!Gs?....F... + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x02, 0x40, 0x00, 0x00, 0x3a, 0xbb, 0xdb, 0x3f, 0x7c, 0x1a, 0xb6, 0xbe, 0x3a, 0xb9, 0x81, 0xbe, // .@..:..?|...:... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, // ....F........... + 0x22, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xd4, 0xab, 0x2a, 0xbf, // "........@....*. + 0xdb, 0xe8, 0xce, 0x3f, 0xf1, 0x2c, 0x81, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ...?.,.<....F... + 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // ........B....... + 0x02, 0x40, 0x00, 0x00, 0x8d, 0x81, 0x90, 0x3c, 0x3a, 0x30, 0x2f, 0xbd, 0xab, 0x2d, 0x71, 0x3f, // .@.....<:0/..-q? + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, // ....F.......8... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // r.......F....... + 0x56, 0x85, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, // V. .........8... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // r.......F....... + 0x02, 0x40, 0x00, 0x00, 0x17, 0xb7, 0xd1, 0x38, 0x17, 0xb7, 0xd1, 0x38, 0x17, 0xb7, 0xd1, 0x38, // .@.....8...8...8 + 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ..../...r....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, // F.......8...r... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ....F........@.. + 0x00, 0x20, 0x23, 0x3e, 0x00, 0x20, 0x23, 0x3e, 0x00, 0x20, 0x23, 0x3e, 0x00, 0x00, 0x00, 0x00, // . #>. #>. #>.... + 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....r.......F... + 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // ....2...r....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0xd0, 0x96, 0x41, // F........@.....A + 0x00, 0xd0, 0x96, 0x41, 0x00, 0xd0, 0x96, 0x41, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // ...A...A.....@.. + 0x00, 0x00, 0x56, 0x3f, 0x00, 0x00, 0x56, 0x3f, 0x00, 0x00, 0x56, 0x3f, 0x00, 0x00, 0x00, 0x00, // ..V?..V?..V?.... + 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 2...r.......F... + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x80, 0x95, 0x41, 0x00, 0x80, 0x95, 0x41, // .....@.....A...A + 0x00, 0x80, 0x95, 0x41, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // ...A.....@.....? + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x07, // ...?...?........ + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, // r.......F....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, // F......./...r... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, // ....F.......8... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // r.......F....... + 0x02, 0x40, 0x00, 0x00, 0x00, 0xb0, 0x9d, 0x42, 0x00, 0xb0, 0x9d, 0x42, 0x00, 0xb0, 0x9d, 0x42, // .@.....B...B...B + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ........r....... + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xe2, 0x00, 0x10, 0x00, // F............... + 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, // ....V........... + 0x02, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....7...r....... + 0x06, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x96, 0x07, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, // ............6... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // . ......F....... + 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, // >..... . +}; +static const uint8_t fs_texture_cube2_mtl[3728] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // ...s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, // pler...........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // _texColorTexture + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, // ...........u_par + 0x61, 0x6d, 0x73, 0x31, 0x12, 0x01, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, // ams1...........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x05, 0x0e, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // .......#include + 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, // <metal_stdlib>.# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, // include <simd/si + 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, // md.h>..using nam + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, // espace metal;..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // float4 u_par + 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // ams0;. float4 + 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // u_params1;.};.. + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, // constant float3 + 0x5f, 0x37, 0x30, 0x38, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, // _708 = {};..stru + 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, // ct xlatMtlMain_o + 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // ut.{. float4 + 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, // bgfx_FragData0 [ + 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, // [color(0)]];.};. + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // .struct xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ain_in.{. flo + 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, // at4 v_color0 [[u + 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // ser(locn0)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // float3 v_texco + 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, // ord0 [[user(locn + 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, // 1)]];.};..fragme + 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, // nt xlatMtlMain_o + 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, // ut xlatMtlMain(x + 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, // latMtlMain_in in + 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, // [[stage_in]], c + 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, // onstant _Global& + 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, // _mtl_u [[buffer + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, // (0)]], texturecu + 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // be<float> s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, // olor [[texture(0 + 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, 0x74, // )]], sampler s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, // exColorSampler [ + 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, // [sampler(0)]]).{ + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // . xlatMtlMain + 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, // _out out = {};. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x34, 0x39, 0x20, 0x3d, // float4 _449 = + 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, // s_texColor.samp + 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // le(s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // pler, in.v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // ord0, level(_mtl + 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x29, // _u.u_params0.x)) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, 0x32, // ;. float3 _42 + 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x34, 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, // 0 = _449.xyz;. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, 0x36, 0x38, 0x20, 0x3d, 0x20, // float3 _468 = + 0x6d, 0x69, 0x78, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x34, 0x32, 0x30, // mix(pow(abs(_420 + 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x30, 0x30, 0x30, // ), float3(2.2000 + 0x30, 0x30, 0x30, 0x34, 0x37, 0x36, 0x38, 0x33, 0x37, 0x31, 0x35, 0x38, 0x29, 0x29, 0x2c, 0x20, // 000476837158)), + 0x5f, 0x34, 0x32, 0x30, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x5f, 0x6d, 0x74, // _420, float3(_mt + 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x7a, 0x29, // l_u.u_params0.z) + 0x29, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x32, 0x2e, 0x30, 0x2c, 0x20, 0x5f, 0x6d, 0x74, // ) * pow(2.0, _mt + 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x77, 0x29, // l_u.u_params0.w) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x32, // ;. float4 _42 + 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x34, 0x36, 0x38, 0x2e, // 6 = float4(_468. + 0x78, 0x2c, 0x20, 0x5f, 0x34, 0x36, 0x38, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x34, 0x36, 0x38, 0x2e, // x, _468.y, _468. + 0x7a, 0x2c, 0x20, 0x5f, 0x34, 0x34, 0x39, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, // z, _449.w) * in. + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // v_color0;. fl + 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x30, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, // oat3 _703;. i + 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // f (_mtl_u.u_para + 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, // ms1.x < 0.5). + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // {. float + 0x33, 0x20, 0x5f, 0x35, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x63, // 3 _505 = fast::c + 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x5f, 0x34, 0x32, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, // lamp(_426.xyz, f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, // loat3(0.0), floa + 0x74, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t3(1.0));. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x5f, // float _548 = _ + 0x35, 0x30, 0x35, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, // 505.x;. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x39, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // loat _697;. + 0x20, 0x20, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, // do. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, // if ( + 0x5f, 0x35, 0x34, 0x38, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, // _548 <= 0.003130 + 0x38, 0x30, 0x30, 0x30, 0x39, 0x30, 0x37, 0x33, 0x30, 0x31, 0x39, 0x30, 0x33, 0x29, 0x0a, 0x20, // 8000907301903). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x39, // _69 + 0x37, 0x20, 0x3d, 0x20, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, // 7 = 12.920000076 + 0x32, 0x39, 0x33, 0x39, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x34, 0x38, 0x3b, 0x0a, 0x20, // 293945 * _548;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, // b + 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // reak;. + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x5f, 0x36, 0x39, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x34, // _697 = (1.054 + 0x39, 0x39, 0x39, 0x39, 0x34, 0x37, 0x35, 0x34, 0x37, 0x39, 0x31, 0x32, 0x36, 0x20, 0x2a, 0x20, // 9999475479126 * + 0x70, 0x6f, 0x77, 0x28, 0x5f, 0x35, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, // pow(_548, 0.4166 + 0x36, 0x36, 0x36, 0x35, 0x36, 0x37, 0x33, 0x32, 0x35, 0x35, 0x39, 0x32, 0x29, 0x29, 0x20, 0x2d, // 666567325592)) - + 0x20, 0x30, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x30, 0x31, 0x39, // 0.0549999997019 + 0x37, 0x36, 0x37, 0x37, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 76776;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, // } while(fals + 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // e);. floa + 0x74, 0x33, 0x20, 0x5f, 0x36, 0x38, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x38, 0x3b, 0x0a, // t3 _682 = _708;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x38, 0x32, 0x2e, 0x78, 0x20, 0x3d, // _682.x = + 0x20, 0x5f, 0x36, 0x39, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, // _697;. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x30, 0x35, // loat _552 = _505 + 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // .y;. floa + 0x74, 0x20, 0x5f, 0x36, 0x39, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t _699;. + 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // do. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x35, 0x35, // if (_55 + 0x32, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x30, 0x30, // 2 <= 0.003130800 + 0x30, 0x39, 0x30, 0x37, 0x33, 0x30, 0x31, 0x39, 0x30, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, // 0907301903). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x39, 0x39, 0x20, 0x3d, // _699 = + 0x20, 0x31, 0x32, 0x2e, 0x39, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, 0x32, 0x39, 0x33, // 12.920000076293 + 0x39, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x35, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 945 * _552;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, // brea + 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, // k;. } + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, // . els + 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, // e. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x5f, 0x36, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, // _699 = (1.054999 + 0x39, 0x34, 0x37, 0x35, 0x34, 0x37, 0x39, 0x31, 0x32, 0x36, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, // 9475479126 * pow + 0x28, 0x5f, 0x35, 0x35, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x36, // (_552, 0.4166666 + 0x35, 0x36, 0x37, 0x33, 0x32, 0x35, 0x35, 0x39, 0x32, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, // 567325592)) - 0. + 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x30, 0x31, 0x39, 0x37, 0x36, 0x37, // 0549999997019767 + 0x37, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 76;. + 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, // } while(false); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, // . float3 + 0x5f, 0x36, 0x38, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, // _685 = _682;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x38, 0x35, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x36, // _685.y = _6 + 0x39, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // 99;. floa + 0x74, 0x20, 0x5f, 0x35, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x30, 0x35, 0x2e, 0x7a, 0x3b, // t _556 = _505.z; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, // . float _ + 0x37, 0x30, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x0a, // 701;. do. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x35, 0x35, 0x36, 0x20, 0x3c, // if (_556 < + 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x31, 0x33, 0x30, 0x38, 0x30, 0x30, 0x30, 0x39, 0x30, // = 0.003130800090 + 0x37, 0x33, 0x30, 0x31, 0x39, 0x30, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 7301903). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x31, 0x32, // _701 = 12 + 0x2e, 0x39, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, 0x32, 0x39, 0x33, 0x39, 0x34, 0x35, // .920000076293945 + 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x35, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // * _556;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, // break;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, // _70 + 0x31, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x34, 0x39, 0x39, 0x39, 0x39, 0x34, 0x37, // 1 = (1.054999947 + 0x35, 0x34, 0x37, 0x39, 0x31, 0x32, 0x36, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x5f, 0x35, // 5479126 * pow(_5 + 0x35, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x31, 0x36, 0x36, 0x36, 0x36, 0x36, 0x35, 0x36, 0x37, // 56, 0.4166666567 + 0x33, 0x32, 0x35, 0x35, 0x39, 0x32, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x30, 0x35, 0x34, // 325592)) - 0.054 + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x30, 0x31, 0x39, 0x37, 0x36, 0x37, 0x37, 0x36, 0x3b, // 999999701976776; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // . + 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, // }. } + 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, // while(false);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x36, 0x38, // float3 _68 + 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 8 = _685;. + 0x20, 0x20, 0x5f, 0x36, 0x38, 0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x31, 0x3b, // _688.z = _701; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x33, 0x20, 0x3d, 0x20, // . _703 = + 0x5f, 0x36, 0x38, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // _688;. }. + 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // else. {. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x30, 0x34, 0x3b, 0x0a, // float3 _704;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // if (_mtl + 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, // _u.u_params1.x < + 0x20, 0x31, 0x2e, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, // 1.5). {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x34, // _704 + 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x32, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, // = _426.xyz;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, // }. e + 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, // lse. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // float3 + 0x20, 0x5f, 0x37, 0x30, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _705;. + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, // if (_mtl_u.u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x2e, 0x35, 0x29, // params1.x < 2.5) + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // . {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, // f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x36, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, // loat3 _641 = pow + 0x28, 0x28, 0x28, 0x28, 0x5f, 0x34, 0x32, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, // ((((_426.xyz * f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, // loat3x3(float3(0 + 0x2e, 0x34, 0x31, 0x32, 0x35, 0x35, 0x36, 0x34, 0x30, 0x39, 0x38, 0x33, 0x35, 0x38, 0x31, 0x35, // .412556409835815 + 0x34, 0x33, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x35, 0x37, 0x35, 0x37, 0x36, 0x31, 0x30, 0x32, 0x30, // 43, 0.3575761020 + 0x31, 0x38, 0x33, 0x35, 0x36, 0x33, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x38, 0x30, 0x34, 0x33, // 1835632, 0.18043 + 0x37, 0x35, 0x30, 0x35, 0x32, 0x34, 0x35, 0x32, 0x30, 0x38, 0x37, 0x34, 0x29, 0x2c, 0x20, 0x66, // 750524520874), f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x32, 0x31, 0x32, 0x36, 0x37, 0x32, 0x39, 0x30, // loat3(0.21267290 + 0x34, 0x31, 0x33, 0x33, 0x37, 0x39, 0x36, 0x36, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x35, // 413379669, 0.715 + 0x31, 0x35, 0x32, 0x32, 0x30, 0x34, 0x30, 0x33, 0x36, 0x37, 0x31, 0x32, 0x36, 0x35, 0x2c, 0x20, // 15220403671265, + 0x30, 0x2e, 0x30, 0x37, 0x32, 0x31, 0x37, 0x35, 0x30, 0x30, 0x33, 0x35, 0x38, 0x38, 0x31, 0x39, // 0.07217500358819 + 0x39, 0x36, 0x31, 0x35, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, // 9615), float3(0. + 0x30, 0x31, 0x39, 0x33, 0x33, 0x33, 0x39, 0x30, 0x30, 0x38, 0x38, 0x33, 0x37, 0x39, 0x33, 0x38, // 0193339008837938 + 0x33, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x31, 0x39, 0x31, 0x39, 0x31, 0x39, 0x39, 0x36, 0x37, // 31, 0.1191919967 + 0x35, 0x33, 0x32, 0x31, 0x35, 0x37, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x35, 0x30, 0x33, 0x30, // 5321579, 0.95030 + 0x34, 0x30, 0x39, 0x30, 0x39, 0x37, 0x36, 0x37, 0x31, 0x35, 0x30, 0x39, 0x29, 0x29, 0x29, 0x20, // 409097671509))) + 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, // * float3x3(float + 0x33, 0x28, 0x31, 0x2e, 0x37, 0x31, 0x36, 0x36, 0x35, 0x31, 0x32, 0x30, 0x31, 0x32, 0x34, 0x38, // 3(1.716651201248 + 0x31, 0x36, 0x38, 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x33, 0x35, 0x35, 0x36, 0x37, 0x30, 0x38, // 1689, -0.3556708 + 0x30, 0x39, 0x37, 0x34, 0x35, 0x37, 0x38, 0x38, 0x35, 0x37, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x32, // 0974578857, -0.2 + 0x35, 0x33, 0x33, 0x36, 0x36, 0x32, 0x39, 0x31, 0x35, 0x32, 0x32, 0x39, 0x37, 0x39, 0x37, 0x34, // 5336629152297974 + 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x2d, 0x30, 0x2e, 0x36, 0x36, 0x36, // ), float3(-0.666 + 0x36, 0x38, 0x34, 0x33, 0x38, 0x39, 0x31, 0x31, 0x34, 0x33, 0x37, 0x39, 0x38, 0x38, 0x2c, 0x20, // 68438911437988, + 0x31, 0x2e, 0x36, 0x31, 0x36, 0x34, 0x38, 0x31, 0x31, 0x38, 0x34, 0x39, 0x35, 0x39, 0x34, 0x31, // 1.61648118495941 + 0x31, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x37, 0x36, 0x38, 0x35, 0x30, 0x30, 0x30, // 16, 0.0157685000 + 0x34, 0x34, 0x39, 0x34, 0x31, 0x39, 0x30, 0x32, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // 44941902), float + 0x33, 0x28, 0x30, 0x2e, 0x30, 0x31, 0x37, 0x36, 0x33, 0x39, 0x38, 0x39, 0x39, 0x36, 0x32, 0x36, // 3(0.017639899626 + 0x33, 0x37, 0x34, 0x32, 0x34, 0x35, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x30, 0x34, 0x32, 0x37, 0x37, // 374245, -0.04277 + 0x30, 0x36, 0x30, 0x31, 0x38, 0x30, 0x39, 0x30, 0x32, 0x34, 0x38, 0x31, 0x31, 0x2c, 0x20, 0x30, // 0601809024811, 0 + 0x2e, 0x39, 0x34, 0x32, 0x31, 0x30, 0x33, 0x30, 0x38, 0x37, 0x39, 0x30, 0x32, 0x30, 0x36, 0x39, // .942103087902069 + 0x30, 0x39, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // 09))) * _mtl_u.u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x39, 0x2e, // _params1.y) * 9. + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x34, 0x37, 0x33, 0x37, 0x38, 0x37, 0x35, 0x31, 0x36, // 9999997473787516 + 0x65, 0x2d, 0x30, 0x30, 0x35, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, // e-005, float3(0. + 0x31, 0x35, 0x39, 0x33, 0x30, 0x31, 0x37, 0x35, 0x37, 0x38, 0x31, 0x32, 0x35, 0x29, 0x29, 0x3b, // 1593017578125)); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // . + 0x20, 0x5f, 0x37, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x28, 0x66, 0x6c, 0x6f, // _705 = pow((flo + 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x38, 0x33, 0x35, 0x39, 0x33, 0x37, 0x35, 0x29, 0x20, 0x2b, // at3(0.8359375) + + 0x20, 0x28, 0x5f, 0x36, 0x34, 0x31, 0x20, 0x2a, 0x20, 0x31, 0x38, 0x2e, 0x38, 0x35, 0x31, 0x35, // (_641 * 18.8515 + 0x36, 0x32, 0x35, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, // 625)) / (float3( + 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x36, 0x34, 0x31, 0x20, 0x2a, 0x20, 0x31, // 1.0) + (_641 * 1 + 0x38, 0x2e, 0x36, 0x38, 0x37, 0x35, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // 8.6875)), float3 + 0x28, 0x37, 0x38, 0x2e, 0x38, 0x34, 0x33, 0x37, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // (78.84375));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x35, 0x20, 0x3d, // _705 = + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, // float3(0.0);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, // _704 = _ + 0x37, 0x30, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, // 705;. }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x37, // _703 = _7 + 0x30, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, // 04;. }. ou + 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, // t.bgfx_FragData0 + 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x37, 0x30, 0x33, 0x2c, 0x20, // = float4(_703, + 0x5f, 0x34, 0x32, 0x36, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, // _426.w);. ret + 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x40, 0x00, // urn out;.}....@. }; extern const uint8_t* fs_texture_cube2_pssl; extern const uint32_t fs_texture_cube2_pssl_size; diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_cube2.sc b/3rdparty/bgfx/tools/texturev/fs_texture_cube2.sc index df1521f0ba1..6623595fa28 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_cube2.sc +++ b/3rdparty/bgfx/tools/texturev/fs_texture_cube2.sc @@ -1,8 +1,8 @@ $input v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" @@ -12,5 +12,8 @@ SAMPLERCUBE(s_texColor, 0); void main() { vec4 color = textureCubeLod(s_texColor, v_texcoord0, u_textureLod); - gl_FragColor = toEv(color * v_color0); + color.xyz = applyExposure(color.xyz); + color *= v_color0; + + gl_FragColor = toOutput(color, u_outputFormat, u_sdrWhiteNits); } diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_msdf.bin.h b/3rdparty/bgfx/tools/texturev/fs_texture_msdf.bin.h index aeccab82506..788276366c0 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_msdf.bin.h +++ b/3rdparty/bgfx/tools/texturev/fs_texture_msdf.bin.h @@ -1,292 +1,334 @@ -static const uint8_t fs_texture_msdf_glsl[483] = +static const uint8_t fs_texture_msdf_glsl[494] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xb0, 0x01, // texColor........ - 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ..varying vec3 v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // orm vec4 u_param - 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s;.uniform sampl - 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // er2D s_texColor; - 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. - 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec3 tmpvar_1; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, // . tmpvar_1 = te - 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, // xture2DLod (s_te - 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // xColor, v_texcoo - 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // rd0.xy, u_params - 0x2e, 0x78, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // .x).xyz;. float - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_2;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x6d, 0x69, // var_2 = (max (mi - 0x6e, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x74, // n (tmpvar_1.x, t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x20, // mpvar_1.y), min - 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // (. max (tmpva - 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1.x, tmpvar_1. - 0x79, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // y). , tmpvar_1. - 0x7a, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // z)) - 0.5);. gl - 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, // _FragColor = vec - 0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // 4(clamp (((tmpva - 0x72, 0x5f, 0x32, 0x20, 0x2f, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, // r_2 / . (abs( - 0x64, 0x46, 0x64, 0x78, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x20, // dFdx(tmpvar_2)) - 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // + abs(dFdy(tmpva - 0x72, 0x5f, 0x32, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, // r_2))). ) + 0.5 - 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x7d, // ), 0.0, 1.0));.} - 0x0a, 0x0a, 0x00, // ... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, // ...s_texColor... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, // ...........varyi + 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ng vec3 v_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, // rd0;.uniform vec + 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // 4 u_params0;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, // form sampler2D s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // _texColor;.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, // main ().{. vec3 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, // var_1 = texture2 + 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // DLod (s_texColor + 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, // , v_texcoord0.xy + 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x2e, 0x78, // , u_params0.x).x + 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // yz;. float tmpv + 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // ar_2;. tmpvar_2 + 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x74, 0x6d, // = (max (min (tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_1.x, tmpvar + 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, // _1.y), min (. + 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // max (tmpvar_1.x + 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x0a, 0x20, 0x20, // , tmpvar_1.y). + 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2d, // , tmpvar_1.z)) - + 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, // 0.5);. gl_Frag + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x63, 0x6c, 0x61, // Color = vec4(cla + 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x2f, // mp (((tmpvar_2 / + 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, // . (abs(dFdx( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, // tmpvar_2)) + abs + 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, // (dFdy(tmpvar_2)) + 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x2c, 0x20, 0x30, 0x2e, // ). ) + 0.5), 0. + 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 0, 1.0));.}... }; -static const uint8_t fs_texture_msdf_spv[1817] = +static const uint8_t fs_texture_msdf_essl[613] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0xf4, 0x06, 0x00, // _params......... - 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x03, 0x01, 0x00, // ...#............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, // .....GLSL.std.45 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // 0............... - 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai - 0x6e, 0x00, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, // n............... - 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // ................ - 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // .main........... - 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, 0x00, // .BgfxSampler2D.. - 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, // .............m_s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // ampler.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, // .....m_texture.. - 0x00, 0x05, 0x00, 0x05, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....-...s_texCo - 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, // lor....../...s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, // exColorSampler.. - 0x00, 0x05, 0x00, 0x07, 0x00, 0x32, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....2...s_texCo - 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, // lorTexture...... - 0x00, 0x70, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, // .p...$Global.... - 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // .p.......u_param - 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s........r...... - 0x00, 0x05, 0x00, 0x05, 0x00, 0x95, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // .........v_color - 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, // 0............v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xa4, 0x00, 0x00, // excoord0........ - 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, // .bgfx_FragData0. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...2..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...2...!...... - 0x00, 0x48, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...p.......#.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....G...p...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...r..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .G.............. - 0x00, 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, // .........!...... - 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, // ................ - 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, // ..... .......... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, // ................ - 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // . ........... .. - 0x00, 0x2c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .,...........;.. - 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .,...-....... .. - 0x00, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;.. - 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ...../....... .. - 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .1...........;.. - 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // .1...2.......... - 0x00, 0x35, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .5... .......+.. - 0x00, 0x35, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, // .5...:.......... - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, // .>...........R.. - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, // . .......+...R.. - 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .S.......+...... - 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, // .g.......,...... - 0x00, 0x6b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, // .k...g...g...g.. - 0x00, 0x67, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, // .g...+.......m.. - 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, // ....?,.......n.. - 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, // .m...m...m...m.. - 0x00, 0x1e, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .....p....... .. - 0x00, 0x71, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .q.......p...;.. - 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .q...r....... .. - 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .y...........+.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x00, 0x04, // ............? .. - 0x00, 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;.. - 0x00, 0x94, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. .. - 0x00, 0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // ......... ...;.. - 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. .. - 0x00, 0xa3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;.. - 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, // .............6.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .........=...... - 0x00, 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, // .0.../...=...... - 0x00, 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, // .3...2...P...... - 0x00, 0x34, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, // .4...0...3...>.. - 0x00, 0x2d, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, // .-...4...=... .. - 0x00, 0x9a, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, // .........=...... - 0x00, 0xc7, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .....-...Q...... - 0x00, 0x01, 0x01, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q.. - 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, // .O.............. - 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, // .............A.. - 0x00, 0x79, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, // .y.......r...:.. - 0x00, 0x53, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, // .S...=.......... - 0x00, 0xca, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, // .....V...>...... - 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, // .........X...... - 0x00, 0xea, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0xcb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, // .....Q.......... - 0x00, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // .........Q...... - 0x00, 0xef, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, // ................ - 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, // .............%.. - 0x00, 0xed, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // .........Q...... - 0x00, 0xf2, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x28, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .(...........Q.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x25, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, // .%.............. - 0x00, 0x07, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, // .............(.. - 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // ................ - 0x00, 0xd0, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, // ................ - 0x00, 0x07, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, // ................ - 0x00, 0x07, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, // ................ - 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, // ................ - 0x00, 0x82, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, // .....+.......g.. - 0x00, 0x6d, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, // .m...P.......... - 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, // ................ - 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x2e, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, // .....k...n...... - 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, // .>.............. - 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // .8....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, // ...s_texColor... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x02, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, // .......)...varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, // ng highp vec3 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, // rm highp vec4 u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // params0;.uniform + 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // sampler2D s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // Color;.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, // ().{. lowp vec + 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 3 tmpvar_1;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // pvar_1 = texture + 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x20, 0x20, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // 2DLod (s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // olor, v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, // 0.xy, u_params0. + 0x78, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // x).xyz;. lowp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, // loat tmpvar_2;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x78, // tmpvar_2 = (max + 0x20, 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // (min (tmpvar_1. + 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, // x, tmpvar_1.y), + 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, // min (. max (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_1.x, tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_1.y). , tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a, // r_1.z)) - 0.5);. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // lowp float tmp + 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_3;. tmpvar_ + 0x33, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, // 3 = clamp (((tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x2f, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x61, 0x62, // var_2 / . (ab + 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, // s(dFdx(tmpvar_2) + 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x74, 0x6d, 0x70, // ) + abs(dFdy(tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x30, // var_2))). ) + 0 + 0x2e, 0x35, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // .5), 0.0, 1.0);. + 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, // mediump vec4 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_4;. tmpva + 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_4 = vec4(tmpva + 0x72, 0x5f, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // r_3);. gl_FragC + 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, // olor = tmpvar_4; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... }; -static const uint8_t fs_texture_msdf_dx9[499] = +static const uint8_t fs_texture_msdf_spv[1731] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x08, // _texColor0...... - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, // u_params........ - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........,.CTAB.. - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, // ................ - 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, // ......|...D..... - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, // ......P.......`. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........l..... - 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, // ..s_texColor.... - 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, // params.......... - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 - 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H - 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi - 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, // ler 10.1..Q..... - 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, // .....?.......... - 0x00, 0x3f, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, // .?.............. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x07, 0x80, 0x01, 0x00, 0xd0, 0xa0, 0x00, 0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, // ......_......... - 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // ................ - 0x55, 0x81, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, // U.....X......... - 0xff, 0x80, 0x00, 0x00, 0xe1, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x0a, 0x00, 0x00, 0x03, 0x01, 0x00, // ................ - 0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0b, 0x00, 0x00, 0x03, 0x02, 0x00, // ........U....... - 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x01, 0x80, 0x02, 0x00, 0x00, 0x80, 0x01, 0x00, 0xaa, 0xa0, 0x5b, 0x00, 0x00, 0x02, 0x00, 0x00, // ..........[..... - 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x5c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................ - 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x00, 0x00, // ................ - 0x55, 0x8b, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x04, 0x00, // U...........U... - 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, // ............U... - 0xff, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, // ................ - 0x00, 0x00, 0x00, // ... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0xfd, 0x7f, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, // ...s_texColor0.. + 0x00, 0x00, 0x00, 0x00, 0x02, 0x1a, 0x00, 0x84, 0x06, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, // .............#.. + 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, // ................ + 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, // ...............G + 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, // LSL.std.450..... + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x96, // .......main..... + 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x10, // ................ + 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, // ................ + 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, // ...............m + 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x30, 0x00, 0x00, 0x00, 0x73, // ain........0...s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x33, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // .......3...s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, // ColorTexture.... + 0x00, 0x06, 0x00, 0x71, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, // ...q...UniformBl + 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, // ock........q.... + 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x00, 0x00, 0x00, 0x05, // ...u_params0.... + 0x00, 0x03, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x96, // ...s............ + 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, // ...gl_FragCoord. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // ...........v_col + 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x76, // or0............v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xaa, // _texcoord0...... + 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, // ...bgfx_FragData + 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // 0..G...0...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, // ...G...0...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G...3...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, // ...G...3...!.... + 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, // ...H...q.......# + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x71, 0x00, 0x00, 0x00, 0x02, // .......G...q.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G...s...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, // ...G...s...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G............ + 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, // ...........!.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, // ................ + 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, // ....... ........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, // ... ........... + 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, // .../...........; + 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // .../...0....... + 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, // ...2...........; + 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, // ...2...3........ + 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...6... .......+ + 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, // ...6...;........ + 0x00, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x53, // ...?...........S + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x53, // ... .......+...S + 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...T.......+.... + 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0e, // ...h.......,.... + 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x68, // ...l...h...h...h + 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6e, // ...h...+.......n + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x6f, // ......?,.......o + 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, // ...n...n...n...n + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, // .......q....... + 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x3b, // ...r.......q...; + 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, // ...r...s....... + 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, // ...z...........+ + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, // ..............? + 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, // ...............; + 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, // ...............; + 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3b, // ........... ...; + 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, // ...............; + 0x00, 0x04, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, // ...........=.... + 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, // ...1...0...=.... + 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, // ...4...3...=... + 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, // ...........O.... + 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xd2, // .......A...z.... + 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x3d, // ...s...;...T...= + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x56, // ...............V + 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x31, // ...?.......4...1 + 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xf1, // ...X............ + 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xf4, // ...Q............ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xfb, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfa, // .......%........ + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xf4, // ...Q............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, // .......Q........ + 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xfd, // ...........(.... + 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, // .......Q........ + 0x01, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, // ...........%.... + 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, // ................ + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x03, // .......(........ + 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x04, // ................ + 0x01, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdb, // ................ + 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdc, // ................ + 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x0c, // ................ + 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...............+ + 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x50, // .......h...n...P + 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xde, // ................ + 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0e, // ................ + 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x6c, // ...............l + 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xaa, // ...o.......>.... + 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, // ...........8.... + 0x00, 0x10, 0x00, // ... }; -static const uint8_t fs_texture_msdf_dx11[674] = +static const uint8_t fs_texture_msdf_dx9[508] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x6c, 0x02, // texColor0.....l. - 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xde, 0xd6, 0xcf, 0x5a, 0x51, 0xb1, 0xc9, 0x93, 0x7e, 0x1e, // ..DXBC...ZQ...~. - 0x77, 0x4e, 0x30, 0x56, 0xcd, 0x6a, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x03, 0x00, // wN0V.j....l..... - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS - 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, // ..............b. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO - 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD - 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR - 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x90, 0x01, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@. - 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..d...Y...F. ... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ......Z....`.... - 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, // ..X....p......UU - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, // ..b...2.......e. - 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, // ... ......h..... - 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, // ..H...........F. - 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, // ......F~.......` - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ ....... - 0x00, 0x00, 0x34, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..4............. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, // ..............3. - 0x00, 0x07, 0x52, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x06, 0x10, 0x00, 0x00, 0x00, // ..R.......V..... - 0x00, 0x00, 0x06, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x07, 0x12, 0x00, // ..........4..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, // ......*......... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, // ...........@.... - 0x00, 0xbf, 0x0b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, // ......"......... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, // ..........B..... - 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x22, 0x00, // ..............". - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, // ......*......... - 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, // ................ - 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, // ................ - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, // ...............@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x20, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // .....?6 ... .... - 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, // ..........>..... - 0x10, 0x00, // .. + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, // ....u_params0... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, // ................ + 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, // .,.CTAB......... + 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, // ...............| + 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, // ...D...........P + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, // .......`........ + 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...l.......s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // Color........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // .......u_params0 + 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, // ...ps_3_0.Micros + 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, // oft (R) HLSL Sha + 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, // der Compiler 10. + 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, // 1..Q..........?. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x00, 0x02, 0x05, // ..........?..... + 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, // ................ + 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xd0, 0xa0, 0x00, // ................ + 0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, // ..............._ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x02, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, 0x00, 0x00, 0x80, 0x58, // .........U.....X + 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xe1, 0x80, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x0a, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, // ................ + 0x00, 0x55, 0x80, 0x0b, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, // .U.............. + 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x02, 0x00, 0x00, 0x80, 0x01, // ................ + 0x00, 0xaa, 0xa0, 0x5b, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x5c, // ...[............ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x02, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x00, 0x00, 0x55, 0x8b, 0x06, 0x00, 0x00, 0x02, 0x00, // .........U...... + 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, // .....U.......... + 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0xff, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, // .....U.......... + 0x08, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ............ }; -static const uint8_t fs_texture_msdf_mtl[879] = +static const uint8_t fs_texture_msdf_dx11[704] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x03, // FSH............. - 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, // ut {. float3 v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, // texcoord0;.};.st - 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ruct xlatMtlShad - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // erOutput {. flo - 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // at4 gl_FragColor - 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, // {. float4 u_pa - 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, // rams;.};.fragmen - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // utput xlatMtlMai - 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // n (xlatMtlShader - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, // Input _mtl_i [[s - 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, // tage_in]], const - 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // ant xlatMtlShade - 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // rUniform& _mtl_u - 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, // [[buffer(0)]]. - 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, // , texture2d<f - 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // loat> s_texColor - 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, // [[texture(0)]], - 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, // sampler _mtlsmp - 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, // _s_texColor [[sa - 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // mpler(0)]]).{. - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut - 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // put _mtl_o;. fl - 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // oat3 tmpvar_1 = - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // 0;. tmpvar_1 = - 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s_texColor.sampl - 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // e(_mtlsmp_s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x5f, // olor, (float2)(_ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // mtl_i.v_texcoord - 0x30, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, // 0.xy), level(_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x29, // l_u.u_params.x)) - 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // .xyz;. float tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // pvar_2 = 0;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x6d, // pvar_2 = (max (m - 0x69, 0x6e, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, // in (tmpvar_1.x, - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x6d, 0x69, 0x6e, // tmpvar_1.y), min - 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // (. max (tmpv - 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // ar_1.x, tmpvar_1 - 0x2e, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // .y). , tmpvar_1 - 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // .z)) - 0.5);. _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, // mtl_o.gl_FragCol - 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, // or = float4(clam - 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x2f, 0x20, // p (((tmpvar_2 / - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x66, 0x64, 0x78, 0x28, 0x74, // . (abs(dfdx(t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, // mpvar_2)) + abs( - 0x64, 0x66, 0x64, 0x79, 0x28, 0x2d, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, // dfdy(-tmpvar_2)) - 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x2c, 0x20, 0x30, 0x2e, // ). ) + 0.5), 0. - 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, // 0, 1.0));. retu - 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // rn _mtl_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, // ...s_texColor0.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // ........s_texCol + 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, // or0.........l... + 0x44, 0x58, 0x42, 0x43, 0xde, 0xd6, 0xcf, 0x5a, 0x51, 0xb1, 0xc9, 0x93, 0x7e, 0x1e, 0x77, 0x4e, // DXBC...ZQ...~.wN + 0x30, 0x56, 0xcd, 0x6a, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // 0V.j....l....... + 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, // ,...........ISGN + 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // l...........P... + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, // ............b... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, // ....SV_POSITION. + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, // COLOR.TEXCOORD.. + 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGN,........... + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ............... + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, // ........SV_TARGE + 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x90, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // T...SHDR....@... + 0x64, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // d...Y...F. ..... + 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....Z....`...... + 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, // X....p......UU.. + 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // b...2.......e... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... + 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, // H...........F... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, // ....F~.......`.. + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ......... + 0x34, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // 4............... + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x07, // ............3... + 0x52, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x06, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // R.......V....... + 0x06, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, // ........4....... + 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, // ....*........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, // .........@...... + 0x0b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, // ...."........... + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........B....... + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, // ............"... + 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....*........... + 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x07, // ................ + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, // .............@.. + 0x00, 0x00, 0x00, 0x3f, 0x36, 0x20, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...?6 ... ...... + 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // ........>....... +}; +static const uint8_t fs_texture_msdf_mtl[942] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // .......u_params0 + 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x37, // Color..........7 + 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, // ...#include <met + 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, // al_stdlib>.#incl + 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, // ude <simd/simd.h + 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, // >..using namespa + 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ce metal;..struc + 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // t _Global.{. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // float4 u_params0 + 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // ;.};..struct xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, // tMtlMain_out.{. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // float4 bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ragData0 [[color + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // (0)]];.};..struc + 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, // t xlatMtlMain_in + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, // .{. float3 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // texcoord0 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, // (locn1)]];.};..f + 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ragment xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ain_out xlatMtlM + 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // ain(xlatMtlMain_ + 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // in in [[stage_in + 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, // ]], constant _Gl + 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // obal& _mtl_u [[b + 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, // uffer(0)]], text + 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, // ure2d<float> s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // exColor [[textur + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, // e(0)]], sampler + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, // s_texColorSample + 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, // r [[sampler(0)]] + 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ).{. xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, // ain_out out = {} + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x34, // ;. float4 _24 + 0x34, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, // 4 = s_texColor.s + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ample(s_texColor + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, // Sampler, in.v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, // xcoord0.xy, leve + 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // l(_mtl_u.u_param + 0x73, 0x30, 0x2e, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // s0.x));. floa + 0x74, 0x20, 0x5f, 0x32, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, // t _216 = fast::m + 0x61, 0x78, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, 0x5f, 0x32, 0x34, // ax(fast::min(_24 + 0x34, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x34, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x66, 0x61, // 4.x, _244.y), fa + 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, // st::min(fast::ma + 0x78, 0x28, 0x5f, 0x32, 0x34, 0x34, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x34, 0x2e, 0x79, // x(_244.x, _244.y + 0x29, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x34, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, // ), _244.z)) - 0. + 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, // 5;. out.bgfx_ + 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x28, // FragData0 = mix( + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, // float4(0.0), flo + 0x61, 0x74, 0x34, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // at4(1.0), float4 + 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x5f, 0x32, // (fast::clamp((_2 + 0x31, 0x36, 0x20, 0x2f, 0x20, 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, 0x28, 0x5f, 0x32, 0x31, 0x36, // 16 / fwidth(_216 + 0x29, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // )) + 0.5, 0.0, 1 + 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // .0)));. retur + 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x30, 0x00, // n out;.}....0. }; extern const uint8_t* fs_texture_msdf_pssl; extern const uint32_t fs_texture_msdf_pssl_size; diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_msdf.sc b/3rdparty/bgfx/tools/texturev/fs_texture_msdf.sc index 224cca0d4e7..4adbe3d1974 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_msdf.sc +++ b/3rdparty/bgfx/tools/texturev/fs_texture_msdf.sc @@ -1,8 +1,8 @@ $input v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_sdf.bin.h b/3rdparty/bgfx/tools/texturev/fs_texture_sdf.bin.h index 3babccd2aff..c3a65c654ac 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_sdf.bin.h +++ b/3rdparty/bgfx/tools/texturev/fs_texture_sdf.bin.h @@ -1,301 +1,338 @@ -static const uint8_t fs_texture_sdf_glsl[575] = +static const uint8_t fs_texture_sdf_glsl[586] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x02, // texColor........ - 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ..varying vec3 v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // orm vec4 u_param - 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s;.uniform sampl - 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // er2D s_texColor; - 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. - 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec4 tmpvar_1; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, // . tmpvar_1 = te - 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, // xture2DLod (s_te - 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // xColor, v_texcoo - 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // rd0.xy, u_params - 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // .x);. float tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_2;. tmpvar_ - 0x32, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x74, 0x6d, // 2 = (abs(dFdx(tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, // pvar_1.x)) + abs - 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // (dFdy(tmpvar_1.x - 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, // )));. float edg - 0x65, 0x30, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x20, // e0_3;. edge0_3 - 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = (0.5 - tmpvar_ - 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // 2);. float tmpv - 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, // ar_4;. tmpvar_4 - 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // = clamp (((tmpv - 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, // ar_1.x - edge0_3 - 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, // ) / (. (0.5 + - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, // tmpvar_2). - - 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, // edge0_3)), 0.0, - 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // 1.0);. gl_FragC - 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, // olor = vec4(clam + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, // ...s_texColor... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, // ...........varyi + 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ng vec3 v_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, // rd0;.uniform vec + 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // 4 u_params0;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, // form sampler2D s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // _texColor;.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // main ().{. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, // var_1 = texture2 + 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // DLod (s_texColor + 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, // , v_texcoord0.xy + 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x3b, 0x0a, // , u_params0.x);. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // float tmpvar_2 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, // ;. tmpvar_2 = ( + 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // abs(dFdx(tmpvar_ + 0x31, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, // 1.x)) + abs(dFdy + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x29, 0x3b, 0x0a, // (tmpvar_1.x)));. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x3b, // float edge0_3; + 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, // . edge0_3 = (0. + 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, // 5 - tmpvar_2);. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, // float tmpvar_4; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x63, 0x6c, // . tmpvar_4 = cl + 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // amp (((tmpvar_1. + 0x78, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x29, 0x20, 0x2f, 0x20, 0x28, // x - edge0_3) / ( + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, // . (0.5 + tmpv + 0x61, 0x72, 0x5f, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // ar_2). - edge0 + 0x5f, 0x33, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // _3)), 0.0, 1.0); + 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, // . gl_FragColor + 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x74, // = vec4(clamp ((t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_4 * (tmpva + 0x72, 0x5f, 0x34, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, // r_4 * . (3.0 + 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // - (2.0 * tmpvar_ + 0x34, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // 4)). )), 0.0, 1 + 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .0));.}... +}; +static const uint8_t fs_texture_sdf_essl[666] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, // ...s_texColor... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x02, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, // .......^...varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, // ng highp vec3 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, // rm highp vec4 u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // params0;.uniform + 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // sampler2D s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // Color;.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, // ().{. lowp vec + 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 4 tmpvar_1;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // pvar_1 = texture + 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x20, 0x20, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // 2DLod (s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // olor, v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, // 0.xy, u_params0. + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // x);. lowp float + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_2;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, // var_2 = (abs(dFd + 0x78, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2b, // x(tmpvar_1.x)) + + 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // abs(dFdy(tmpvar + 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, // _1.x)));. lowp + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x3b, 0x0a, 0x20, // float edge0_3;. + 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, // edge0_3 = (0.5 + 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // - tmpvar_2);. l + 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // owp float tmpvar + 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, // _4;. tmpvar_4 = + 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // clamp (((tmpvar + 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x29, 0x20, // _1.x - edge0_3) + 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, // / (. (0.5 + t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, // mpvar_2). - ed + 0x67, 0x65, 0x30, 0x5f, 0x33, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, // ge0_3)), 0.0, 1. + 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // 0);. lowp vec4 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_5;. tmpv + 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, // ar_5 = vec4(clam 0x70, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2a, 0x20, 0x28, // p ((tmpvar_4 * ( 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, // tmpvar_4 * . 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, // (3.0 - (2.0 * tm 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x30, // pvar_4)). )), 0 - 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .0, 1.0));.}... + 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // .0, 1.0));. gl_ + 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // FragColor = tmpv + 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ar_5;.}... }; -static const uint8_t fs_texture_sdf_spv[1637] = +static const uint8_t fs_texture_sdf_spv[1551] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x40, 0x06, 0x00, // _params......@.. - 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xe2, 0x00, 0x00, // ...#............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, // .....GLSL.std.45 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // 0............... - 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai - 0x6e, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, // n............... - 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // ................ - 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // .main........... - 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, 0x00, // .BgfxSampler2D.. - 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, // .............m_s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // ampler.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, // .....m_texture.. - 0x00, 0x05, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....)...s_texCo - 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, // lor......+...s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, // exColorSampler.. - 0x00, 0x05, 0x00, 0x07, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .........s_texCo - 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, // lorTexture...... - 0x00, 0x58, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, // .X...$Global.... - 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // .X.......u_param - 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s........Z...... - 0x00, 0x05, 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // .........v_color - 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x85, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, // 0............v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x90, 0x00, 0x00, // excoord0........ - 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, // .bgfx_FragData0. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G......."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.......!...... - 0x00, 0x48, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...X.......#.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....G...X...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...Z..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .G.............. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, // .........!...... - 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, // ................ - 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, // ..... .......... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, // ................ - 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // . ........... .. - 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .(...........;.. - 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .(...)....... .. - 0x00, 0x2a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .*...........;.. - 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .*...+....... .. - 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .-...........;.. - 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // .-.............. - 0x00, 0x31, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .1... .......+.. - 0x00, 0x31, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, // .1...6.......... - 0x00, 0x3a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .:.......+...... - 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, // .O.......,...... - 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, // .S...O...O...O.. - 0x00, 0x4f, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, // .O...+.......U.. - 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, // ....?,.......V.. - 0x00, 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, // .U...U...U...U.. - 0x00, 0x1e, 0x00, 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .....X....... .. - 0x00, 0x59, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .Y.......X...;.. - 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // .Y...Z.......... - 0x00, 0x61, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .a... .......+.. - 0x00, 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .a...b....... .. - 0x00, 0x63, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .c...........+.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x00, 0x04, // .....l......? .. - 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;.. - 0x00, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. .. - 0x00, 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // ......... ...;.. - 0x00, 0x84, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. .. - 0x00, 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;.. - 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, // .............6.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .........=...... - 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, // .,...+...=...... - 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, // ./.......P...... - 0x00, 0x30, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, // .0...,.../...>.. - 0x00, 0x29, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, // .)...0...=... .. - 0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, // .........=...... - 0x00, 0xb3, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .....)...Q...... - 0x00, 0xe0, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q.. - 0x00, 0x08, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, // .O.............. - 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, // .............A.. - 0x00, 0x63, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, // .c.......Z...6.. - 0x00, 0x62, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, // .b...=.......... - 0x00, 0xb6, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, // .....V...:...... - 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, // .........X...... - 0x00, 0xd8, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, // .....Q.......... - 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // ................ - 0x00, 0xbb, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // ................ - 0x00, 0xbe, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, // .....l.......... - 0x00, 0x07, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, // .........l...... - 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x31, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, // .1.............. - 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x2b, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, // .+.......O...U.. - 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, // .P.............. - 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, // ................ - 0x00, 0x0e, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, // ................ - 0x00, 0x53, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, // .S...V.......>.. - 0x00, 0x90, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, // .............8.. - 0x00, 0x00, 0x00, 0x10, 0x00, // ..... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0xfd, 0x7f, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, // ...s_texColor0.. + 0x00, 0x00, 0x00, 0x00, 0x02, 0x1a, 0x00, 0xd0, 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, // .............#.. + 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, // ................ + 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, // ...............G + 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, // LSL.std.450..... + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x82, // .......main..... + 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x10, // ................ + 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, // ................ + 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, // ...............m + 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x73, // ain........,...s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ......./...s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, // ColorTexture.... + 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, // ...Y...UniformBl + 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, // ock........Y.... + 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x00, 0x00, 0x00, 0x05, // ...u_params0.... + 0x00, 0x03, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x82, // ...[............ + 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, // ...gl_FragCoord. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x85, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // ...........v_col + 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x76, // or0............v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x96, // _texcoord0...... + 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, // ...bgfx_FragData + 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // 0..G...,...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, // ...G...,...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G.../...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, // ...G.../...!.... + 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, // ...H...Y.......# + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x02, // .......G...Y.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G...[...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, // ...G...[...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G............ + 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, // ...........!.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, // ................ + 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, // ....... ........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, // ... ........... + 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, // ...+...........; + 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ...+...,....... + 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, // ...............; + 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, // ......./........ + 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...2... .......+ + 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, // ...2...7........ + 0x00, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...;.......+.... + 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0e, // ...P.......,.... + 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, // ...T...P...P...P + 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x56, // ...P...+.......V + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x57, // ......?,.......W + 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x56, // ...V...V...V...V + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, // .......Y....... + 0x00, 0x04, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3b, // ...Z.......Y...; + 0x00, 0x04, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, // ...Z...[........ + 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, // ...b... .......+ + 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ...b...c....... + 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, // ...d...........+ + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, // .......m......? + 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, // ...............; + 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, // ...............; + 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3b, // ........... ...; + 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, // ...............; + 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, // ...........=.... + 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, // ...-...,...=.... + 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, // ...0.../...=... + 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, // ...........O.... + 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x64, 0x00, 0x00, 0x00, 0xbe, // .......A...d.... + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x3d, // ...[...7...c...= + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x56, // ...............V + 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2d, // ...;.......0...- + 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, // ...X............ + 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc1, // ................ + 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x6d, // ...............m + 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc9, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, // ...m............ + 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xc6, // ...........1.... + 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xcb, // ...........+.... + 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, // ...P...V...P.... + 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, // ................ + 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xe8, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x57, // ...........T...W + 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x96, 0x00, 0x00, 0x00, 0xe8, // .......>........ + 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // .......8....... }; -static const uint8_t fs_texture_sdf_dx9[535] = +static const uint8_t fs_texture_sdf_dx9[544] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x08, // _texColor0...... - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0xe4, 0x01, // u_params........ - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........,.CTAB.. - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, // ................ - 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, // ......|...D..... - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, // ......P.......`. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........l..... - 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, // ..s_texColor.... - 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, // params.......... - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 - 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H - 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi - 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, // ler 10.1..Q..... - 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, // .....?.......?.. - 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, // ..Q............. - 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, // @@.............. - 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, // ................ - 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xd0, 0xa0, 0x00, 0x00, // ................ - 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, 0x00, // .............._. - 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x5b, 0x00, // ..............[. - 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x5c, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x04, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // ................ - 0xaa, 0x8b, 0x00, 0x00, 0x55, 0x8b, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ....U........... - 0x55, 0x80, 0x01, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // U............... - 0x55, 0x81, 0x01, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x05, 0x80, 0x00, 0x00, // U............... - 0x55, 0x81, 0x00, 0x00, 0xe4, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // U............... - 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, // ............U... - 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, // ................ - 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ....U........... - 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ - 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x1f, 0x80, 0x00, 0x00, // ....U........... - 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, // ....u_params0... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, // ................ + 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, // .,.CTAB......... + 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, // ...............| + 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, // ...D...........P + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, // .......`........ + 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...l.......s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // Color........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // .......u_params0 + 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, // ...ps_3_0.Micros + 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, // oft (R) HLSL Sha + 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, // der Compiler 10. + 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, // 1..Q..........?. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x02, // ......?....Q.... + 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // .........@@..... + 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x07, 0x80, 0x01, 0x00, 0xd0, 0xa0, 0x00, 0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, // ......._........ + 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x5b, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, // .......[........ + 0x00, 0x00, 0x80, 0x5c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x00, 0x00, 0x55, 0x8b, 0x02, // .............U.. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0xaa, 0xa0, 0x02, // .........U...... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x81, 0x01, 0x00, 0xaa, 0xa0, 0x02, // .........U...... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x05, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, 0x00, 0xe4, 0x80, 0x06, // .........U...... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x11, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, // .....U.......... + 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x05, // .............U.. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, // .............U.. + 0x00, 0x00, 0x02, 0x00, 0x08, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ................ }; -static const uint8_t fs_texture_sdf_dx11[778] = +static const uint8_t fs_texture_sdf_dx11[808] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd4, 0x02, // texColor0....... - 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x03, 0x0d, 0x91, 0x21, 0x8e, 0x75, 0xa6, 0x21, 0xba, 0xe2, // ..DXBC...!.u.!.. - 0x0d, 0xbb, 0xa4, 0xa3, 0xae, 0x51, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x03, 0x00, // .....Q.......... - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS - 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, // ..............b. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO - 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD - 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR - 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xf8, 0x01, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@. - 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..~...Y...F. ... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ......Z....`.... - 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, // ..X....p......UU - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, // ..b...2.......e. - 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, // ... ......h..... - 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, // ..H...........F. - 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, // ......F~.......` - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ ....... - 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, // ......"......... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, // ..........B..... - 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x22, 0x00, // ..............". - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, // ......*......... - 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, // ..B............. - 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, // ...@.....?....". - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........A..... - 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x52, 0x00, // ...@.....?....R. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, // ......V...A..... - 0x00, 0x00, 0x06, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, 0x00, // ..............". - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, // .......@.....?.. - 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, // .?...?...?*..... - 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..8 ............ - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, // ..............2. - 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, // .."............. - 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, // ...@.......@.... - 0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, // @@8............. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, // ..............8. - 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0a, 0xf2, 0x20, // ..........3.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, // ...............@ - 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, // .....?...?...?.. - 0x80, 0x3f, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // .?>....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // _params0........ + 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, // ...s_texColor0.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // ........s_texCol + 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, // or0............. + 0x44, 0x58, 0x42, 0x43, 0x03, 0x0d, 0x91, 0x21, 0x8e, 0x75, 0xa6, 0x21, 0xba, 0xe2, 0x0d, 0xbb, // DXBC...!.u.!.... + 0xa4, 0xa3, 0xae, 0x51, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ...Q............ + 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, // ,...........ISGN + 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // l...........P... + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, // ............b... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, // ....SV_POSITION. + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, // COLOR.TEXCOORD.. + 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGN,........... + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ............... + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, // ........SV_TARGE + 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xf8, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // T...SHDR....@... + 0x7e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ~...Y...F. ..... + 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....Z....`...... + 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, // X....p......UU.. + 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // b...2.......e... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... + 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, // H...........F... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, // ....F~.......`.. + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ......... + 0x0b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, // ...."........... + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........B....... + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, // ............"... + 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....*........... + 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, // ................ + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // B............... + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, // .@.....?...."... + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........A....... + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x52, 0x00, 0x10, 0x00, // .@.....?....R... + 0x00, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....V...A....... + 0x06, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, // ............"... + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, // .....@.....?...? + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...?...?*....... + 0x38, 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // 8 .............. + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, // ............2... + 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // "............... + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, // .@.......@....@@ + 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, // 8............... + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // ............8... + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0a, 0xf2, 0x20, 0x10, 0x00, // ........3.... .. + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // .............@.. + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, // ...?...?...?...? + 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // >....... }; -static const uint8_t fs_texture_sdf_mtl[979] = +static const uint8_t fs_texture_sdf_mtl[904] = { - 0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, // FSH............. - 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, // ut {. float3 v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, // texcoord0;.};.st - 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ruct xlatMtlShad - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // erOutput {. flo - 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // at4 gl_FragColor - 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, // {. float4 u_pa - 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, // rams;.};.fragmen - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // utput xlatMtlMai - 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // n (xlatMtlShader - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, // Input _mtl_i [[s - 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, // tage_in]], const - 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // ant xlatMtlShade - 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // rUniform& _mtl_u - 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, // [[buffer(0)]]. - 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, // , texture2d<f - 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // loat> s_texColor - 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, // [[texture(0)]], - 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, // sampler _mtlsmp - 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, // _s_texColor [[sa - 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // mpler(0)]]).{. - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut - 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // put _mtl_o;. fl - 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // oat4 tmpvar_1 = - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // 0;. tmpvar_1 = - 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s_texColor.sampl - 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // e(_mtlsmp_s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x5f, // olor, (float2)(_ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // mtl_i.v_texcoord - 0x30, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, // 0.xy), level(_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x29, // l_u.u_params.x)) - 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ;. float tmpvar - 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // _2 = 0;. tmpvar - 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x66, 0x64, 0x78, 0x28, 0x74, // _2 = (abs(dfdx(t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, // mpvar_1.x)) + ab - 0x73, 0x28, 0x64, 0x66, 0x64, 0x79, 0x28, 0x2d, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // s(dfdy(-tmpvar_1 - 0x2e, 0x78, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, // .x)));. float e - 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, // dge0_3 = 0;. ed - 0x67, 0x65, 0x30, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, // ge0_3 = (0.5 - t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // mpvar_2);. floa - 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // t tmpvar_4 = 0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, // tmpvar_4 = cla - 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // mp (((tmpvar_1.x - 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, // - edge0_3) / (. - 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // (0.5 + tmpva - 0x72, 0x5f, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // r_2). - edge0_ - 0x33, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // 3)), 0.0, 1.0);. - 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, // _mtl_o.gl_Frag - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x63, // Color = float4(c - 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, // lamp ((tmpvar_4 - 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2a, 0x20, 0x0a, 0x20, // * (tmpvar_4 * . - 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, // (3.0 - (2.0 * - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, // tmpvar_4)). )) - 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // , 0.0, 1.0));. - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, // return _mtl_o;.} - 0x0a, 0x0a, 0x00, // ... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // .......u_params0 + 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, // Color........... + 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, // ...#include <met + 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, // al_stdlib>.#incl + 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, // ude <simd/simd.h + 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, // >..using namespa + 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ce metal;..struc + 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // t _Global.{. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, // float4 u_params0 + 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // ;.};..struct xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, // tMtlMain_out.{. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // float4 bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ragData0 [[color + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // (0)]];.};..struc + 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, // t xlatMtlMain_in + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, // .{. float3 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // texcoord0 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, // (locn1)]];.};..f + 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ragment xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ain_out xlatMtlM + 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // ain(xlatMtlMain_ + 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // in in [[stage_in + 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, // ]], constant _Gl + 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // obal& _mtl_u [[b + 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, // uffer(0)]], text + 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, // ure2d<float> s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // exColor [[textur + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, // e(0)]], sampler + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, // s_texColorSample + 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, // r [[sampler(0)]] + 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ).{. xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, // ain_out out = {} + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x32, // ;. float4 _22 + 0x36, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, // 6 = s_texColor.s + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ample(s_texColor + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, // Sampler, in.v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, // xcoord0.xy, leve + 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // l(_mtl_u.u_param + 0x73, 0x30, 0x2e, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // s0.x));. floa + 0x74, 0x20, 0x5f, 0x31, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x2e, 0x78, 0x3b, // t _193 = _226.x; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x39, 0x35, 0x20, // . float _195 + 0x3d, 0x20, 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, 0x28, 0x5f, 0x31, 0x39, 0x33, 0x29, 0x3b, 0x0a, // = fwidth(_193);. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, // out.bgfx_Fra + 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x66, 0x6c, 0x6f, // gData0 = mix(flo + 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // at4(0.0), float4 + 0x28, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x66, 0x61, // (1.0), float4(fa + 0x73, 0x74, 0x3a, 0x3a, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, // st::clamp(smooth + 0x73, 0x74, 0x65, 0x70, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x5f, 0x31, 0x39, 0x35, 0x2c, // step(0.5 - _195, + 0x20, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x5f, 0x31, 0x39, 0x35, 0x2c, 0x20, 0x5f, 0x31, 0x39, // 0.5 + _195, _19 + 0x33, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, // 3), 0.0, 1.0))); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, // . return out; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x30, 0x00, // .}....0. }; extern const uint8_t* fs_texture_sdf_pssl; extern const uint32_t fs_texture_sdf_pssl_size; diff --git a/3rdparty/bgfx/tools/texturev/fs_texture_sdf.sc b/3rdparty/bgfx/tools/texturev/fs_texture_sdf.sc index 1a0f0bbaeed..4f5aff3bd4b 100644 --- a/3rdparty/bgfx/tools/texturev/fs_texture_sdf.sc +++ b/3rdparty/bgfx/tools/texturev/fs_texture_sdf.sc @@ -1,8 +1,8 @@ $input v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/tools/texturev/makefile b/3rdparty/bgfx/tools/texturev/makefile index c5c113b7579..cf80177eab1 100644 --- a/3rdparty/bgfx/tools/texturev/makefile +++ b/3rdparty/bgfx/tools/texturev/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # -include ../../../bgfx/scripts/shader-embeded.mk +include ../../scripts/shader-embeded.mk diff --git a/3rdparty/bgfx/tools/texturev/texturev.cpp b/3rdparty/bgfx/tools/texturev/texturev.cpp index edd3b9b1a6b..5a26388c8a0 100644 --- a/3rdparty/bgfx/tools/texturev/texturev.cpp +++ b/3rdparty/bgfx/tools/texturev/texturev.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -20,11 +20,10 @@ #include <entry/entry.h> #include <entry/input.h> #include <entry/cmd.h> +#include <entry/dialog.h> #include <imgui/imgui.h> #include <bgfx_utils.h> -#include <dirent.h> - #include <tinystl/allocator.h> #include <tinystl/vector.h> namespace stl = tinystl; @@ -114,6 +113,18 @@ struct Geometry }; }; +struct Output +{ + enum Enum + { + sRGB, + scRGB, + HDR10, + + Count + }; +}; + static const InputBinding s_bindingApp[] = { { entry::Key::KeyQ, entry::Modifier::None, 1, NULL, "exit" }, @@ -213,10 +224,50 @@ static const InputBinding* s_binding[] = }; BX_STATIC_ASSERT(Binding::Count == BX_COUNTOF(s_binding) ); +static const char* s_filter = "" + "All Image Formats (bmp, dds, exr, gif, gnf, jpg, jpeg, hdr, ktx, pgm, png, ppm, psd, pvr, tga) | *.bmp *.dds *.exr *.gif *.gnf *.jpg *.jpeg *.hdr *.ktx *.pgm *.png *.ppm *.psd *.pvr *.tga\n" + "Windows Bitmap (bmp) | *.bmp\n" + "Direct Draw Surface (dds) | *.dds\n" + "OpenEXR (exr) | *.exr\n" + "Graphics Interchange Format (gif) | *.gif\n" + "JPEG Interchange Format (jpg, jpeg) | *.jpg *.jpeg\n" + "Radiance RGBE (hdr) | *.hdr\n" + "Khronos Texture (ktx) | *.ktx\n" + "Portable Graymap/Pixmap Format (pgm, ppm) | *.pgm *.ppm\n" + "Portable Network Graphics (png) | *.png\n" + "Photoshop Document (psd) | *.psd\n" + "PowerVR (pvr) | *.pvr\n" + "Truevision TGA (tga) | *.tga\n" + ; + +#if BX_PLATFORM_WINDOWS + +extern "C" void* __stdcall GetModuleHandleA(const char* _moduleName); +extern "C" uint32_t __stdcall GetModuleFileNameA(void* _module, char* _outFilePath, uint32_t _size); + +#endif // BX_PLATFORM_WINDOWS + +struct RendererTypeRemap +{ + bx::StringView name; + bgfx::RendererType::Enum type; +}; + +static RendererTypeRemap s_rendererTypeRemap[] = +{ + { "gl", bgfx::RendererType::OpenGL }, + { "d3d11", bgfx::RendererType::Direct3D11 }, + { "d3d11", bgfx::RendererType::Direct3D12 }, + { "vk", bgfx::RendererType::Vulkan }, + { "mtl", bgfx::RendererType::Metal }, +}; + struct View { View() - : m_cubeMapGeo(Geometry::Quad) + : m_rendererType(bgfx::RendererType::Count) + , m_cubeMapGeo(Geometry::Quad) + , m_outputFormat(Output::sRGB) , m_fileIndex(0) , m_scaleFn(0) , m_mip(0) @@ -586,6 +637,46 @@ struct View m_cubeMapGeo = Geometry::Enum( (m_cubeMapGeo + 1) % Geometry::Count); } } + else if (0 == bx::strCmp(_argv[1], "output") ) + { + Output::Enum outputPrev = m_outputFormat; + if (_argc >= 3) + { + if (0 == bx::strCmp(_argv[2], "srgb") ) + { + m_outputFormat = Output::sRGB; + } + else if (0 == bx::strCmp(_argv[2], "scrgb") ) + { + m_outputFormat = Output::scRGB; + } + else if (0 == bx::strCmp(_argv[2], "hdr10") ) + { + m_outputFormat = Output::HDR10; + } + } + else + { + m_outputFormat = Output::Enum( (m_outputFormat + 1) % Output::Count); + } + + if (outputPrev != m_outputFormat) + { + bgfx::TextureFormat::Enum format = bgfx::TextureFormat::RGBA8; + uint32_t formatFlag = 0; + if (Output::scRGB == m_outputFormat) + { + format = bgfx::TextureFormat::RGBA16F; + } + else if (Output::HDR10 == m_outputFormat) + { + format = bgfx::TextureFormat::RGB10A2; + formatFlag = BGFX_RESET_HDR10; + } + + bgfx::reset(m_width, m_height, BGFX_RESET_VSYNC | formatFlag, format); + } + } else if (0 == bx::strCmp(_argv[1], "help") ) { m_help ^= true; @@ -618,68 +709,84 @@ struct View void updateFileList(const bx::FilePath& _filePath) { - DIR* dir = opendir(_filePath.get() ); + bx::DirectoryReader dr; - if (NULL == dir) + if (bx::open(&dr, _filePath) ) + { + m_path = _filePath; + } + else if (bx::open(&dr, _filePath.getPath() ) ) { m_path = _filePath.getPath(); - dir = opendir(m_path.get() ); } else { - m_path = _filePath; + DBG("File path `%s` not found.", _filePath.getCPtr() ); + return; } - if (NULL != dir) + bx::Error err; + + m_fileList.clear(); + + while (err.isOk() ) { - for (dirent* item = readdir(dir); NULL != item; item = readdir(dir) ) + bx::FileInfo fi; + bx::read(&dr, fi, &err); + + if (err.isOk() + && bx::FileType::File == fi.type) { - if (0 == (item->d_type & DT_DIR) ) + bx::StringView ext = fi.filePath.getExt(); + + if (!ext.isEmpty() ) { - const bx::StringView fileName(item->d_name); - bx::StringView ext = bx::strRFind(fileName, '.'); - if (!ext.isEmpty() ) + ext.set(ext.getPtr()+1, ext.getTerm() ); + + bool supported = false; + for (uint32_t ii = 0; ii < BX_COUNTOF(s_supportedExt); ++ii) { - ext.set(ext.getPtr()+1, fileName.getTerm() ); - bool supported = false; - for (uint32_t ii = 0; ii < BX_COUNTOF(s_supportedExt); ++ii) - { - if (0 == bx::strCmpI(ext, s_supportedExt[ii]) ) - { - supported = true; - break; - } - } + const bx::StringView supportedExt(s_supportedExt[ii]); - if (supported) + if (0 == bx::strCmpI(bx::max(ext.getPtr(), ext.getTerm() - supportedExt.getLength() ), supportedExt) ) { - m_fileList.push_back(item->d_name); + supported = true; + break; } } + + if (supported) + { + const bx::StringView fileName = fi.filePath.getFileName(); + m_fileList.push_back(std::string(fileName.getPtr(), fileName.getTerm() ) ); + } } } + } + + bx::close(&dr); + + std::sort(m_fileList.begin(), m_fileList.end(), sortNameAscending); - std::sort(m_fileList.begin(), m_fileList.end(), sortNameAscending); + m_fileIndex = 0; + uint32_t idx = 0; - m_fileIndex = 0; - uint32_t idx = 0; - for (FileList::const_iterator it = m_fileList.begin(); it != m_fileList.end(); ++it, ++idx) + const bx::StringView fileName = _filePath.getFileName(); + + for (FileList::const_iterator it = m_fileList.begin(); it != m_fileList.end(); ++it, ++idx) + { + if (0 == bx::strCmpI(it->c_str(), fileName) ) { - if (0 == bx::strCmpI(it->c_str(), _filePath.getFileName() ) ) - { - // If it is case-insensitive match then might be correct one, but keep - // searching. - m_fileIndex = idx; + // If it is case-insensitive match then might be correct one, but keep + // searching. + m_fileIndex = idx; - if (0 == bx::strCmp(it->c_str(), _filePath.getFileName() ) ) - { - // If it is exact match we're done. - break; - } + if (0 == bx::strCmp(it->c_str(), fileName) ) + { + // If it is exact match we're done. + break; } } - - closedir(dir); } } @@ -693,7 +800,7 @@ struct View bx::FileReader reader; if (bx::open(&reader, filePath) ) { - bx::read(&reader, settings); + bx::read(&reader, settings, bx::ErrorAssert{}); bx::close(&reader); if (!bx::fromString(&m_transitionTime, settings.get("view/transition") ) ) @@ -710,6 +817,8 @@ struct View { m_height = 720; } + + m_rendererType = getType(settings.get("view/renderer") ); } } @@ -732,10 +841,15 @@ struct View bx::toString(tmp, sizeof(tmp), m_height); settings.set("view/height", tmp); + if (m_rendererType != bgfx::RendererType::Count) + { + settings.set("view/renderer", getName(m_rendererType) ); + } + bx::FileWriter writer; if (bx::open(&writer, filePath) ) { - bx::write(&writer, settings); + bx::write(&writer, settings, bx::ErrorAssert{}); bx::close(&writer); } } @@ -746,8 +860,10 @@ struct View typedef stl::vector<std::string> FileList; FileList m_fileList; + bgfx::RendererType::Enum m_rendererType; bgfx::TextureInfo m_textureInfo; Geometry::Enum m_cubeMapGeo; + Output::Enum m_outputFormat; uint32_t m_fileIndex; uint32_t m_scaleFn; uint32_t m_mip; @@ -796,7 +912,7 @@ struct PosUvwColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 2, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 3, bgfx::AttribType::Float) @@ -814,10 +930,10 @@ struct PosUvwColorVertex m_abgr = _abgr; } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosUvwColorVertex::ms_decl; +bgfx::VertexLayout PosUvwColorVertex::ms_layout; static uint32_t addQuad(uint16_t* _indices, uint16_t _idx0, uint16_t _idx1, uint16_t _idx2, uint16_t _idx3) { @@ -845,10 +961,10 @@ void setGeometry( { if (Geometry::Quad == _type) { - if (6 == bgfx::getAvailTransientVertexBuffer(6, PosUvwColorVertex::ms_decl) ) + if (6 == bgfx::getAvailTransientVertexBuffer(6, PosUvwColorVertex::ms_layout) ) { bgfx::TransientVertexBuffer vb; - bgfx::allocTransientVertexBuffer(&vb, 6, PosUvwColorVertex::ms_decl); + bgfx::allocTransientVertexBuffer(&vb, 6, PosUvwColorVertex::ms_layout); PosUvwColorVertex* vertex = (PosUvwColorVertex*)vb.data; const float widthf = float(_width); @@ -879,10 +995,10 @@ void setGeometry( { const uint32_t numVertices = 14; const uint32_t numIndices = 36; - if (checkAvailTransientBuffers(numVertices, PosUvwColorVertex::ms_decl, numIndices) ) + if (checkAvailTransientBuffers(numVertices, PosUvwColorVertex::ms_layout, numIndices) ) { bgfx::TransientVertexBuffer tvb; - bgfx::allocTransientVertexBuffer(&tvb, numVertices, PosUvwColorVertex::ms_decl); + bgfx::allocTransientVertexBuffer(&tvb, numVertices, PosUvwColorVertex::ms_layout); bgfx::TransientIndexBuffer tib; bgfx::allocTransientIndexBuffer(&tib, numIndices); @@ -981,7 +1097,7 @@ struct InterpolatorT { from = _value; to = _value; - duration = 0.0; + duration = 0.0f; offset = bx::getHPCounter(); } @@ -1003,7 +1119,7 @@ struct InterpolatorT const double freq = double(bx::getHPFrequency() ); int64_t now = bx::getHPCounter(); float time = (float)(double(now - offset) / freq); - float lerp = bx::clamp(time, 0.0f, duration) / duration; + float lerp = duration != 0.0f ? bx::clamp(time, 0.0f, duration) / duration : 0.0f; return lerpT(from, to, easeT(lerp) ); } @@ -1012,11 +1128,16 @@ struct InterpolatorT bool isActive() const { - const double freq = double(bx::getHPFrequency() ); - int64_t now = bx::getHPCounter(); - float time = (float)(double(now - offset) / freq); - float lerp = bx::clamp(time, 0.0f, duration) / duration; - return lerp < 1.0f; + if (0.0f < duration) + { + const double freq = double(bx::getHPFrequency() ); + int64_t now = bx::getHPCounter(); + float time = (float)(double(now - offset) / freq); + float lerp = bx::clamp(time, 0.0f, duration) / duration; + return lerp < 1.0f; + } + + return false; } }; @@ -1026,9 +1147,24 @@ typedef InterpolatorT<bx::lerp, bx::easeLinear> InterpolatorLinear; void keyBindingHelp(const char* _bindings, const char* _description) { - ImGui::TextColored(ImVec4(1.0f, 1.0f, 0.0f, 1.0f), _bindings); + ImGui::TextColored(ImVec4(1.0f, 1.0f, 0.0f, 1.0f), "%s", _bindings); ImGui::SameLine(100); - ImGui::Text(_description); + ImGui::Text("%s", _description); +} + +inline std::string replaceAll(const char* _str, const char* _from, const char* _to) +{ + std::string str = _str; + size_t startPos = 0; + const size_t fromLen = bx::strLen(_from); + const size_t toLen = bx::strLen(_to); + while ( (startPos = str.find(_from, startPos) ) != std::string::npos) + { + str.replace(startPos, fromLen, _to); + startPos += toLen; + } + + return str; } void associate() @@ -1036,10 +1172,10 @@ void associate() #if BX_PLATFORM_WINDOWS std::string str; - char exec[MAX_PATH]; - GetModuleFileNameA(GetModuleHandleA(NULL), exec, MAX_PATH); + char exec[bx::kMaxFilePath]; + GetModuleFileNameA(GetModuleHandleA(NULL), exec, sizeof(exec) ); - std::string strExec = bx::replaceAll<std::string>(exec, "\\", "\\\\"); + std::string strExec = replaceAll(exec, "\\", "\\\\"); std::string value; bx::stringPrintf(value, "@=\"\\\"%s\\\" \\\"%%1\\\"\"\r\n\r\n", strExec.c_str() ); @@ -1076,7 +1212,7 @@ void associate() if (err.isOk() ) { std::string cmd; - bx::stringPrintf(cmd, "/s %s", filePath.get() ); + bx::stringPrintf(cmd, "/s %s", filePath.getCPtr() ); bx::ProcessReader reader; if (bx::open(&reader, "regedit.exe", cmd.c_str(), &err) ) @@ -1122,31 +1258,31 @@ void help(const char* _error = NULL) { if (NULL != _error) { - fprintf(stderr, "Error:\n%s\n\n", _error); + bx::printf("Error:\n%s\n\n", _error); } - fprintf(stderr - , "texturev, bgfx texture viewer tool, version %d.%d.%d.\n" - "Copyright 2011-2018 Branimir Karadzic. All rights reserved.\n" - "License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause\n\n" + bx::printf( + "texturev, bgfx texture viewer tool, version %d.%d.%d.\n" + "Copyright 2011-2022 Branimir Karadzic. All rights reserved.\n" + "License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE\n\n" , BGFX_TEXTUREV_VERSION_MAJOR , BGFX_TEXTUREV_VERSION_MINOR , BGFX_API_VERSION ); - fprintf(stderr - , "Usage: texturev <file path>\n" + bx::printf( + "Usage: texturev <file path>\n" "\n" "Supported input file types:\n" ); for (uint32_t ii = 0; ii < BX_COUNTOF(s_supportedExt); ++ii) { - fprintf(stderr, " *.%s\n", s_supportedExt[ii]); + bx::printf(" *.%s\n", s_supportedExt[ii]); } - fprintf(stderr - , "\n" + bx::printf( + "\n" "Options:\n" " -h, --help Help.\n" " -v, --version Version information only.\n" @@ -1162,8 +1298,8 @@ int _main_(int _argc, char** _argv) if (cmdLine.hasArg('v', "version") ) { - fprintf(stderr - , "texturev, bgfx texture viewer tool, version %d.%d.%d.\n" + bx::printf( + "texturev, bgfx texture viewer tool, version %d.%d.%d.\n" , BGFX_TEXTUREV_VERSION_MAJOR , BGFX_TEXTUREV_VERSION_MINOR , BGFX_API_VERSION @@ -1190,13 +1326,16 @@ int _main_(int _argc, char** _argv) View view; cmdAdd("view", cmdView, &view); - entry::setWindowFlags(entry::WindowHandle{0}, ENTRY_WINDOW_FLAG_ASPECT_RATIO, false); - entry::setWindowSize(entry::WindowHandle{0}, view.m_width, view.m_height); + entry::setWindowFlags(entry::kDefaultWindowHandle, ENTRY_WINDOW_FLAG_ASPECT_RATIO, false); + entry::setWindowSize(entry::kDefaultWindowHandle, view.m_width, view.m_height); bgfx::Init init; - init.resolution.width = view.m_width; - init.resolution.width = view.m_height; - init.resolution.reset = BGFX_RESET_VSYNC; + init.type = view.m_rendererType; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.resolution.width = view.m_width; + init.resolution.height = view.m_height; + init.resolution.reset = BGFX_RESET_VSYNC; bgfx::init(init); @@ -1215,9 +1354,10 @@ int _main_(int _argc, char** _argv) const bgfx::Caps* caps = bgfx::getCaps(); bgfx::RendererType::Enum type = caps->rendererType; - bgfx::UniformHandle s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); + bgfx::UniformHandle s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); bgfx::UniformHandle u_mtx = bgfx::createUniform("u_mtx", bgfx::UniformType::Mat4); - bgfx::UniformHandle u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4); + bgfx::UniformHandle u_params0 = bgfx::createUniform("u_params0", bgfx::UniformType::Vec4); + bgfx::UniformHandle u_params1 = bgfx::createUniform("u_params1", bgfx::UniformType::Vec4); bgfx::ShaderHandle vsTexture = bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_texture"); bgfx::ShaderHandle fsTexture = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_texture"); @@ -1381,6 +1521,20 @@ int _main_(int _argc, char** _argv) { if (ImGui::BeginMenu("File")) { + if (ImGui::MenuItem("Open File") ) + { + bx::FilePath tmp = view.m_path; + if (openFileSelectionDialog( + tmp + , FileSelectionDialogType::Open + , "texturev: Open File" + , s_filter + ) ) + { + view.updateFileList(tmp); + } + } + if (ImGui::MenuItem("Show File List", NULL, view.m_files) ) { cmdExec("view files"); @@ -1440,6 +1594,31 @@ int _main_(int _argc, char** _argv) ImGui::EndMenu(); } + if (ImGui::BeginMenu("Output") ) + { + const bool hdrCap = (bgfx::getCaps()->supported & BGFX_CAPS_HDR10); + + if (ImGui::MenuItem("sRGB", NULL, Output::sRGB == view.m_outputFormat) ) + { + cmdExec("view output srgb"); + } + + if (hdrCap) + { + if (ImGui::MenuItem("scRGB", NULL, Output::scRGB == view.m_outputFormat) ) + { + cmdExec("view output scrgb"); + } + + if (ImGui::MenuItem("HDR10", NULL, Output::HDR10 == view.m_outputFormat) ) + { + cmdExec("view output hdr10"); + } + } + + ImGui::EndMenu(); + } + bool sdf = view.m_sdf; if (ImGui::MenuItem("SDF", NULL, &sdf) ) { @@ -1501,6 +1680,7 @@ int _main_(int _argc, char** _argv) ImGui::Separator(); ImGui::TextColored( ImVec4(0.0f, 1.0f, 1.0f, 1.0f) + , "%s" , view.m_fileList[view.m_fileIndex].c_str() ); @@ -1675,7 +1855,7 @@ int _main_(int _argc, char** _argv) if (view.m_files) { char temp[bx::kMaxFilePath]; - bx::snprintf(temp, BX_COUNTOF(temp), "%s##File", view.m_path.get() ); + bx::snprintf(temp, BX_COUNTOF(temp), "%s##File", view.m_path.getCPtr() ); ImGui::SetNextWindowSize( ImVec2(400.0f, 400.0f) @@ -1694,12 +1874,15 @@ int _main_(int _argc, char** _argv) ; ImGui::PushItemWidth(-1); - if (ImGui::ListBoxHeader("##empty", ImVec2(0.0f, listHeight) ) ) + if (ImGui::BeginListBox("##empty", ImVec2(0.0f, listHeight) ) ) { const int32_t itemCount = int32_t(view.m_fileList.size() ); - int32_t start, end; - ImGui::CalcListClipping(itemCount, itemHeight, &start, &end); + ImGuiListClipper clipper; + clipper.Begin(itemCount, itemHeight); + + int32_t start = clipper.DisplayStart; + int32_t end = clipper.DisplayEnd; const int32_t index = int32_t(view.m_fileIndex); if (index <= start) @@ -1711,24 +1894,25 @@ int _main_(int _argc, char** _argv) ImGui::SetScrollY(ImGui::GetScrollY() + (index-end+1)*itemHeight); } - ImGuiListClipper clipper(itemCount, itemHeight); - - for (int32_t pos = clipper.DisplayStart; pos < clipper.DisplayEnd; ++pos) + while (clipper.Step() ) { - ImGui::PushID(pos); - - bool isSelected = uint32_t(pos) == view.m_fileIndex; - if (ImGui::Selectable(view.m_fileList[pos].c_str(), &isSelected) ) + for (int32_t pos = clipper.DisplayStart; pos < clipper.DisplayEnd; ++pos) { - view.m_fileIndex = pos; - } + ImGui::PushID(pos); + + bool isSelected = uint32_t(pos) == view.m_fileIndex; + if (ImGui::Selectable(view.m_fileList[pos].c_str(), &isSelected) ) + { + view.m_fileIndex = pos; + } - ImGui::PopID(); + ImGui::PopID(); + } } clipper.End(); - ImGui::ListBoxFooter(); + ImGui::EndListBox(); } ImGui::PopFont(); @@ -1745,8 +1929,8 @@ int _main_(int _argc, char** _argv) ImGui::Text( "texturev, bgfx texture viewer tool " ICON_KI_WRENCH ", version %d.%d.%d.\n" - "Copyright 2011-2018 Branimir Karadzic. All rights reserved.\n" - "License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause\n" + "Copyright 2011-2022 Branimir Karadzic. All rights reserved.\n" + "License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE\n" , BGFX_TEXTUREV_VERSION_MAJOR , BGFX_TEXTUREV_VERSION_MINOR , BGFX_API_VERSION @@ -1834,7 +2018,7 @@ int _main_(int _argc, char** _argv) fp.join(view.m_fileList[view.m_fileIndex].c_str() ); bimg::Orientation::Enum orientation; - texture = loadTexture(fp.get() + texture = loadTexture(fp.getCPtr() , 0 | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP @@ -1883,7 +2067,7 @@ int _main_(int _argc, char** _argv) } bx::stringPrintf(title, "%s (%d x %d%s, mips: %d, layers %d, %s)" - , fp.get() + , fp.getCPtr() , view.m_textureInfo.width , view.m_textureInfo.height , name @@ -1897,8 +2081,7 @@ int _main_(int _argc, char** _argv) bx::stringPrintf(title, "Failed to load %s!", filePath); } - entry::WindowHandle handle = { 0 }; - entry::setWindowTitle(handle, title.c_str() ); + entry::setWindowTitle(entry::kDefaultWindowHandle, title.c_str() ); } int64_t now = bx::getHPCounter(); @@ -1974,14 +2157,11 @@ int _main_(int _argc, char** _argv) if (view.m_fit) { - float wh[3] = { float(view.m_textureInfo.width), float(view.m_textureInfo.height), 0.0f }; - float result[3]; - bx::vec3MulMtx(result, wh, orientation); - result[0] = bx::round(bx::abs(result[0]) ); - result[1] = bx::round(bx::abs(result[1]) ); - - scale.set(bx::min(float(view.m_width) / result[0] - , float(view.m_height) / result[1]) + const bx::Vec3 wh = { float(view.m_textureInfo.width), float(view.m_textureInfo.height), 0.0f }; + const bx::Vec3 result = bx::round(bx::abs(bx::mul(wh, orientation) ) ); + + scale.set(bx::min(float(view.m_width) / result.x + , float(view.m_height) / result.y) , 0.1f*view.m_transitionTime ); } @@ -2023,7 +2203,10 @@ int _main_(int _argc, char** _argv) params[1] = layer.getValue()/float(bx::max(1, view.m_textureInfo.depth >> view.m_mip) ); } - bgfx::setUniform(u_params, params); + bgfx::setUniform(u_params0, params); + + float params1[4] = { float(view.m_outputFormat), 80.0f, 0.0, 0.0f }; + bgfx::setUniform(u_params1, params1); const uint32_t textureFlags = 0 | BGFX_SAMPLER_U_CLAMP @@ -2103,7 +2286,8 @@ int _main_(int _argc, char** _argv) bgfx::destroy(checkerBoard); bgfx::destroy(s_texColor); bgfx::destroy(u_mtx); - bgfx::destroy(u_params); + bgfx::destroy(u_params0); + bgfx::destroy(u_params1); bgfx::destroy(textureProgram); bgfx::destroy(textureArrayProgram); bgfx::destroy(textureCubeProgram); diff --git a/3rdparty/bgfx/tools/texturev/vs_texture.bin.h b/3rdparty/bgfx/tools/texturev/vs_texture.bin.h index 9f9ee0d9644..3000b297f9a 100644 --- a/3rdparty/bgfx/tools/texturev/vs_texture.bin.h +++ b/3rdparty/bgfx/tools/texturev/vs_texture.bin.h @@ -1,229 +1,264 @@ -static const uint8_t vs_texture_glsl[396] = +static const uint8_t vs_texture_glsl[400] = { - 0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. - 0x00, 0x00, 0x01, 0x00, 0x63, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // ....c...attribut - 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0; - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // .attribute vec3 - 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr - 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // ibute vec3 a_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // coord0;.varying - 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec3 v_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform - 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ - 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.zw = vec2(0.0, - 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_ - 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1.xy = a_positio - 0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // n.xy;. gl_Posit - 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, // ion = (u_modelVi - 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_ - 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // 1);. v_texcoord - 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // 0 = a_texcoord0; - 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, // . v_color0 = a_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // color0;.}... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........c...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec3 a_position;. + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, // attribute vec3 a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // _texcoord0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ing vec4 v_color + 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // 0;.varying vec3 + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // v_texcoord0;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode + 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // main ().{. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, // var_1.zw = vec2( + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 0.0, 1.0);. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // var_1.xy = a_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, // ition.xy;. gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // osition = (u_mod + 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // elViewProj * tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // var_1);. v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // oord0 = a_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, // rd0;. v_color0 + 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // = a_color0;.}... }; -static const uint8_t vs_texture_spv[1266] = +static const uint8_t vs_texture_essl[442] = { - 0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. - 0x00, 0x00, 0x04, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, // ..........#..... - 0x07, 0x00, 0x08, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, // ............GLSL - 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, // .std.450........ - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, // ....main....=... - 0x41, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, // A...D...O...R... - 0x56, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, // V............... - 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... - 0x05, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, // ....%...$Global. - 0x06, 0x00, 0x07, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, // ....%.......u_mo - 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, // delViewProj..... - 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, // '...........=... - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_color0........ - 0x41, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // A...a_position.. - 0x05, 0x00, 0x05, 0x00, 0x44, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ....D...a_texcoo - 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // rd0.....O...@ent - 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, // ryPointOutput.gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, // _Position....... - 0x52, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // R...@entryPointO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // utput.v_color0.. - 0x05, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....V...@entryPo - 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // intOutput.v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // oord0...H...%... - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, // ........H...%... - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // ....#.......H... - 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // %............... - 0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // G...%.......G... - 0x27, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // '...".......G... - 0x3d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // =...........G... - 0x41, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // A...........G... - 0x44, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // D...........G... - 0x4f, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // O...........G... - 0x52, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // R...........G... - 0x56, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, // V............... - 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....!........... - 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ........ ....... - 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ................ - 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, // ................ - 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // .... .......+... - 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, // ...........?+... - 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // ............+... - 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, // ................ - 0x24, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, // $............... - 0x25, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, // %...$... ...&... - 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, // ....%...;...&... - 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, // '....... ...(... - 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, // ....$... ...<... - 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, // ........;...<... - 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, // =....... ...@... - 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, // ........;...@... - 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, // A.......;...@... - 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, // D....... ...N... - 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, // ........;...N... - 0x4f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, // O.......;...N... - 0x52, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, // R....... ...U... - 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, // ........;...U... - 0x56, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, // V.......6....... - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, // ................ - 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, // ....=.......>... - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // =...=.......B... - 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, // A...=.......E... - 0x44, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, // D...Q.......o... - 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // B.......Q....... - 0x70, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, // p...B.......P... - 0x07, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, // ....q...o...p... - 0x1a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, // ........A...(... - 0x72, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // r...'.......=... - 0x24, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, // $...s...r....... - 0x07, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, // ....t...q...s... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, // Q.......{...t... - 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, // ............|... - 0x7b, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, // {...R........... - 0x7c, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // |...t.......>... - 0x4f, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, // O.......>...R... - 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, // >...>...V...E... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // bute highp vec3 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // ibute highp vec3 + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, // a_texcoord0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, // ng highp vec3 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // rm highp mat4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, // modelViewProj;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // zw = vec2(0.0, 1 + 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // .0);. tmpvar_1. + 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, // xy = a_position. + 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // xy;. gl_Positio + 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // n = (u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, // Proj * tmpvar_1) + 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // ;. v_texcoord0 + 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, // = a_texcoord0;. + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, // v_color0 = a_co + 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // lor0;.}... +}; +static const uint8_t vs_texture_spv[1234] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........p....... + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, // 6...:...=...H... + 0x4b, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // K...O........... + 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, // ........%...Unif + 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, // ormBlock........ + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // %.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x27, 0x00, 0x00, 0x00, // iewProj.....'... + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........6...a_co + 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x00, 0x00, // lor0........:... + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_position...... + 0x3d, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // =...a_texcoord0. + 0x05, 0x00, 0x0a, 0x00, 0x48, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....H...@entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // intOutput.gl_Pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x4b, 0x00, 0x00, 0x00, // ition.......K... + 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu + 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // t.v_color0...... + 0x4f, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // O...@entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord + 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0...H...%....... + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...%....... + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, // #.......H...%... + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, // ............G... + 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, // %.......G...'... + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, // ".......G...'... + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, // !.......G...6... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, // ........G...:... + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // ........G...=... + 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, // ........G...H... + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, // ........G...K... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, // ........G...O... + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, // !............... + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // .... ........... + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, // ................ + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, // ................ + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, // .......+....... + 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, // .......?+....... + 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, // ........+....... + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, // ............$... + 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, // ............%... + 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // $... ...&....... + 0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, // %...;...&...'... + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ...(....... + 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // $... ...5....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, // ....;...5...6... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...9....... + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, // ....;...9...:... + 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, // ....;...9...=... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...G....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, // ....;...G...H... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, // ....;...G...K... + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...N....... + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, // ....;...N...O... + 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6........... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, // =.......7...6... + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, // =.......;...:... + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, // =.......>...=... + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // Q.......j...;... + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, // ....Q.......k... + 0x3b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // ;.......P....... + 0x6c, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, // l...j...k....... + 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, // ....A...(...m... + 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, // '.......=...$... + 0x6e, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // n...m........... + 0x6f, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // o...l...n...>... + 0x48, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4b, 0x00, 0x00, 0x00, // H...o...>...K... + 0x37, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, // 7...>...O...>... 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // ....8........... 0x40, 0x00, // @. }; -static const uint8_t vs_texture_dx9[333] = +static const uint8_t vs_texture_dx9[337] = { - 0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. - 0x00, 0x00, 0x04, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, // ....$.........!. - 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // CTAB....W....... - 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // ............P... - 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // 0...........@... - 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // ....u_modelViewP - 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, // roj............. - 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, // ....vs_3_0.Micro - 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, // soft (R) HLSL Sh - 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, // ader Compiler 10 - 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, // .1.............. - 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, // ................ - 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, // ................ - 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x07, 0xe0, 0x05, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, // ..........U..... - 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, // ................ - 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, // ................ - 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, // ................ - 0x02, 0x00, 0x07, 0xe0, 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ........$....... + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x07, 0xe0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, // ................ + 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, // ................ + 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x07, 0xe0, 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, // ................ + 0x00, // . }; -static const uint8_t vs_texture_dx11[586] = +static const uint8_t vs_texture_dx11[590] = { - 0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. - 0x00, 0x00, 0x04, 0x00, 0x18, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xa1, 0x0d, 0xa3, 0xb8, // ........DXBC.... - 0x34, 0x19, 0x93, 0x74, 0x94, 0x6c, 0x61, 0x11, 0xe8, 0x09, 0x5f, 0x2c, 0x01, 0x00, 0x00, 0x00, // 4..t.la..._,.... - 0x18, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, // ........,....... - 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....ISGNh....... - 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....P........... - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, // ............V... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x07, 0x03, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._........... - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // ............COLO - 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, // R.POSITION.TEXCO - 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ORD.OSGNl....... - 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....P........... - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....b........... - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, // ............SV_P - 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, // OSITION.COLOR.TE - 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x00, 0x01, 0x00, 0x00, // XCOORD..SHDR.... - 0x40, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, // @...@...Y...F. . - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........_....... - 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ...._...2....... - 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, // _...r.......g... - 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // . ..........e... - 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, // . ......e...r .. - 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, // ....h.......8... - 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........V....... - 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, // F. .........2... - 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F. ..... - 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ............F... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ......... ...... - 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // F.......F. ..... - 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....6.... ...... - 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, // F.......6...r .. - 0x02, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, // ....F.......>... - 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ........@. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ............DXBC + 0xa1, 0x0d, 0xa3, 0xb8, 0x34, 0x19, 0x93, 0x74, 0x94, 0x6c, 0x61, 0x11, 0xe8, 0x09, 0x5f, 0x2c, // ....4..t.la..._, + 0x01, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... + 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, // ........ISGNh... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // V............... + 0x01, 0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........_....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, // ................ + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // COLOR.POSITION.T + 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // EXCOORD.OSGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@...@...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, // ........_...2... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._...r....... + 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // g.... .......... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // r ......h....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. + 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... + 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // r ......F....... + 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // >...........@. }; -static const uint8_t vs_texture_mtl[775] = +static const uint8_t vs_texture_mtl[850] = { - 0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xf4, 0x02, // VSH............. - 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ut {. float4 a_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // color0 [[attribu - 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // te(0)]];. float - 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, // 3 a_position [[a - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // ttribute(1)]];. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // float3 a_texcoo - 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // rd0 [[attribute( - 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // 2)]];.};.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut - 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, // put {. float4 g - 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, // l_Position [[pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // ition]];. float - 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // 4 v_color0;. fl - 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // oat3 v_texcoord0 - 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, // {. float4x4 u_ - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, // modelViewProj;.} - 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.vertex xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, // ShaderOutput xla - 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // tMtlMain (xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, // lShaderInput _mt - 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, // l_i [[stage_in]] - 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // , constant xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, // tlShaderUniform& - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, // _mtl_u [[buffer - 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // (0)]]).{. xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, // tlShaderOutput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // mtl_o;. float4 - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_1 = 0;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x66, 0x6c, // tmpvar_1.zw = fl - 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // oat2(0.0, 1.0);. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, // tmpvar_1.xy = - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // _mtl_i.a_positio - 0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, // n.xy;. _mtl_o.g - 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, // l_Position = (_m + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x33, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 3 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // put_v_texcoord0 + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, // . float4 gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // osition [[positi + 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // on]];.};..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, // xlatMtlMain_in. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, // {. float4 a_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // olor0 [[attribut + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // e(0)]];. floa + 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, // t3 a_position [[ + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // attribute(1)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // float3 a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // coord0 [[attribu + 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, // te(2)]];.};..ver + 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // tex xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, // out xlatMtlMain( + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, // xlatMtlMain_in i + 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, // n [[stage_in]], + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // constant _Global + 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, // r(0)]]).{. xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, // atMtlMain_out ou + 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // t = {};. out. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // gl_Position = _m 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView - 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, // Proj * tmpvar_1) - 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, // ;. _mtl_o.v_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, // coord0 = _mtl_i. - 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // a_texcoord0;. _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // mtl_o.v_color0 = - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // _mtl_i.a_color0 - 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // ;. return _mtl_ - 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // o;.}... + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, // Proj * float4(in + 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x2c, 0x20, // .a_position.xy, + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, // 0.0, 1.0);. o + 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // ut._entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, // tput_v_color0 = + 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // in.a_color0;. + 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, // out._entryPoint + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // Output_v_texcoor + 0x64, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // d0 = in.a_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, // rd0;. return + 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // out;.}.......... + 0x40, 0x00, // @. }; extern const uint8_t* vs_texture_pssl; extern const uint32_t vs_texture_pssl_size; diff --git a/3rdparty/bgfx/tools/texturev/vs_texture.sc b/3rdparty/bgfx/tools/texturev/vs_texture.sc index e5a1df84083..54267951770 100644 --- a/3rdparty/bgfx/tools/texturev/vs_texture.sc +++ b/3rdparty/bgfx/tools/texturev/vs_texture.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0, a_color0 $output v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/tools/texturev/vs_texture_cube.bin.h b/3rdparty/bgfx/tools/texturev/vs_texture_cube.bin.h index e66ba7320db..9dd901f195d 100644 --- a/3rdparty/bgfx/tools/texturev/vs_texture_cube.bin.h +++ b/3rdparty/bgfx/tools/texturev/vs_texture_cube.bin.h @@ -1,232 +1,266 @@ -static const uint8_t vs_texture_cube_glsl[382] = +static const uint8_t vs_texture_cube_glsl[386] = { - 0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. - 0x00, 0x00, 0x01, 0x00, 0x55, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // ....U...attribut - 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0; - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // .attribute vec3 - 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr - 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // ibute vec3 a_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // coord0;.varying - 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec3 v_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform - 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ - 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 1.w = 1.0;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, // var_1.xyz = a_po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // sition;. gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // ition = (u_model - 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ViewProj * tmpva - 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // r_1);. v_texcoo - 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // rd0 = a_texcoord - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, // 0;. v_color0 = - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // a_color0;.}... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........U...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec3 a_position;. + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, // attribute vec3 a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // _texcoord0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ing vec4 v_color + 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // 0;.varying vec3 + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // v_texcoord0;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode + 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // main ().{. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_1.w = 1.0;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // a_position;. gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _Position = (u_m + 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, // odelViewProj * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, // mpvar_1);. v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // xcoord0 = a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // oord0;. v_color + 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, // 0 = a_color0;.}. + 0x0a, 0x00, // .. }; -static const uint8_t vs_texture_cube_spv[1270] = +static const uint8_t vs_texture_cube_essl[428] = { - 0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. - 0x00, 0x00, 0x04, 0x00, 0xc4, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, // ..........#..... - 0x07, 0x00, 0x08, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, // ............GLSL - 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, // .std.450........ - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // ....main....<... - 0x40, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, // @...C...N...Q... - 0x55, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, // U............... - 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... - 0x05, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, // ....$...$Global. - 0x06, 0x00, 0x07, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, // ....$.......u_mo - 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, // delViewProj..... - 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x00, 0x00, // &...........<... - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_color0........ - 0x40, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // @...a_position.. - 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ....C...a_texcoo - 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // rd0.....N...@ent - 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, // ryPointOutput.gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, // _Position....... - 0x51, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // Q...@entryPointO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // utput.v_color0.. - 0x05, 0x00, 0x0a, 0x00, 0x55, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....U...@entryPo - 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // intOutput.v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, // oord0...H...$... - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, // ........H...$... - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // ....#.......H... - 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // $............... - 0x47, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // G...$.......G... - 0x26, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // &...".......G... - 0x3c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // <...........G... - 0x40, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // @...........G... - 0x43, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // C...........G... - 0x4e, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // N...........G... - 0x51, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // Q...........G... - 0x55, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, // U............... - 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....!........... - 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ........ ....... - 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ................ - 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, // ................ - 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // .... .......+... - 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, // ...........?+... - 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, // ................ - 0x23, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, // #............... - 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // $...#... ...%... - 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // ....$...;...%... - 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, // &....... ...'... - 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, // ....#... ...;... - 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, // ........;...;... - 0x3c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, // <....... ...?... - 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, // ........;...?... - 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, // @.......;...?... - 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, // C....... ...M... - 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, // ........;...M... - 0x4e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, // N.......;...M... - 0x51, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, // Q....... ...T... - 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, // ........;...T... - 0x55, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, // U.......6....... - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, // ................ - 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, // ....=.......=... - 0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, // <...=.......A... - 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, // @...=.......D... - 0x43, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, // C...Q.......m... - 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // A.......Q....... - 0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // n...A.......Q... - 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....o...A....... - 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, // P.......p...m... - 0x6e, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // n...o.......A... - 0x27, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, // '...q...&....... - 0x3d, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, // =...#...r...q... - 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, // ........s...p... - 0x72, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, // r...Q.......z... - 0x73, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, // s............... - 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, // {...z...R....... - 0x99, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....{...s....... - 0x3e, 0x00, 0x03, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // >...N.......>... - 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, // Q...=...>...U... - 0x44, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, // D.......8....... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // bute highp vec3 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // ibute highp vec3 + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, // a_texcoord0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, // ng highp vec3 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // rm highp mat4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, // modelViewProj;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // w = 1.0;. tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // r_1.xyz = a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // tion;. gl_Posit + 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, // ion = (u_modelVi + 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_ + 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // 1);. v_texcoord + 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // 0 = a_texcoord0; + 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, // . v_color0 = a_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // color0;.}... +}; +static const uint8_t vs_texture_cube_spv[1238] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........o....... + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x35, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, // 5...9...<...G... + 0x4a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // J...N........... + 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x24, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, // ........$...Unif + 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, // ormBlock........ + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // $.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, // iewProj.....&... + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........5...a_co + 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, // lor0........9... + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_position...... + 0x3c, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // <...a_texcoord0. + 0x05, 0x00, 0x0a, 0x00, 0x47, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....G...@entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // intOutput.gl_Pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x4a, 0x00, 0x00, 0x00, // ition.......J... + 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu + 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // t.v_color0...... + 0x4e, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // N...@entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord + 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0...H...$....... + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...$....... + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, // #.......H...$... + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, // ............G... + 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, // $.......G...&... + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, // ".......G...&... + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, // !.......G...5... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, // ........G...9... + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, // ........G...<... + 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, // ........G...G... + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, // ........G...J... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, // ........G...N... + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, // !............... + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // .... ........... + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, // ................ + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, // ................ + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, // .......+....... + 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, // .......?+....... + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, // ............#... + 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, // ............$... + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // #... ...%....... + 0x24, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, // $...;...%...&... + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ...'....... + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // #... ...4....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, // ....;...4...5... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...8....... + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, // ....;...8...9... + 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // ....;...8...<... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...F....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, // ....;...F...G... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, // ....;...F...J... + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...M....... + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, // ....;...M...N... + 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6........... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, // =.......6...5... + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, // =.......:...9... + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // =.......=...<... + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, // Q.......h...:... + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, // ....Q.......i... + 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // :.......Q....... + 0x6a, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, // j...:.......P... + 0x07, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, // ....k...h...i... + 0x6a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, // j.......A...'... + 0x6c, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // l...&.......=... + 0x23, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, // #...m...l....... + 0x07, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, // ....n...k...m... + 0x3e, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // >...G...n...>... + 0x4a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4e, 0x00, 0x00, 0x00, // J...6...>...N... + 0x3d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, // =.......8....... 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. }; -static const uint8_t vs_texture_cube_dx9[353] = +static const uint8_t vs_texture_cube_dx9[357] = { - 0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. - 0x00, 0x00, 0x04, 0x00, 0x38, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, // ....8.........!. - 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // CTAB....W....... - 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // ............P... - 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // 0...........@... - 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // ....u_modelViewP - 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, // roj............. - 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, // ....vs_3_0.Micro - 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, // soft (R) HLSL Sh - 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, // ader Compiler 10 - 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, // .1.............. - 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, // ................ - 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, // ................ - 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x07, 0xe0, 0x05, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, // ..........U..... - 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, // ................ - 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xaa, 0x90, // ................ - 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, // ................ - 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, // ................ - 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x07, 0xe0, 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, // ................ - 0x00, // . + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ........8....... + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x07, 0xe0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, // ................ + 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, // ................ + 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x07, 0xe0, 0x02, 0x00, 0xe4, 0x90, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, // ..... }; -static const uint8_t vs_texture_cube_dx11[626] = +static const uint8_t vs_texture_cube_dx11[630] = { - 0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. - 0x00, 0x00, 0x04, 0x00, 0x40, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x52, 0x1b, 0xf0, 0x79, // ....@...DXBCR..y - 0x87, 0x20, 0xa0, 0x2d, 0xbc, 0x22, 0x0f, 0xb3, 0x05, 0x0c, 0xbf, 0x92, 0x01, 0x00, 0x00, 0x00, // . .-.".......... - 0x40, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, // @.......,....... - 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....ISGNh....... - 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....P........... - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, // ............V... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x07, 0x07, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._........... - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // ............COLO - 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, // R.POSITION.TEXCO - 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ORD.OSGNl....... - 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....P........... - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....b........... - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, // ............SV_P - 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, // OSITION.COLOR.TE - 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x28, 0x01, 0x00, 0x00, // XCOORD..SHDR(... - 0x40, 0x00, 0x01, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, // @...J...Y...F. . - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........_....... - 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ...._...r....... - 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, // _...r.......g... - 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // . ..........e... - 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, // . ......e...r .. - 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, // ....h.......8... - 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........V....... - 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, // F. .........2... - 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F. ..... - 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ............F... - 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....2........... - 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, // F. ............. - 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // ....F........... - 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // . ......F....... - 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // F. .........6... - 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // . ......F....... - 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, // 6...r ......F... - 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // ....>........... - 0x40, 0x00, // @. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ........@...DXBC + 0x52, 0x1b, 0xf0, 0x79, 0x87, 0x20, 0xa0, 0x2d, 0xbc, 0x22, 0x0f, 0xb3, 0x05, 0x0c, 0xbf, 0x92, // R..y. .-."...... + 0x01, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ....@.......,... + 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, // ........ISGNh... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // V............... + 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........_....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, // ................ + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // COLOR.POSITION.T + 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // EXCOORD.OSGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x28, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // (...@...J...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, // ........_...r... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._...r....... + 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // g.... .......... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // r ......h....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // F.......2....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....F. ......... + 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6...r ...... + 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, // F.......>....... + 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. }; -static const uint8_t vs_texture_cube_mtl[759] = +static const uint8_t vs_texture_cube_mtl[842] = { - 0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xe4, 0x02, // VSH............. - 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ut {. float4 a_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // color0 [[attribu - 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // te(0)]];. float - 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, // 3 a_position [[a - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // ttribute(1)]];. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // float3 a_texcoo - 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // rd0 [[attribute( - 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // 2)]];.};.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut - 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, // put {. float4 g - 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, // l_Position [[pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // ition]];. float - 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // 4 v_color0;. fl - 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // oat3 v_texcoord0 - 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, // {. float4x4 u_ - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, // modelViewProj;.} - 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.vertex xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, // ShaderOutput xla - 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // tMtlMain (xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, // lShaderInput _mt - 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, // l_i [[stage_in]] - 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // , constant xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, // tlShaderUniform& - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, // _mtl_u [[buffer - 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // (0)]]).{. xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, // tlShaderOutput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // mtl_o;. float4 - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_1 = 0;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, // tmpvar_1.w = 1.0 - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, // ;. tmpvar_1.xyz - 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // = _mtl_i.a_posi - 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, // tion;. _mtl_o.g - 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, // l_Position = (_m + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x33, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 3 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // put_v_texcoord0 + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, // . float4 gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // osition [[positi + 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // on]];.};..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, // xlatMtlMain_in. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, // {. float4 a_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // olor0 [[attribut + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // e(0)]];. floa + 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, // t3 a_position [[ + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // attribute(1)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // float3 a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // coord0 [[attribu + 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, // te(2)]];.};..ver + 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // tex xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, // out xlatMtlMain( + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, // xlatMtlMain_in i + 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, // n [[stage_in]], + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // constant _Global + 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, // r(0)]]).{. xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, // atMtlMain_out ou + 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // t = {};. out. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // gl_Position = _m 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView - 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, // Proj * tmpvar_1) - 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, // ;. _mtl_o.v_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, // coord0 = _mtl_i. - 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // a_texcoord0;. _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // mtl_o.v_color0 = - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // _mtl_i.a_color0 - 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // ;. return _mtl_ - 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // o;.}... + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, // Proj * float4(in + 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, // .a_position, 1.0 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, // );. out._entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // olor0 = in.a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, // or0;. out._en + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, // tryPointOutput_v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, // _texcoord0 = in. + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // a_texcoord0;. + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // return out;.}.. + 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ........@. }; extern const uint8_t* vs_texture_cube_pssl; extern const uint32_t vs_texture_cube_pssl_size; diff --git a/3rdparty/bgfx/tools/texturev/vs_texture_cube.sc b/3rdparty/bgfx/tools/texturev/vs_texture_cube.sc index e5d82b89de7..073c7de47ef 100644 --- a/3rdparty/bgfx/tools/texturev/vs_texture_cube.sc +++ b/3rdparty/bgfx/tools/texturev/vs_texture_cube.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0, a_color0 $output v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> |