33 */
44
55function mainFunc (
6- { origin } ,
6+ { out } ,
77 { }
88) {
9- const width_texture_origin = origin . width_texture ;
10- const height_texture_origin = origin . height_texture ;
119 return `
1210
13- vec2 getOriginCoord(float x, float y) {
14- if (x > float(${ width_texture_origin } )) {
15- int num = int(x / float(${ width_texture_origin } ));
16- x = mod(x, float(${ width_texture_origin } ));
17- y = y + float(num);
18- }
19- return vec2(x, y);
20- }
21-
22- float getClipedCoordRed(vec2 xy) {
23- return TEXTURE2D(
24- texture_origin,
25- vec2(float(xy.x / float(${ width_texture_origin } )), float(xy.y / float(${ height_texture_origin } )))
26- ).r;
27- }
28-
2911 // start函数
3012 void main() {
31-
13+ ivec4 oPos = getOutputTensorPos();
3214 vec2 outCoord = vCoord.xy * _2d_shape_texture_out;
33- vec4 out4;
34- float x = floor(outCoord.x) * 4.0;
35- float y = floor(outCoord.y) * 4.0 + 0.5;
36- float x0 = x + 0.5;
37- float x1 = x + 1.5;
38- float x2 = x + 2.5;
39- float x3 = x + 3.5;
15+ int index = int(outCoord.x) + int(outCoord.y) * int(${ out . width_texture } );
16+
17+ int first = index * 4;
18+ int sec = index * 4 + 1;
19+ int third = index * 4 + 2;
20+ int fourth = index * 4 + 3;
4021
41- vec2 xy0 = getOriginCoord(x0, y );
42- vec2 xy1 = getOriginCoord(x1, y );
43- vec2 xy2 = getOriginCoord(x2, y );
44- vec2 xy3 = getOriginCoord(x3, y );
22+ ivec4 rPos = getTensorPosFromArrayIndex_origin(first );
23+ ivec4 gPos = getTensorPosFromArrayIndex_origin(sec );
24+ ivec4 bPos = getTensorPosFromArrayIndex_origin(third );
25+ ivec4 aPos = getTensorPosFromArrayIndex_origin(fourth );
4526
46- float r = getClipedCoordRed(xy0 );
47- float g = getClipedCoordRed(xy1 );
48- float b = getClipedCoordRed(xy2 );
49- float a = getClipedCoordRed(xy3 );
27+ float r = getValueFromTensorPos_origin(rPos.r, rPos.g, rPos.b, rPos.a );
28+ float g = getValueFromTensorPos_origin(gPos.r, gPos.g, gPos.b, gPos.a );
29+ float b = getValueFromTensorPos_origin(bPos.r, bPos.g, bPos.b, bPos.a );
30+ float a = getValueFromTensorPos_origin(aPos.r, aPos.g, aPos.b, aPos.a );
5031
5132 setPackedOutput(vec4(r, g, b, a));
5233 }
@@ -55,6 +36,6 @@ function mainFunc(
5536export default {
5637 mainFunc,
5738 textureFuncConf : {
58- origin : [ 'getValueFromTensorPosPacking ' , 'getValueFromTensorPos ' ]
39+ origin : [ 'getValueFromTensorPos ' , 'getTensorPosFromArrayIndex ' ]
5940 }
6041} ;
0 commit comments