🎮 UnityDocs

Materiales y texturas

Los fundamentos antes de los shaders: qué es un material, la diferencia con una textura, los mapas PBR (albedo, normal, metallic, roughness) y cómo el shader Lit de URP los combina para dar aspecto realista a una superficie.

📄 ArtículoPrincipiante✅ RevisadoUnity 6.0 LTSActualizado 2026-07-17
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 8 min · ⌨️ Práctica 15 min

Textura, material y shader#

Se confunden constantemente. La cadena es:

  • Textura: una imagen (un JPG/PNG de madera, metal, ladrillo).
  • Shader: el programa que decide cómo se dibuja la superficie (ver shaders).
  • Material: la unión de ambos — un shader concreto con valores y texturas asignados. Es lo que arrastras sobre un objeto.

Un mismo shader (Lit de URP) genera infinitos materiales: madera, oro, plástico... cambiando sus texturas y parámetros.

Crear y aplicar un material#

Assets → Create → Material, se abre en el Inspector con el shader Universal Render Pipeline/Lit por defecto. Lo arrastras sobre el objeto (o a su Mesh Renderer). Sus campos principales:

  • Base Map: la textura de color (también llamada albedo) + un tinte.
  • Metallic / Smoothness: si la superficie es metálica y cómo de pulida (mate vs espejo).
  • Normal Map: relieve falso (ver abajo).
  • Emission: si la superficie emite luz propia (pantallas, lava, neón).
  • Tiling / Offset: cuántas veces se repite la textura y su desplazamiento.

Los mapas PBR#

El renderizado moderno es PBR (Physically Based Rendering): la superficie se describe con varias texturas que representan propiedades físicas, y la luz se comporta de forma realista.

MapaQué describe
Albedo / Base ColorEl color puro, sin luces ni sombras
NormalRelieve: simula bultos y surcos sin más geometría
MetallicQué zonas son metal y cuáles no
Smoothness / RoughnessCómo de pulida es (reflejos nítidos vs difusos)
Occlusion (AO)Sombras de contacto en recovecos
HeightProfundidad para parallax
El normal map es magia barata

Un normal map hace que una pared plana parezca tener ladrillos en relieve sin añadir un solo triángulo. Es la técnica que más aspecto da por menos coste. Impórtalo marcando Texture Type: Normal map o Unity lo interpretará como colores y se verá azulado.

Instancias: material vs sharedMaterial#

Igual que en shaders, cuidado al tocar materiales por código:

C#
// Cambia el color SOLO de este objeto (crea una copia del material)
GetComponent<Renderer>().material.color = Color.red;

// Cambia el material COMPARTIDO (afecta a todos los que lo usan)
GetComponent<Renderer>().sharedMaterial.color = Color.red;
material clona; puede crear cientos de instancias

Acceder a .material duplica el material para ese objeto (una llamada, una copia). Está bien para un caso puntual, pero para muchos objetos usa un MaterialPropertyBlock o cambia el sharedMaterial, o acabarás con cientos de materiales y draw calls. Ver reducir draw calls.

Errores frecuentes#

  • Confundir textura con material: la textura es la imagen; el material la usa dentro de un shader.
  • Importar un normal map sin marcar Normal map (se ve azulado y plano).
  • Materiales en magenta: el shader no es compatible con el pipeline actual (URP). Convierte con Edit → Rendering → Materials → Convert....
  • Tocar .material en muchos objetos y disparar draw calls sin querer.

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

Una textura es una imagen; un shader decide cómo se dibuja; un material los une con valores concretos (y es lo que aplicas al objeto). El renderizado moderno es PBR: describes la superficie con mapas (albedo, normal, metallic, smoothness, emission) que el shader Lit de URP combina para dar realismo. El normal map es el que más rinde por su coste. Al tocar materiales por código, cuidado con .material (clona): usa sharedMaterial o MaterialPropertyBlock para muchos objetos. Después, los shaders para efectos.

Fuentes y para profundizar