颜色过滤器参考¶
A 滤色器 是用于ImageLayer的内联glsl处理器。OSGearth地形引擎在GPU上渲染图像时,通过其图层的颜色过滤器运行每个图像块。您可以将颜色过滤器链接在一起以形成图像处理管道。
Osgearth附带了几个库存过滤器;您可以通过实现 osgEarth::ColorFilter
接口。
以下是如何在地球文件中使用颜色过滤器:
<image driver="gdal" name="world">
<color_filters>
<chroma_key r="1" g="1" b="1" distance=".1"/>
</color_filters>
</image>
原色过滤器:
BrightnessContrast¶
此过滤器调整图像的亮度和对比度:
<brightness_contrast b="0.7" c="1.2"/>
这个 b
和 c
属性是 百分比 输入值的。例如, c="1.2"
意味着对比度增加20%。
ChromaKey¶
此过滤器匹配颜色值以使片段透明,提供一种“绿色屏幕”效果:
<chroma_key r="1.0" g="0.0" b="0.0" distance="0.1"/>
在这个例子中,我们找到所有的红色像素,并将它们变为透明的。这个 distance
属性搜索接近指定颜色的颜色。仅对完全匹配设置为零。
CMYK¶
此过滤器偏移CMYK(青色、洋红、黄色、黑色)颜色级别:
<cmyk y="-0.1"/>
这里我们将碎片的“黄色”降低0.1。有效范围是 [-1..1] 对于每个 c
, m
, y
和 k
.
GLSL¶
glsl过滤器允许您嵌入自定义glsl代码,这样您就可以以任何方式调整颜色值。只需编写对rgba颜色变量进行操作的glsl代码块 inout vec4 color
::
<glsl>
color.rgb *= pow(color.rgb, 1.0/vec3(1.3));
</glsl>
这个例子与 Gamma 过滤,但直接使用glsl代码。
HSL¶
此过滤器偏移HSL(色调、饱和度、亮度)级别:
<hsl s="0.1" l="0.1"/>
这个例子增加了一点颜色饱和度,并使片段变得更加明亮。有效范围是 [-1..1] 对于每个 h
, s
和 l
.
RGB¶
此过滤器偏移RGB(红、绿、蓝)颜色级别:
<rgb r="0.1" b="-0.5"/>
这个例子增加了一点红色,减少了蓝色通道。有效范围是 [-1..1] 对于每个 r
, g
和 b
.