# Arsenal Nexora V2 - Fase 7.3: Render Pipeline

## Objetivo

Normalizar los íconos técnicos del Arsenal sin ampliar artificialmente sprites de baja resolución y sin procesar imágenes durante la navegación del jugador.

## Render cache

La build incluye un cache estático versionado en:

`templates/nexoraves6custom/img/itemshop-renders-v1/{Section}/{Index}.webp`

Se generaron 4.004 derivados válidos a partir de 4.006 WEBP preferidos. Dos fuentes (`14/153.webp` y `14/223.webp`) son completamente transparentes y se omiten; Arsenal cae automáticamente al asset original cuando no existe derivado.

Cada derivado:

- usa lienzo transparente 160x160;
- recorta únicamente margen alpha vacío;
- conserva proporción;
- limita el upscale a 2x;
- limita el contenido a 106x116 dentro del lienzo;
- usa nearest-neighbor al ampliar y Lanczos al reducir;
- se guarda como WEBP quality 82;
- no incorpora fondos, glow ni textos dentro de la imagen.

El halo, pedestal y perfil de configuración siguen siendo CSS, de modo que el mismo render funciona con todos los temas de Arsenal.

## Fallback

`catalog.php` consulta el derivado estático solo para imágenes técnicas. Si no existe, utiliza la URL original que ya resolvía `ProfileEquipment::itemImageUrl()`.

Las imágenes promocionales subidas desde AdminCP no pasan por este pipeline y conservan el modo `Artwork`.

## Rendimiento

- No hay generación on-demand.
- No hay SQL nuevo.
- No hay requests externos.
- No se modifica `itemshop.js`.
- Los derivados están en un directorio versionado y pueden recibir cache HTTP `immutable` por un año.
- El cache precompilado ocupa aproximadamente 10.2 MiB en bytes de imagen (el tamaño en disco puede ser mayor por bloques del filesystem).

## Reconstrucción opcional

Si cambia el pack `item_images`, puede reconstruirse fuera del request web:

`php includes/plugins/itemshop/tools_build_render_cache.php`

El script es CLI-only y requiere GD con WebP. También acepta rutas fuente/destino como argumentos 1 y 2.

## Versión

Arsenal Nexora Item Shop: `1.6.3`.
