Skip to content

Commit 1820792

Browse files
committed
tests: Add avm2/pixelbender_parameters test
This test verifies behavior of various Pixel Bender parameetrs.
1 parent e127506 commit 1820792

File tree

5 files changed

+1885
-0
lines changed

5 files changed

+1885
-0
lines changed
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
package {
2+
import flash.display.*;
3+
import flash.geom.*;
4+
5+
public class Test extends MovieClip {
6+
[Embed(source = "shader.pbj", mimeType="application/octet-stream")]
7+
public static var ShaderBytes: Class;
8+
9+
public function Test() {
10+
testParameter(0, function(data, value) {
11+
trace("Default params:");
12+
printParams(data);
13+
});
14+
testParameter(1, function(data, value) {
15+
data.pBool.value = value;
16+
});
17+
testParameter(2, function(data, value) {
18+
data.pInt.value = value;
19+
});
20+
testParameter(3, function(data, value) {
21+
data.pFloat.value = value;
22+
});
23+
testParameter(4, function(data, value) {
24+
data.pPixel1.value = value;
25+
});
26+
testParameter(5, function(data, value) {
27+
data.pFloat2.value = value;
28+
});
29+
testParameter(6, function(data, value) {
30+
data.pFloat3.value = value;
31+
});
32+
testParameter(7, function(data, value) {
33+
data.pFloat4.value = value;
34+
});
35+
testParameter(8, function(data, value) {
36+
data.pBool2.value = value;
37+
});
38+
testParameter(9, function(data, value) {
39+
data.pBool3.value = value;
40+
});
41+
testParameter(10, function(data, value) {
42+
data.pBool4.value = value;
43+
});
44+
testParameter(11, function(data, value) {
45+
data.pInt2.value = value;
46+
});
47+
testParameter(12, function(data, value) {
48+
data.pInt3.value = value;
49+
});
50+
testParameter(13, function(data, value) {
51+
data.pInt4.value = value;
52+
});
53+
testParameter(14, function(data, value) {
54+
data.pPixel2.value = value;
55+
});
56+
testParameter(15, function(data, value) {
57+
data.pPixel3.value = value;
58+
});
59+
testParameter(16, function(data, value) {
60+
data.pPixel4.value = value;
61+
});
62+
testParameter(17, function(data, value) {
63+
data.pFloat2x2.value = value;
64+
});
65+
testParameter(18, function(data, value) {
66+
data.pFloat3x3.value = value;
67+
});
68+
testParameter(19, function(data, value) {
69+
data.pFloat4x4.value = value;
70+
});
71+
}
72+
73+
private function testParameter(selector:Number, setter:Function) {
74+
testParameterValue(selector, setter, null);
75+
if (selector == 0) return;
76+
testParameterValue(selector, setter, undefined);
77+
testParameterValue(selector, setter, []);
78+
testParameterValue(selector, setter, [256]);
79+
testParameterValue(selector, setter, [256, 256]);
80+
testParameterValue(selector, setter, [256, 256, 256]);
81+
testParameterValue(selector, setter, [0, 0, 256]);
82+
testParameterValue(selector, setter, [0, 0, "test"]);
83+
testParameterValue(selector, setter, ["test"]);
84+
testParameterValue(selector, setter, [undefined]);
85+
testParameterValue(selector, setter, [null]);
86+
testParameterValue(selector, setter, [undefined, 256]);
87+
testParameterValue(selector, setter, [null, 256]);
88+
testParameterValue(selector, setter, [new Object()]);
89+
testParameterValue(selector, setter, [true]);
90+
testParameterValue(selector, setter, [false]);
91+
testParameterValue(selector, setter, [true, false]);
92+
testParameterValue(selector, setter, [true, false, true]);
93+
testParameterValue(selector, setter, [0.8]);
94+
testParameterValue(selector, setter, [0.2]);
95+
testParameterValue(selector, setter, [0.6]);
96+
testParameterValue(selector, setter, [1.1]);
97+
testParameterValue(selector, setter, [1.5]);
98+
testParameterValue(selector, setter, [0.8, 0.8]);
99+
testParameterValue(selector, setter, [0.8, 1, 1]);
100+
testParameterValue(selector, setter, [1, 0, 1]);
101+
testParameterValue(selector, setter, [[1]]);
102+
}
103+
104+
private function testParameterValue(selector:Number, setter:Function, value:Array) {
105+
trace("Testing selector " + selector + ", value '" + value + "'");
106+
107+
var input = new BitmapData(1, 1);
108+
var shaderJob = new ShaderJob(new Shader(new ShaderBytes()), input);
109+
110+
setter(shaderJob.shader.data, value);
111+
shaderJob.shader.data.selector.value = [selector];
112+
113+
try {
114+
shaderJob.start(true);
115+
trace("Result: " + input.getPixel32(0, 0).toString(16));
116+
} catch (e) {
117+
trace("Error while starting: " + e);
118+
}
119+
trace("=================");
120+
}
121+
122+
private function printParams(data) {
123+
trace(" selector=" + data.selector.value);
124+
trace(" pBool=" + data.pBool.value);
125+
trace(" pInt=" + data.pInt.value);
126+
trace(" pFloat=" + data.pFloat.value);
127+
trace(" pPixel1=" + data.pPixel1.value);
128+
trace(" pFloat2=" + data.pFloat2.value);
129+
trace(" pFloat3=" + data.pFloat3.value);
130+
trace(" pFloat4=" + data.pFloat4.value);
131+
trace(" pBool2=" + data.pBool2.value);
132+
trace(" pBool3=" + data.pBool3.value);
133+
trace(" pBool4=" + data.pBool4.value);
134+
trace(" pInt2=" + data.pInt2.value);
135+
trace(" pInt3=" + data.pInt3.value);
136+
trace(" pInt4=" + data.pInt4.value);
137+
trace(" pPixel2=" + data.pPixel2.value);
138+
trace(" pPixel3=" + data.pPixel3.value);
139+
trace(" pPixel4=" + data.pPixel4.value);
140+
trace(" pFloat2x2=" + data.pFloat2x2.value);
141+
trace(" pFloat3x3=" + data.pFloat3x3.value);
142+
trace(" pFloat4x4=" + data.pFloat4x4.value);
143+
}
144+
}
145+
}

0 commit comments

Comments
 (0)