我正在使用OpenGL开发一个数据可视化工具,实验室的颜色空间是我处理的数据可视化中最容易理解的颜色空间(3个数据轴映射到颜色空间的3个轴)。是否有快速(例如,无非整数求幂,适合在着色器中执行)算法用于实验室值与RGB值之间的近似转换?
发布于 2015-03-21 11:04:18
如果在着色器中执行实际转化计算太复杂/太昂贵,则始终可以使用查找表。由于这两种颜色空间都有3个分量,因此可以使用3D RGB纹理来表示查找表。
使用3D纹理听起来可能有很多开销。由于在OpenGL中通常使用8位/分量来表示颜色,因此需要256x256x256的3D纹理。在4字节/像素的情况下,这是一个64 MByte的纹理,这并不令人震惊,但非常重要。
但是,根据转换表中的值的平滑程度,您可能可以使用较低的分辨率。请记住,纹理采样使用线性插值。如果分段线性插值在查找表的特定基本分辨率下足够好,则可以大大减小查找表的大小。
如果您走这个方向,并且无法负担使用64 MBytes的查找表,那么您将不得不考虑查找表的大小,并在大小/性能和质量之间做出可能的权衡。
https://stackoverflow.com/questions/29174162
复制相似问题