Skip to content

Commit

Permalink
Merge pull request #25 from jerzakm/tri-zoom-bugfix
Browse files Browse the repository at this point in the history
Tri zoom bugfix
  • Loading branch information
jerzakm authored Dec 3, 2023
2 parents 9a09ca3 + ef6db2d commit dbb7d9f
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 14 deletions.
5 changes: 5 additions & 0 deletions .changeset/strong-toes-juggle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@threejs-kit/instanced-sprite-mesh": patch
---

bugfix: corrected center point of a zoom when using triangle geometry (glsl)
1 change: 0 additions & 1 deletion packages/instanced-sprite-mesh/src/InstancedSpriteMesh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ export class InstancedSpriteMesh<
let geometry: BufferGeometry<any> | PlaneGeometry;

if (options?.triGeometry) {
console.log("tri geo");
geometry = createSpriteTriangle();
} else {
geometry = new PlaneGeometry(1, 1) as any;
Expand Down
22 changes: 14 additions & 8 deletions packages/instanced-sprite-mesh/src/material.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,19 @@ export const constructSpriteMaterial = (
float hHalfStep = 1.f / dataSize.y * 0.5f;
return texture2D(spritesheetData, vec2(col * wStep + wHalfStep, row * hStep + hHalfStep));
}
vec2 zoomUV(vec2 uv, vec2 zoomCenter, float zoomFactor) {
// Shift UVs so that the zoom center is the origin
vec2 shiftedUV = uv - zoomCenter;
// Scale (zoom) the UV coordinates
shiftedUV *= zoomFactor;
// Shift back
shiftedUV += zoomCenter;
return shiftedUV;
}
`;

// calculate sprite UV
Expand Down Expand Up @@ -185,7 +198,7 @@ export const constructSpriteMaterial = (
discard;
}
vec2 zoomCenter = vec2(fSize.x * 0.5,0.);
vec2 zoomCenter = vec2(fSize.x * 0.5,0.) + fOffset;
float zoomFactor = 2.;
vec2 shiftedUV = spriteUv - zoomCenter;
shiftedUV *= zoomFactor;
Expand Down Expand Up @@ -224,10 +237,6 @@ export const constructSpriteMaterial = (
);

fragmentShader = replaceUVs(fragmentShader, "spriteUv");

// console.log(fragmentShader)
// console.log(vertexShader)

return { vertexShader, fragmentShader };
},
});
Expand Down Expand Up @@ -314,12 +323,9 @@ export const makeDataTexture = (data: SpritesheetFormat) => {
})
.flat()
.concat(new Array((dataWidth - animations[key].length) * 4).fill(0));
console.log({ aFrames });
animationsRGBA.push(...aFrames);
}

console.log(animMap);

const combinedData = [
...framesRGBA,
...animationLengthsRGBA,
Expand Down
5 changes: 0 additions & 5 deletions packages/instanced-sprite-mesh/src/spriteBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,6 @@ class SpriteBuilder {
async build() {
const imgLoader = new ImageLoader();

console.log(this.animations);

const spritesheet: SpritesheetFormat = {
frames: [],
animations: {},
Expand Down Expand Up @@ -171,9 +169,6 @@ class SpriteBuilder {
texture.colorSpace = SRGBColorSpace;

spritesheet.sheetSize = [generatedWidth, generatedHeight];

console.log({ generatedSpritesheet: spritesheet });

return { spritesheet, texture };
}
}

1 comment on commit dbb7d9f

@vercel
Copy link

@vercel vercel bot commented on dbb7d9f Dec 3, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

threejs-kit-playground – ./apps/playground

threejs-kit-playground-git-main-jerzakm.vercel.app
threejs-kit-playground-jerzakm.vercel.app
threejs-kit-playground.vercel.app

Please sign in to comment.