即时通讯基本上试图提供关于对象的不同形状信息到用glsl编写的光线跟踪器。访问来自glsl着色器的自定义数据
形状像
球体:VEC3中心;浮动半径;
box:vec3 center; vec3 halfSize;
等
的问题有以下要求:
- 在片段着色器可以访问所有的形状
- 不使用统一的变量,给他们的每一帧,不知何故缓存它们更长的时间直到手动移除。
- 能够从应用程序
- 数据是可变长度每种类型的更新数据(球,箱的计数,...)
数据没有被交织。
- 所以统一变量发送太多的数据。似乎
- 属性不被换货很多种对象(属性阵列使用一个位置上的每个元件)
- 纹理改变数据不期望且难看访问形状信息
这样一个如何能做到这一点?
最好还具有代表数据的结构。像结构体Sphere {vec3 p; float r; }; ...
一般来说,在片段着色器你将有机会获得的唯一途径“所有”的东西,如果你使用的纹理或最近(的OpenGL 4.2+)图像加载/存储的状态存储。计算着色器是一个非常适合这种事情,所以很高兴知道你所瞄准的是哪一代硬件G。 –