着色器语言 ECS,第 1 部分 - 理念

主要观点:探索使用 WGSL 计算着色器来实现 ECS 状态管理概念,分享在这方面的探索和想法,包括将 ECS 模式引入 WGSL 着色器的简单方式、利用 GPU 进行更多功能、WGSL 的特点及与 ECS 的结合等。
关键信息:

  • 介绍 ECS 是将应用状态分离并拥抱稀疏关系的简单理念,实体、组件和系统概念默认相互无关。
  • 提出将 ECS 带到 GPU 的想法,利用 shader 代码字符串创建和 JavaScript 为每个系统创建硬编码常量数组来表示实体和组件关系。
  • 给出简化的 WGSL ECS 大致轮廓,包括组件定义、JS 创建关系、系统定义及函数调用等。
  • 展示相关代码示例和输出示例,如创建世界、实体、组件及系统等,并创建了一个在 compute.toys 上的 shader 示例。
  • 提出开放问题和下一步计划,如未测量性能、调试困难、编译时间等,并表示下一步将基于示例代码实现 API 并展示优缺点。
    重要细节:
  • 提到 Danil 的相关工作和演示,如酷的阐述和演示shadertoy 演示
  • 说明 WebGPU 和 WGSL 的吸引力,如具有计算着色器、支持指针和编译时数组等。
  • 详细阐述计算着色器的调度方式,如组件定义为 WGSL 结构体/类型,JS 创建关系,系统定义为 WGSL 函数等。
  • 提及特殊感谢 Joana 和 António 的帮助。
阅读 10
0 条评论