| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef FLUTTER_LIB_GPU_FIXTURES_H_ | |
| #define FLUTTER_LIB_GPU_FIXTURES_H_ | |
| #include "impeller/core/shader_types.h" | |
| struct FlutterGPUUnlitVertexShader { | |
| struct PerVertexData { | |
| impeller::Point position; // (offset 0, size 8) | |
| }; // struct PerVertexData (size 8) | |
| static constexpr auto kInputPosition = impeller::ShaderStageIOSlot{ | |
| // position | |
| "position", // name | |
| 0u, // attribute location | |
| 0u, // attribute set | |
| 0u, // attribute binding | |
| impeller::ShaderType::kFloat, // type | |
| 32u, // bit width of type | |
| 2u, // vec size | |
| 1u, // number of columns | |
| 0u, // offset for interleaved layout | |
| }; | |
| static constexpr std::array<const impeller::ShaderStageIOSlot*, 1> | |
| kAllShaderStageInputs = { | |
| &kInputPosition, // position | |
| }; | |
| static constexpr auto kInterleavedLayout = impeller::ShaderStageBufferLayout{ | |
| sizeof(PerVertexData), // stride for interleaved layout | |
| 0u, // attribute binding | |
| }; | |
| static constexpr std::array<const impeller::ShaderStageBufferLayout*, 1> | |
| kInterleavedBufferLayout = {&kInterleavedLayout}; | |
| }; | |
| constexpr unsigned int kFlutterGPUUnlitVertIPLRLength = 856; | |
| extern unsigned char kFlutterGPUUnlitVertIPLR[]; | |
| constexpr unsigned int kFlutterGPUUnlitFragIPLRLength = 556; | |
| extern unsigned char kFlutterGPUUnlitFragIPLR[]; | |
| struct FlutterGPUTextureVertexShader { | |
| struct PerVertexData { | |
| impeller::Vector3 position; // (offset 0, size 12) | |
| impeller::Point texture_coords; // (offset 12, size 8) | |
| impeller::Vector4 color; // (offset 20, size 16) | |
| }; // struct PerVertexData (size 36) | |
| static constexpr auto kInputTextureCoords = impeller::ShaderStageIOSlot{ | |
| // texture_coords | |
| "texture_coords", // name | |
| 1u, // attribute location | |
| 0u, // attribute set | |
| 0u, // attribute binding | |
| impeller::ShaderType::kFloat, // type | |
| 32u, // bit width of type | |
| 2u, // vec size | |
| 1u, // number of columns | |
| 12u, // offset for interleaved layout | |
| }; | |
| static constexpr auto kInputColor = impeller::ShaderStageIOSlot{ | |
| // color | |
| "color", // name | |
| 2u, // attribute location | |
| 0u, // attribute set | |
| 0u, // attribute binding | |
| impeller::ShaderType::kFloat, // type | |
| 32u, // bit width of type | |
| 4u, // vec size | |
| 1u, // number of columns | |
| 20u, // offset for interleaved layout | |
| }; | |
| static constexpr auto kInputPosition = impeller::ShaderStageIOSlot{ | |
| // position | |
| "position", // name | |
| 0u, // attribute location | |
| 0u, // attribute set | |
| 0u, // attribute binding | |
| impeller::ShaderType::kFloat, // type | |
| 32u, // bit width of type | |
| 3u, // vec size | |
| 1u, // number of columns | |
| 0u, // offset for interleaved layout | |
| }; | |
| static constexpr std::array<const impeller::ShaderStageIOSlot*, 3> | |
| kAllShaderStageInputs = { | |
| &kInputTextureCoords, // texture_coords | |
| &kInputColor, // color | |
| &kInputPosition, // position | |
| }; | |
| static constexpr auto kInterleavedLayout = impeller::ShaderStageBufferLayout{ | |
| sizeof(PerVertexData), // stride for interleaved layout | |
| 0u, // attribute binding | |
| }; | |
| static constexpr std::array<const impeller::ShaderStageBufferLayout*, 1> | |
| kInterleavedBufferLayout = {&kInterleavedLayout}; | |
| }; | |
| constexpr unsigned int kFlutterGPUTextureVertIPLRLength = 920; | |
| extern unsigned char kFlutterGPUTextureVertIPLR[]; | |
| constexpr unsigned int kFlutterGPUTextureFragIPLRLength = 800; | |
| extern unsigned char kFlutterGPUTextureFragIPLR[]; | |
| #endif // FLUTTER_LIB_GPU_FIXTURES_H_ |