Skip to content

最终目标是: 渲染方块,正方形,直线和点, 并建立一套类似于编程语言的东西. 基于webgpu.

License

Notifications You must be signed in to change notification settings

YYMMYB/cubescript2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

方块脚本

很可能咕咕咕. 后面那个 2 就是因为之前已经重新弄过一次了.

目前还几乎是啥都没做, 啥功能都没有.

目标

一个3d空间, 里面有: 方块,正方形,线段,点, 分布方式类似与MineCraft(坐标是边长的整数倍,轴对齐). 方便起见, 后面将这四种几何体称为基元.

通过对基元进行组合,与在基元上附加一些信息, 来描述其他(或自身)基元的运动,创建销毁等事件. 从而可以生成由基元构成的模型, 模型动画等.

  • 多个基元的组合: 主要表示容易通过空间位置表示的信息, 例如相对位置等
  • 基元上的附加信息: 主要表示不容易通过基元表示的信息, 例如数字, 颜色等

逻辑该如何表示? 还没想.

基元的大小可以是2的幂次.

提供函数的功能. 将多个基元描述的规则, 封装到几个用于表示输入输出的基元上.

进度

进度 功能
正在做 渲染
未开始 场景管理
未开始 语言

做了什么, 正在做什么

目前可以画三角形了.

做完了:

  • 简单的 Camera 控制
  • GPU Instance 的封装
  • 旋转的编码解码
  • texture array
  • 重构

正在做:

  1. gpu instance 有个上限 2048. 完全不够用. 还得大改.
    • 先看一下 geometry shader, 看看行不行.
    • 如果不行, 要么还是用生成mesh的方法.
    • 要么就实例化 64 种网格.
  2. 旋转的运算
  3. 贴图的texture_id的规则

后面要做:

  1. 基元的管理(类似于MineCraft的Chunk)
  2. 贴图支持(一个chunk多个贴图的处理, 一次可能无法bind那么多贴图?, chunk构建的时候就应该分drawcall构建)
    • 每种方块平均4张64*64的(4张是猜的), 一张贴图是2048*2048, 所以一张图可以装2^5 * 2^5 / 4=256种方块, 怎么也得支持10000+种方块吧, 因此可能会用到40+张图. 显存使用是 4*2048*2048*40 B < 2^30 B = 1GB, 算上mipmap也是 < 1.5GB.
      • 注意边缘在采样时, 可能会混合到下一张小贴图的颜色, 打图集的时候注意把边缘颜色相近的放在一起.
        • 老后面的问题了, 先不管.
      • 之前算错了, 显存没我想的需要的那么多, 那可以就全都存到显存里, 不释放了, 换绑定就行了.
    • 关键是支持mod的话, 人家想做高清材质, 每种方块的贴图可能会很大.
      • 先不考虑这个了
      • 实在不行就不支持高清!!!
  3. 射线检查的支持(目前主要用于鼠标点击)
  4. 测试用的随机场景生成
  5. 视锥体剔除

About

最终目标是: 渲染方块,正方形,直线和点, 并建立一套类似于编程语言的东西. 基于webgpu.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages