简介
Z滤镜是一个后处理WebGL着色器插件,可实现全景图、layer和hotspot的动态效果,您可以为启动界面、场景变化、弹出窗口添加视觉效果,例如设置或调整简单属性可调节亮度,饱和度或模糊你的全景图!
- 调整着色器 gamma、亮度、对比度,曝光、色调、饱和度、鲜艳度、怀旧、反转和混合色
- 使用blur和fblur(fastblur)进行模糊!
- 渐晕和颜色融合!
- 有趣的着色器旋转、像素化、波纹、分裂和索贝尔!
- 支持layer和hotspot的滤镜和背景滤镜!亮度、对比度、饱和度、色调、褐色调、反转、模糊、阴影
- 可实时显示数值的编辑器
语法使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<plugin name="zfilter" url="zfilter.js" preload="true" keep="true" regkey="" enabled="true" phase="2" order="" webvr="2" addzfilter="false" csslegacy="false" gamma="2.2" brightness="0" contrast="0" exposure="0" hue="0" saturate="0" vibrance="0" sepia="0" invert="0" swirl="0" pixelate="0" ripple="0" sobel="0" split="0" fquality.mobile="3" fquality.tablet="6" fquality.desktop="9" fblur="0" blur="0" blendcolor="0" blendmode="add" vignettecolor="0" mixcolor="0" /> |
- 将zfilter.js添加到项目中
- 在html (index/tour.html)中确认嵌入设置为 html5:”only+webgl”
1embedpano({ html5:"only+webgl", ... }); - 在主xml (tour.xml) 中添加
12<plugin name="zfilter" url="zfilter.js"preload="true" keep="true" regkey="abcdef" /> - 下面是一个简单的例子,可以通过设置初始属性值来完成开场动画
结合onstart动作,将属性恢复回默认值。
1234567<plugin name="zfilter" url="zfilter.js"preload="true" keep="true" regkey="abcdef"mixcolor="0xff000000" /><action name="intro" autorun="onstart">tween(plugin[zfilter].mixcolor, 0x00000000, 2.0);</action> - 注意:z滤镜经过优化,可最大限度地减少设备上的性能负载。如果所有属性都设置为默认值,则插件将保持空闲状态,不会执行任何操作,完全不影响性能。
插件属性
属性名 | 类型 | 值 | |||
ready (只读) | Boolean | true | false | |||
---|---|---|---|---|---|
version (只读) | String | 插件版本号 | |||
shaders (只读) | Number | 发生作用的着色器数量 | |||
shadernames (只读) | String | 发生作用的着色器名字 | |||
url | String | zfilter.js | |||
preload | Boolean | true | |||
keep | Boolean | true | |||
regkey | String | ||||
|
|||||
属性名 | 类型 | 默认值 | 最小值 | 最大值 | |
enabled | Boolean | true | |||
phase | Number | 2 | 1 | 2 | |
order | String | ||||
iorder (read only) | String | adjust|swirl|pixelate|ripple|sobel|split|fblur| blur|blendcolor|vignettecolor|mixcolor |
|||
webvr | Number | 2 | 0 | 3 | |
csslegacy | Boolean | false | |||
addzfilter | Boolean | false | |||
|
插件属性 (后处理滤镜)
属性 | 类型 | 默认值 | 最小值 | 最大值 | |
gamma | Number | 2.2 | 0.0 | 4.4 | |
---|---|---|---|---|---|
brightness | Number | 0.0 | -1.0 | 1.0 | |
contrast | Number | 0.0 | -1.0 | 1.0 | |
exposure | Number | 0.0 | -1.0 | 1.0 | |
hue | Number | 0.0 | -1.0 | 1.0 | |
saturate | Number | 0.0 | -1.0 | 1.0 | |
vibrance | Number | 0.0 | -1.0 | 1.0 | |
sepia | Number | 0.0 | 0.0 | 1.0 | |
invert | Number | 0.0 | 0.0 | 1.0 | |
|
|||||
属性 | 类型 | 默认值 | 最小值 | 最大值 | |
swirl | Number | 0.0 | 0.0 | 1.0 | |
pixelate | Number | 0.0 | 0.0 | 1.0 | |
ripple | Number | 0.0 | 0.0 | 1.0 | |
sobel | Number | 0.0 | 0.0 | 1.0 | |
split | Number | 0.0 | -1.0 | 1.0 | |
|
|||||
属性 | 类型 | 默认值 | 最小值 | 最大值 | |
fblur | Number | 0 | 0 | 50 | |
fquality | Number | 6 | 0 | 32 | |
blur | Number | 0 | 0 | 50 | |
|
|||||
属性 | 类型 | 默认值 | 最小值 | 最大值 | |
blendcolor | String | 0 | 0 | 0xffffffff | |
blendmode | String | add | |||
|
|||||
属性 | 类型 | 默认值 | 最小值 | 最大值 | |
vignettecolor | String | 0 | 0 | 0xffffffff | |
|
|||||
属性 | 类型 | 默认值 | 最小值 | 最大值 | |
mixcolor | String | 0 | 0 | 0xffffffff | |
|
32bit ARGB
32位ARGB值由4个字节组成,每个字节的范围为十六进制0x00到0xff。
通常32位ARGB值用于颜色并映射到透明通道、红色、绿色和蓝色,
但是z滤镜也可以将它们映射到其他参数,如渐晕颜色属性中。
上面为每个属性描述了字节到着色器的参数映射。
- 可以通过十进制或十六进制格式的数字或字符串设置32位ARGB值
- 读取32位ARGB值将返回十六进制格式的字符串
- 例子:
- ARGB数值0x801eff64代表:
0x8000ff00 –> A = 0x80/128, R = 0x1e/30, G = 0xFF/255, B = 0x64/100 - set(plugin[zfilter].blendcolor, 0x8000ff00);
- tween(plugin[zfilter].blendcolor, 0xffff0000, 2.0);
- copy(col, plugin[zfilter].blendcolor);
- ARGB数值0x801eff64代表:
Layer 及 Hotspot 属性
z滤镜允许在layer和hotspot上使用CSS过滤器属性,
使用时有下列限制条件:
- hotspot和layer必须通过调用addzfilter()手动初始化
在移除layer/hotspot之前使用removezfilter() 进行释放 - krpano 1.21 以上:
如果addzfilter=”true”则自动执行addzfilter()
在任何情况下removezfilter() 都会自动执行 - 支持的属性:
brightness, contrast, saturate, hue, sepia, invert, blur, dropshadow and
bgbrightness, bgcontrast, bgsaturate, bghue, bgsepia, bginvert, bgblur - Hotspot需要设置 renderer=css3d
- 浏览器支持:
普通的过滤器在大多数主流浏览器下可正常运行
但是支持可能会有所不同,特别是在多个过滤器处于活动状态的情况下。 - 注意: krpano 1.21 对CSS过滤器仅提供有限的支持
(background, layers, type=container 或 text)
zFilter 对CSS过滤器提供全部支持
(foreground & background, hotspots & layers, type=container, text 以及 image)
layer/hotspot初始化后,对其添加的zFilter属性可以像任何其他krpano layer属性一样使用:
- set(hotspot[myhotspot].saturate, -1);
- tween(layer[mylayer].blur, 15, 1);
- tween(layer[mylayer].blur|layer[mylayer].alpha, 15|0, 1);
Layer and Hotspot 属性 (CSS 过滤器)
属性 | 类型 | 默认值 | 最小值 | 最大值 |
brightness / bgbrightness | Number | 1.0 | 0.0 | |
---|---|---|---|---|
contrast / bgcontrast | Number | 1.0 | 0.0 | |
saturate / bgsaturate | Number | 1.0 | 0.0 | |
hue / bghue | Number | 0.0 | ||
sepia / bgsepia | Number | 0.0 | 0.0 | 1.0 |
invert / bginvert | Number | 0.0 | 0.0 | 1.0 |
blur / bgblur | Number | 0.0 | 0.0 | |
dropshadow | String | 参看layer.bgshadow |
krpano 1.21+的新值范围或csslegacy=“false”的旧krpano版本
注意:这些范围对应于常规CSS过滤器的值范围
属性 | 类型 | 默认值 | 最小值 | 最大值 |
brightness / bgbrightness | Number | 0.0 | -1.0 | 1.0 |
---|---|---|---|---|
contrast / bgcontrast | Number | 0.0 | -1.0 | 1.0 |
saturate / bgsaturate | Number | 0.0 | -1.0 | 1.0 |
hue / bghue | Number | 0.0 | -1.0 | 1.0 |
sepia / bgsepia | Number | 0.0 | 0.0 | 1.0 |
invert / bginvert | Number | 0.0 | 0.0 | 1.0 |
blur / bgblur | Number | 0.0 | 0.0 | 50.0 |
dropshadow | String | 参看 layer.bgshadow |
csslegacy=“true”的旧krpano版本的旧/遗留值范围
注意:这些范围对应于zFilter提供的全景后处理过滤器
注意:csslegacy=“true”仅支持1.21以下的旧krpano版本!
在kprano 1.21上,必须使用新的值范围!
1 |
addzfilter(layer or hotspot) |
addzfilter 对指定的layer或hotspot初始化z滤镜。
对其添加的zFilter属性可以像任何其他krpano属性一样使用:
对其添加的zFilter属性可以像任何其他krpano属性一样使用:
- layer or hotspot
如 “layer[mylayer]” 或 “hotspot[myhotspot]”这样的对象和字符串
如果 layer/hotspot不存在,则自动创建
例子:
- addzfilter(layer[mylayer]); // string
- addzfilter(get(hotspot[myhotspot])); // object
1 |
removezfilter(layer or hotspot) |
removezfilter 对指定的layer或hotspot移除z滤镜
参数:
- layer or hotspot
如 “layer[mylayer]” 或 “hotspot[myhotspot]”这样的对象和字符串
1 |
haszfilter(variable, layer or hotspot) |
haszfilter检查z滤镜是否添加到指定的layer或hotspot
参数:
- variable
返回值的目标变量(true或false) - layer or hotspot
如 “layer[mylayer]” 或 “hotspot[myhotspot]”这样的对象和字符串