This commit is contained in:
syuilo 2025-11-03 18:31:39 +09:00
parent 5602ee8615
commit a07fcafdee
8 changed files with 21 additions and 25 deletions

View File

@ -94,7 +94,7 @@ const layers = reactive<ImageEffectorLayer[]>([]);
watch(layers, async () => {
if (renderer != null) {
renderer.setLayersAndRender(layers);
renderer.render(layers);
}
}, { deep: true });
@ -167,7 +167,7 @@ onMounted(async () => {
fxs: FXS,
});
await renderer.setLayersAndRender(layers);
await renderer.render(layers);
closeWaiting();
});
@ -194,7 +194,7 @@ async function save() {
await nextTick(); // waiting
renderer.changeResolution(imageBitmap.width, imageBitmap.height); //
renderer.render(); // toBlob
await renderer.render(layers); // toBlob
canvasEl.value.toBlob((blob) => {
emit('ok', new File([blob!], `image-${Date.now()}.png`, { type: 'image/png' }));
dialog.value?.close();
@ -206,9 +206,9 @@ const enabled = ref(true);
watch(enabled, () => {
if (renderer != null) {
if (enabled.value) {
renderer.setLayersAndRender(layers);
renderer.render(layers);
} else {
renderer.setLayersAndRender([]);
renderer.render([]);
}
}
});

View File

@ -206,7 +206,7 @@ async function cancel() {
const updateThrottled = throttle(50, () => {
if (renderer != null) {
renderer.updateAndRender(frame);
renderer.render(frame);
}
});
@ -285,7 +285,7 @@ async function initRenderer() {
});
}
await renderer!.updateAndRender(frame);
await renderer!.render(frame);
}
onMounted(async () => {

View File

@ -193,7 +193,7 @@ async function cancel() {
watch(preset, async (newValue, oldValue) => {
if (renderer != null) {
renderer.setLayersAndRender(preset.layers);
renderer.render(preset.layers);
}
}, { deep: true });
@ -277,7 +277,7 @@ async function initRenderer() {
});
}
await renderer!.setLayersAndRender(preset.layers);
await renderer!.render(preset.layers);
}
onMounted(async () => {

View File

@ -612,7 +612,7 @@ export function useUploader(options: {
image: imageBitmap,
});
await renderer.setLayersAndRender(item.watermarkPreset.layers);
await renderer.render(item.watermarkPreset.layers);
preprocessedFile = await new Promise<Blob>((resolve) => {
canvas.toBlob((blob) => {
@ -638,13 +638,11 @@ export function useUploader(options: {
// title: `${meta_model} + ${meta_lensModel}`,
// text: `${date} ${meta_mm}mm f/${meta_f} ${meta_s}s ISO${meta_iso}`,
//});
await frameRenderer.updateAndRender({
await frameRenderer.render({
title: 'aaaaaaaaaaaaa',
text: 'bbbbbbbbbbbbbbbbbbbb',
});
frameRenderer.render();
preprocessedFile = await new Promise<Blob>((resolve) => {
canvas.toBlob((blob) => {
if (blob == null) {

View File

@ -78,7 +78,7 @@ onMounted(() => {
image: sampleImage,
});
await renderer.setLayersAndRender(props.preset.layers);
await renderer.render(props.preset.layers);
}, { immediate: true });
};
});
@ -92,7 +92,7 @@ onUnmounted(() => {
watch(() => props.preset, async () => {
if (renderer != null) {
await renderer.setLayersAndRender(props.preset.layers);
await renderer.render(props.preset.layers);
}
}, { deep: true });
</script>

View File

@ -159,7 +159,9 @@ export class ImageEffector {
}
}
public async setLayersAndRender(layers: ImageEffectorLayer[]) {
public async render(layers: ImageEffectorLayer[]) {
const fnParams: Record<string, any> = {};
const unused = new Set(this.compositor.getKeysOfRegisteredTextures());
for (const layer of layers) {
@ -198,7 +200,7 @@ export class ImageEffector {
this.compositor.render(layers.map(layer => ({
id: layer.id,
functionId: layer.fxId,
params: layer.params,
params: fnParams,
})));
}

View File

@ -69,7 +69,7 @@ export const FX_watermarkPlacement = defineImageEffectorFx({
gl.uniform1i(u.noBBoxExpansion, params.noBoundingBoxExpansion ? 1 : 0);
// ウォーターマークテクスチャ
const wm = textures.watermark;
const wm = textures.get(params.watermark);
if (wm) {
gl.activeTexture(gl.TEXTURE1);
gl.bindTexture(gl.TEXTURE_2D, wm.texture);

View File

@ -83,7 +83,7 @@ export type WatermarkPreset = {
};
export class WatermarkRenderer {
private effector: ImageEffector<typeof WATERMARK_FXS>;
private effector: ImageEffector;
private layers: WatermarkPreset['layers'] = [];
constructor(options: {
@ -200,13 +200,9 @@ export class WatermarkRenderer {
});
}
public async setLayersAndRender(layers: WatermarkPreset['layers']) {
public async render(layers: WatermarkPreset['layers']) {
this.layers = layers;
await this.effector.setLayersAndRender(this.makeImageEffectorLayers());
}
public render(): void {
this.effector.render();
await this.effector.render(this.makeImageEffectorLayers());
}
/*