带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(4)

简介: 带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(4)
+关注继续查看

带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(3)https://developer.aliyun.com/article/1340789?groupCode=taobaotech


solid_fill.vert.metal:

uniform FrameInfo { mat4 mvp;
vec4 color;
} frame_info;
using namespace metal; struct FrameInfo
{
float4x4 mvp; float4 color;
};
struct solid_fill_vertex_main_out
{
float4 color [[user(locn0)]]; float4 gl_Position [[position]];
};

struct solid_fill_vertex_main_in
{
float2 vertices [[attribute(0)]];
};
vertex solid_fill_vertex_main_out solid_fill_vertex_main( solid_fill_vertex_main_in in [[stage_in]],
constant FrameInfo& frame_info [[buffer(0)]])
{
solid_fill_vertex_main_out out = {};
out.gl_Position = frame_info.mvp * float4(in.vertices, 0.0, 1.0); out.color = frame_info.color;
return out;
}

 

solid_fill.vert.h:

struct SolidFillVertexShader {
    // ===========================================================================
    // Stage Info ================================================================
    // ===========================================================================
static constexpr std::string_view kLabel = "SolidFill";
static constexpr std::string_view kEntrypointName = "solid_fill_vertex_main";
static constexpr ShaderStage kShaderStage = ShaderStage::kVertex;
    // ===========================================================================
    // Struct Definitions ========================================================
    // ===========================================================================

struct PerVertexData {
Point vertices; // (offset 0, size 8)
}; // struct PerVertexData (size 8) 
struct FrameInfo {
Matrix mvp; // (offset 0, size 64)
Vector4 color; // (offset 64, size 16)
Padding<48> _PADDING_; // (offset 80, size 48)
}; // struct FrameInfo (size 128) 21
    // ===========================================================================
    // Stage Uniform & Storage Buffers ===========================================
    // ===========================================================================

static constexpr auto kResourceFrameInfo = ShaderUniformSlot<FrameInfo> { // FrameInfo
"FrameInfo",    // name
0u, // binding
    };

    // ===========================================================================
    // Stage Inputs ==============================================================
    // ===========================================================================

static constexpr auto kInputVertices = ShaderStageIOSlot { // vertices
"vertices", // name
0u, // attribute location
0u, // attribute set
0u, // attribute binding
ShaderType::kFloat, // type
32u, // bit width of type
2u, // vec size
1u  // number of columns 44 };

static constexpr std::array<const ShaderStageIOSlot*, 1> kAllShaderStageInputs = {
&kInputVertices, // vertices 48 };

    // ===========================================================================
    // Stage Outputs =============================================================
    // ===========================================================================
static constexpr auto kOutputColor = ShaderStageIOSlot { // color
"color",    // name
0u, // attribute location
0u, // attribute set
0u, // attribute binding
ShaderType::kFloat, // type
32u, // bit width of type
4u, // vec size
1u  // number of columns 
};
static constexpr std::array<const ShaderStageIOSlot*, 1> kAllShaderStageOutputs = {
&kOutputColor, // color 
};

    // ===========================================================================
    // Resource Binding Utilities ================================================
    // ===========================================================================
/// Bind uniform buffer for resource named FrameInfo.
static bool BindFrameInfo(Command& command, BufferView view) {
return command.BindResource(ShaderStage::kVertex, kResourceFrameInfo, std::move(view));
}
}; // struct SolidFillVertexShader


带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(5)https://developer.aliyun.com/article/1340787?groupCode=taobaotech

相关文章
|
3月前
|
JSON Android开发 iOS开发
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(1)
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(1)
|
3月前
|
API iOS开发 C++
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(2)
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(2)
|
3月前
|
C++ iOS开发
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(3)
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(3)
|
3月前
|
存储
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(5)
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(5)
|
3月前
|
存储 异构计算
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(6)
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(6)
|
3月前
|
移动开发 小程序 weex
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(7)
带你读《2022技术人的百宝黑皮书》——Flutter 新一代图形渲染器 Impeller(7)
|
7月前
|
缓存 Dart iOS开发
|
7月前
|
缓存 Dart 定位技术
闲鱼技术2022年度白皮书-Flutter主题-节日献礼:Flutter 图片库重磅开源!(中)
闲鱼技术2022年度白皮书-Flutter主题-节日献礼:Flutter 图片库重磅开源!
107 0
|
7月前
|
Swift Kotlin
闲鱼技术2022年度白皮书-Flutter主题-节日献礼:Flutter 图片库重磅开源!(下)
闲鱼技术2022年度白皮书-Flutter主题-节日献礼:Flutter 图片库重磅开源!
102 0
|
7月前
|
移动开发 JavaScript 测试技术
推荐文章
更多