结构支持

看来最底层的开发环境,类似显卡上的汇编语言,也需要有结构的支持,当然这不是 spirv 本身的要求,而是加载以及生成封装代码的要求,为了避免重新制造轮子,我们还是需要一个自己的自行车
首先是一个结构的解析器
复制代码
然后在 语句的层面,增加对 struct 的解析
增加 Stmt 枚举
复制代码
然后是解析算子
复制代码
我们的 最简单的 shader 代码 变成这样
复制代码
现在看看编译出来的效果

完美,有一个小问题,arg 里面解析的 Struct 是临时创建的 没有参数
我们需要的是引用 而不是定义
原因是这里

解析器 发现是一个类型 ident 的时候 直接 给出 一个空的 Struct,在 AST 阶段 考虑到前向定义的问题,我们可以暂时不处理,这样可以在今后实现的时候 再来处理定义
评论