着色器与渲染
本章技术基线:Starsector 0.98a-RC8 与 Java 17;前置依赖:BoxUtil 1.5.5。
自定义渲染可以根据游戏状态生成形状、控制边缘与颜色,也可以让大量效果共用几何和材质。本章从舰船方向标展开,讲解 Java 提供的数据怎样进入 GPU、shader 怎样生成画面,以及这份画面怎样跟随战斗中的对象变化。
圆环和朝向线在不同实现中保持相同的用途,让我们能够集中比较数据的存放、传递与绘制方式。几何、运行参数与绘制状态各有自己的职责。 单个效果可以逐项提交,多个效果可以按记录组织并批量绘制;采用哪种方式,取决于变化的数据、效果数量和当前渲染环境。
绘制还发生在与游戏共用的上下文中。坐标变换、视口剔除、状态恢复和资源释放共同决定效果能否正常存在于战斗画面。理解这些关系以后,就能按自己的需求编写渲染,也能判断 BoxUtil 这样的工具接管了哪些工作,为具体形状、实例与光照选择合适的组织方式。