Skip to content

Commit 064034b

Browse files
author
David Gillen
committed
Improve alpha handling and fix image stretch logic
1 parent cd713ce commit 064034b

1 file changed

Lines changed: 10 additions & 14 deletions

File tree

src/easeljs/filters/DisplacementFilter.js

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,9 @@ this.createjs = this.createjs||{};
9696
"uniform vec2 pixelAdjustment;" +
9797

9898
"void main(void) {" +
99-
"vec4 dispSample = texture2D(" +
100-
"uDudvSampler, " +
101-
"vTextureCoord" +
102-
");" +
103-
"gl_FragColor = texture2D(" +
104-
"uSampler, " +
105-
"vTextureCoord + (dispSample.xy-0.5)*fPower*pixelAdjustment" +
106-
");" +
99+
"vec4 dudvValue = texture2D(uDudvSampler, vTextureCoord);" +
100+
"vec2 sampleOffset = mix(vec2(0.0), dudvValue.rg-0.5, dudvValue.a) * (fPower*pixelAdjustment);" +
101+
"gl_FragColor = texture2D(uSampler, vTextureCoord + sampleOffset);" +
107102
"}"
108103
);
109104

@@ -166,14 +161,15 @@ this.createjs = this.createjs||{};
166161
var dudvOffset, dudvPixel;
167162

168163
for (var i=0; i<height; i++) {
169-
offset = i*width;
170-
dudvOffset = ((i*(width/dudvWidth)) * dudvWidth) |0;
164+
offset = i * width;
165+
dudvOffset = ((i*(dudvHeight/height))|0) * dudvWidth;
171166
for (var j=0; j<width; j++) {
172-
pixel = (offset+j)*4;
173-
dudvPixel = (dudvOffset + ((j*(height/dudvHeight)) |0) )*4;
167+
pixel = (offset + j) *4;
168+
dudvPixel = (dudvOffset + ((j*(dudvWidth/width)) |0) ) *4;
174169

175-
var xDelta = (((dudvPixels[dudvPixel] - 128)/128)*this.distance) |0;
176-
var yDelta = (((dudvPixels[dudvPixel+1] - 128)/128)*this.distance) |0;
170+
var deltaPower = dudvPixels[dudvPixel+3] / 255;
171+
var xDelta = ((((dudvPixels[dudvPixel] - 128)/128) * deltaPower) * this.distance) |0;
172+
var yDelta = ((((dudvPixels[dudvPixel+1] - 128)/128) * deltaPower) * this.distance |0);
177173

178174
if (j+xDelta < 0) { xDelta = -j; }
179175
if (j+xDelta > width) { xDelta = width-j; }

0 commit comments

Comments
 (0)