> For the complete documentation index, see [llms.txt](https://docs.allout.game/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.allout.game/all-out-docs/docs-es/conceptos-basicos-del-motor/assets-and-resources.md).

# Texturas

Los archivos en `res` se referencian en relación con esa carpeta:

```go
icon := get_asset(Texture_Asset, "ui/icon.png");
```

`get_asset` devuelve null cuando falta la ruta. Mantén las rutas con la mayúscula/minúscula correcta y comprueba los recursos opcionales antes de usarlos.

## Información de textura

```go
Texture_Asset :: class : Asset {
    get_width           :: method() -> s64;
    get_height          :: method() -> s64;
    get_aspect          :: method() -> float;
    get_pivot           :: method() -> v2;
    get_pixels_per_unit :: method() -> float;
    get_uvs             :: method() -> v2, v2;
}
```

Usa `Sprite_Renderer.set_texture` para un sprite del mundo, o pasa la textura a `UI.quad` para la interfaz de modo inmediato.

## Configuración de textura

Selecciona una textura en el panel Assets para editar sus ajustes de recurso, luego haz clic en **Aplicar**.

* **Píxeles por unidad** controla su tamaño en el mundo.
* **Filtro** usa muestreo lineal por defecto. Usa muestreo por vecino más cercano para pixel art.
* **Repetir** permite que la textura se repita. Activa también **Repetir** en el `Sprite_Renderer`, luego ajusta su escala y el desplazamiento UV.
* **Pivote** cambia el origen de la textura.
* **Recortar** recorta los píxeles de origen durante el preprocesamiento.

### Nueve cortes

El nine-slicing preserva las esquinas y bordes de una textura mientras estira su centro. Establece **Corte** en orden izquierda, abajo, derecha, arriba. **Escala del corte** cambia el grosor del borde renderizado.

Para un `Sprite_Renderer`, establece su **Nueve cortes** valores en el componente. Para la interfaz de modo inmediato, pasa los mismos valores a través de `Quad_Params`:

```go
nine_slice := Texture_Nine_Slice_Data.{
    slice = {25, 40, 25, 25},
    slice_scale = 1
};

UI.quad(rect, panel_texture, params={
    nine_slice = nine_slice
});
```

## Recursos Mip

Los recursos Mip son versiones más pequeñas que se cargan antes y se conservan bajo presión de memoria.

**Generar Mips automáticamente** bajo **Editar → Configuración del juego** incluye las texturas y los rigs de Spine referenciados por el proyecto. Mantén esta opción activada para la mayoría de los juegos. Activa explícitamente **Debe generar Mip** en un recurso que se carga solo mediante una ruta calculada y no puede ser encontrado por el análisis de referencias.

Cuando la generación automática está desactivada, **Calidad manual de Mip** selecciona un `1/8`, `1/16`, o `1/32` divisor del tamaño de origen. Los proyectos nuevos usan por defecto `1/32`.

## Lienzos dinámicos

`Dynamic_Canvas` es una textura RGBA perteneciente a la escena que CSL puede modificar:

```go
Dynamic_Canvas :: class {
    create    :: proc(width: s64, height: s64, pixels_per_unit: float = 100) -> Dynamic_Canvas;
    destroy   :: method();
    fill      :: method(color: v4);
    set_pixel :: method(x: s64, y: s64, color: v4);
    get_pixel :: method(x: s64, y: s64) -> v4;
    stamp     :: method(from: v2, to: v2, radius: float, color: v4, softness: float = 0.5, opacity: float = 1);

    width: s64 #read_only;
    height: s64 #read_only;
    pixels_per_unit: float #read_only;
}
```

Crea el lienzo una vez, asígnalo a un sprite y destrúyelo cuando termine su propietario:

```go
Paint_Surface :: class : Component {
    canvas: Dynamic_Canvas;

    ao_start :: method() {
        canvas = Dynamic_Canvas.create(256, 256);
        canvas.fill({1, 1, 1, 1});
        entity.get_component(Sprite_Renderer).set_canvas(canvas);
    }

    ao_end :: method() {
        canvas.destroy();
    }
}
```

Los píxeles del lienzo son estado de la escena sincronizado, no estado solo del cliente. Actualízalos mediante la ruta normal de juego compartido. Un lienzo está limitado a 512×512 píxeles; una escena puede contener hasta 16 lienzos y 4 MiB de píxeles de lienzo.
