Skip to content

Commit 2df453c

Browse files
committed
Do CPU-side effect transforms in "logical space"
1 parent 95c11a7 commit 2df453c

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/EffectTransform.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -209,13 +209,20 @@ class EffectTransform {
209209

210210
const effects = drawable.enabledEffects;
211211
const uniforms = drawable.getUniforms();
212+
const skinUniforms = drawable.skin.getUniforms();
213+
214+
// v_logicalCoord = (a_texCoord - u_logicalBounds.xy) / (u_logicalBounds.zw - u_logicalBounds.xy);
215+
dst[0] = (dst[0] - skinUniforms.u_logicalBounds[0]) /
216+
(skinUniforms.u_logicalBounds[2] - skinUniforms.u_logicalBounds[0]);
217+
dst[1] = (dst[1] - skinUniforms.u_logicalBounds[1]) /
218+
(skinUniforms.u_logicalBounds[3] - skinUniforms.u_logicalBounds[1]);
219+
212220
if ((effects & ShaderManager.EFFECT_INFO.mosaic.mask) !== 0) {
213221
// texcoord0 = fract(u_mosaic * texcoord0);
214222
dst[0] = uniforms.u_mosaic * dst[0] % 1;
215223
dst[1] = uniforms.u_mosaic * dst[1] % 1;
216224
}
217225
if ((effects & ShaderManager.EFFECT_INFO.pixelate.mask) !== 0) {
218-
const skinUniforms = drawable.skin.getUniforms();
219226
// vec2 pixelTexelSize = u_skinSize / u_pixelate;
220227
const texelX = skinUniforms.u_skinSize[0] * uniforms.u_pixelate;
221228
const texelY = skinUniforms.u_skinSize[1] * uniforms.u_pixelate;
@@ -269,6 +276,13 @@ class EffectTransform {
269276
dst[1] = CENTER_Y + (r * unitY * CENTER_Y);
270277
}
271278

279+
// After doing all distortions in "logical texture space", convert back to actual texture space
280+
// texcoord0 = (texcoord0 * (u_logicalBounds.zw - u_logicalBounds.xy)) + u_logicalBounds.xy;
281+
dst[0] = (dst[0] * (skinUniforms.u_logicalBounds[2] - skinUniforms.u_logicalBounds[0])) +
282+
skinUniforms.u_logicalBounds[0];
283+
dst[1] = (dst[1] * (skinUniforms.u_logicalBounds[3] - skinUniforms.u_logicalBounds[1])) +
284+
skinUniforms.u_logicalBounds[1];
285+
272286
return dst;
273287
}
274288
}

0 commit comments

Comments
 (0)