| // 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. | |
| namespace impeller.fb.shaderbundle; | |
| enum ShaderStage:byte { | |
| kVertex, | |
| kFragment, | |
| kCompute, | |
| } | |
| // The subset of impeller::ShaderType that may be used for vertex attributes. | |
| enum InputDataType:uint32 { | |
| kBoolean, | |
| kSignedByte, | |
| kUnsignedByte, | |
| kSignedShort, | |
| kUnsignedShort, | |
| kSignedInt, | |
| kUnsignedInt, | |
| kSignedInt64, | |
| kUnsignedInt64, | |
| kFloat, | |
| kDouble, | |
| } | |
| // The subset of impeller::ShaderType that may be used for uniform bindings. | |
| enum UniformDataType:uint32 { | |
| kBoolean, | |
| kSignedByte, | |
| kUnsignedByte, | |
| kSignedShort, | |
| kUnsignedShort, | |
| kSignedInt, | |
| kUnsignedInt, | |
| kSignedInt64, | |
| kUnsignedInt64, | |
| kHalfFloat, | |
| kFloat, | |
| kDouble, | |
| kSampledImage, | |
| } | |
| // This contains the same attribute reflection data as | |
| // impeller::ShaderStageIOSlot. | |
| table ShaderInput { | |
| name: string; | |
| location: uint64; | |
| set: uint64; | |
| binding: uint64; | |
| type: InputDataType; | |
| bit_width: uint64; | |
| vec_size: uint64; | |
| columns: uint64; | |
| offset: uint64; | |
| } | |
| table ShaderUniformStructField { | |
| name: string; | |
| type: UniformDataType; | |
| offset_in_bytes: uint64; | |
| element_size_in_bytes: uint64; | |
| total_size_in_bytes: uint64; | |
| // Zero indicates that this field is not an array element. | |
| array_elements: uint64; | |
| } | |
| table ShaderUniformStruct { | |
| name: string; | |
| ext_res_0: uint64; | |
| set: uint64; | |
| binding: uint64; | |
| size_in_bytes: uint64; // Includes all alignment padding. | |
| fields: [ShaderUniformStructField]; | |
| } | |
| table ShaderUniformTexture { | |
| name: string; | |
| ext_res_0: uint64; | |
| set: uint64; | |
| binding: uint64; | |
| } | |
| table BackendShader { | |
| stage: ShaderStage; | |
| entrypoint: string; | |
| inputs: [ShaderInput]; | |
| uniform_structs: [ShaderUniformStruct]; | |
| uniform_textures: [ShaderUniformTexture]; | |
| shader: [ubyte]; | |
| } | |
| table Shader { | |
| name: string; | |
| metal_ios: BackendShader; | |
| metal_desktop: BackendShader; | |
| opengl_es: BackendShader; | |
| opengl_desktop: BackendShader; | |
| vulkan: BackendShader; | |
| } | |
| table ShaderBundle { | |
| shaders: [Shader]; | |
| } | |
| root_type ShaderBundle; | |
| file_identifier "IPSB"; |