如何在 PostScript 中使用双线性渐变有效地为四边形着色

How to efficiently color quadrilaterals using bilinear gradients in PostScript

我正在创建一个 PostScript 绘图,其中有数百个四边形。我希望使用四种颜色之间的双线性插值对每个四边形进行着色,每种颜色都与一个顶点相关联。

目前,对于每个四边形,我正在使用

newpath
<<
/BBox [294      353.6387      627.0481      644.4492
/Domain [294      353.6387      627.0481      644.4492
/ShadingType 6
/ColorSpace [/DeviceRGB]
/DataSource
[
0
   322.00000000    639.52198166
   308.00000000    633.28505452
   308.00000000    633.28505452
   294.00000000    627.04812738
   309.50334395    629.25461291
   309.50334395    629.25461291
   325.00668790    631.46109845
   339.32269715    637.95516131
   339.32269715    637.95516131
   353.63870639    644.44922417
   337.81935320    641.98560292
   337.81935320    641.98560292
0.23047     0.29688        0.75 
0.23047     0.29688        0.75 
0.91493     0.82918     0.78143 
0.91948     0.82593     0.77364 
]
>>
shfill

ShadingType 6 对于我想要完成的事情来说似乎有点矫枉过正,但是将四边形细分为三角形并进行线性插值会产生一些质量较低的东西。

是否有更有效的方法来编写此效果,以便更快地渲染数百个四边形?

我可以通过将 shfill 替换为

来显着加快速度
gsave
x y w h rectclip
shfill
grestore

其中xy是包围矩形的左下坐标,wh是矩形的宽度和高度。