Creación de un sombreador de terreno personalizado en Unity
En este tutorial, crearemos un sombreador de terreno personalizado en Unity para darle texturas e iluminación más realistas. Este enfoque permite un mejor rendimiento y control sobre cómo interactúa el terreno con luces, sombras y otros efectos ambientales. Cubriremos la configuración del sombreador, su uso con el sistema de terreno de Unity y la realización de ajustes para un rendimiento óptimo.
1. Preparando el terreno
Antes de sumergirnos en la creación del sombreador, primero configuremos el terreno en Unity:
- En Unity, vaya al menú GameObject y seleccione Objeto 3D > Terreno.
- Esto agregará un nuevo objeto de terreno a la escena. Puede ajustar su tamaño, altura y otras configuraciones en el Inspector de terreno.
- Una vez creado el terreno, puedes pintar sobre él con la herramienta Pintar textura del Inspector. Pero por ahora, déjalo en blanco, ya que aplicaremos un sombreador personalizado.
2. Creación del sombreador de terreno
Ahora vamos a crear el sombreador de terreno personalizado. Siga estos pasos:
- Haga clic derecho en la ventana Proyecto y seleccione Crear > Sombreador > Sombreador de superficie estándar.
- Nombra el sombreador CustomTerrainShader y ábrelo en tu editor de código preferido.
Reemplace el código de sombreador predeterminado con el siguiente:
Shader "Custom/TerrainShader"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
_BumpMap ("Normal Map", 2D) = "bump" {}
_Specular ("Specular", Color) = (0.2, 0.2, 0.2, 1)
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Standard fullforwardshadows
sampler2D _MainTex;
sampler2D _BumpMap;
fixed4 _Specular;
struct Input
{
float2 uv_MainTex;
float3 worldNormal;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
o.Specular = _Specular;
o.Smoothness = 0.5;
}
ENDCG
}
FallBack "Diffuse"
}
3. Aplicación del sombreador al terreno
Después de crear el sombreador, debes aplicarlo al material del terreno:
- Haz clic derecho en la ventana del proyecto y selecciona Crear > Material. Ponle a este material el nombre TerrainMaterial.
- En el Inspector de materiales, haga clic en el menú desplegable Shader y elija Personalizado > TerrainShader.
- Asigne texturas para MainTex y BumpMap en el Inspector de materiales.
- Ahora, asigne este material a su terreno seleccionando el objeto Terreno, yendo al Inspector de Terreno y configurando el Material del Terreno en la sección Materiales.
4. Ajuste del sombreador para mejorar el rendimiento
Para garantizar que el sombreador funcione sin problemas, especialmente en terrenos grandes, podemos modificar algunas configuraciones:
- Reduzca la resolución del mapa normal o utilice uno simplificado para reducir la carga de la GPU.
- Deshabilite cualquier característica del sombreador que no esté utilizando (como el mapeo de paralaje o efectos de iluminación adicionales).
- Utilice el sistema Terrain LOD integrado de Unity para ajustar dinámicamente el nivel de detalle en partes distantes del terreno.
5. Ajustes y pruebas finales
Una vez que se aplica el sombreador y se configura el terreno, pruébelo en diferentes condiciones de iluminación. Puede ajustar las propiedades Specular y Smoothness del sombreador para ver cómo afectan el aspecto general del terreno en distintos entornos.
Conclusión
Con un sombreador de terreno personalizado, puedes mejorar la fidelidad visual de tus terrenos mientras mantienes el control sobre el rendimiento. No dudes en ampliar este sombreador agregando funciones adicionales como texturas de detalle, mapeo triplanar o teselación.