[package] name = "llimphi-raster" version.workspace = true edition.workspace = true license.workspace = true authors.workspace = true publish.workspace = true description = "2D GPU rasterizer for llimphi over vello, with an opt-in CPU+GPU hybrid renderer." repository.workspace = true [dependencies] llimphi-hal = { path = "../llimphi-hal", version = "0.1.0" } # El motor de GPU de vello: acá SÍ hace falta, y se pide explícito porque el # dep del workspace viene sin features por defecto. vello = { workspace = true, features = ["wgpu", "wgpu_default"] } # El encoding crudo de vello, para la huella de escena (`src/huella.rs`). `vello` # no lo reexporta como módulo —sólo tres tipos sueltos— así que se pide directo. # La versión va clavada a la de `vello`: son el mismo release. vello_encoding = "0.9" foldhash = { version = "0.2", default-features = false } # El rasterizador CPU+GPU sin compute, envuelto: `llimphi-hybrid` es quien # sabe reproducir una `Escena` grabada contra `vello_hybrid`. No se declara # `vello_hybrid` suelto — sale reexportado de ahí, junto con el `Pintor`. llimphi-hybrid = { path = "../llimphi-hybrid", version = "0.1.0", optional = true } pollster = { workspace = true } [features] default = ["perfil-vello"] # Marcador SIN efecto sobre la librería: existe sólo para que los examples que # hablan `vello::Scene` directo puedan pedirlo por `required-features`. Sin él, # `--features hybrid --no-default-features` intenta compilarlos igual y falla con # «expected &Escena, found &Scene» — que es cierto pero inútil: esos examples no # tienen sentido en el perfil hybrid, donde la escena es de otro tipo. perfil-vello = [] # Cambia el backend de `Renderer` a vello_hybrid (CPU+GPU, sin compute) y con # él el tipo de `Escena`. EXCLUYENTE con el default: son escenas de tipos # distintos. Quien la encienda tiene que compilar además `llimphi-text` y # `llimphi-compositor` en su perfil `cpu`, que es el que pinta en una `Escena`. # Ver el encabezado de `src/lib.rs`. hybrid = ["dep:llimphi-hybrid"] [[example]] name = "render_node" path = "examples/render_node.rs" required-features = ["perfil-vello"] [[example]] name = "spike_gpu_directo" path = "examples/spike_gpu_directo.rs" required-features = ["perfil-vello"] [[example]] name = "gpu_million_points" path = "examples/gpu_million_points.rs" required-features = ["perfil-vello"]