顶点着色器和实例化,保留为一个实例的每个顶点计算的一些数据

问题描述 投票:0回答:1

我正在使用 GLSL 和 Vulkan。有没有一种方法可以使从顶点着色器计算出的数据对于一个实例的所有下一个顶点保持“一致”?

我必须在顶点着色器内创建模型矩阵以用于广告牌登机。我想知道是否有机会 告诉着色器在使用实例时保留特定数据,知道该数据对于实例的所有顶点都是相同的?

我可以给出每个实例的模型矩阵,但位置和缩放向量就足够了,可以减少 VBO 的大小。

glsl vulkan vertex-shader
1个回答
0
投票

没有明智的方法可以在同一绘制调用内的顶点之间传递数据。也就是说,我确信使用一些原子和存储缓冲区是可能的,但它根本不会有效。

更明智的方法是首先运行计算着色器,它负责计算每个实例的公共数据并将其写入存储缓冲区,然后使用以下顶点着色器从该缓冲区读取实例 ID 作为数组索引。

© www.soinside.com 2019 - 2024. All rights reserved.