Shader data types and precision
ShaderLab syntax: Propiedades

Sintaxis ShaderLab: Shader

All Shaders files in Unity are written in a declarative language called “ShaderLab”. In the file, a nested-braces syntax declares various things that describe the shader – for example which shader properties should be shown in material inspector; what kind of hardware fallbacks to do; what kind of blending modes to use etc.; and actual “shader code” is written in CGPROGRAM snippets inside the same shader file (see surface shaders and vertex and fragment shaders).

This page and the child pages describes the nested-braces “ShaderLab” syntax. The CGPROGRAM snippets are written in regular HLSL/Cg shading language, see their documentation pages.

Shader es el comando raíz de un archivo de Sombreador(Shader). Cada archivo debe definir un (y uno solo) Sombreador(Shader). Específica cómo cualquier objeto cuyo material utiliza este sombreador es renderizado.

Sintaxis

Shader "name" { [Properties] Subshaders [Fallback] [CustomEditor] }

Define un sombreador(shader). Va a aparecer en el inspector del materia listado debajo de name. Los sombreadores(shaders) opcionalmente definen una lista de propiedades que se muestran como ajustes del material. Después de esto viene una lista de SubShaders, y opcionalmente un fallback.

Detalles

Propiedades

Los sombreadores pueden tener una lista de properties. Cualquier propiedad declarada en un sombreador es mostrada en el inspector del material dentro de Unity. Las propiedades típicas son el color del objeto, texturas, o los valores arbitrarios para ser utilizados por este sombreador.

SubShaders & Fallback

Cada sombreador es comprendido por una lista de sub-shaders. Usted debe tener al menos uno. Cuando cargue un sombreador, Unity va a ir a través de la lista de subshaders, y coge el primero soportado por la máquina del usuario final. Si ningún subshader es soportado, Unity va a intentar utilizar fallback shader.

Diferentes tarjetas gráficas tiene diferentes capacidades. Esto plantea un problema eterno para desarrolladores de juegos; usted quiere que su juego se vea increíble en el último hardware, pero no quiere que sea disponible para solo el 3% de la población. En este momento es cuándo los subshaders entran. Cree un subshader para tarjetas más viejas. Estos subshaders pueden implementar el efecto que usted quiere de una manera más lenta, o pueden escoger no implementar algunos detalles.

Shader “level of detail” (LOD) and “shader replacement” are two techniques that also build upon subshaders, see Shader LOD and Shader Replacemement for details.

Ejemplos

He aquí uno de los sombreadores más simples posibles:

// colored vertex lighting
Shader "Simple colored lighting"
{
    // a single color property
    Properties {
        _Color ("Main Color", Color) = (1,.5,.5,1)
    }
    // define one subshader
    SubShader
    {
        // a single pass in our subshader
        Pass
        {
            // use fixed function per-vertex lighting
            Material
            {
                Diffuse [_Color]
            }
            Lighting On
        }
    }
}

Este sombreador define una propiedad de color _Color (que se muestra en el inspector del material como Main Color) con un valor predeterminado de (1, 0.5, 0.5, 1). Luego un solo subshader es definido. El subshader consiste de un Pass que prende la iluminación vertex y establece un material básico para ello.

See more complex examples at Surface Shader Examples or Vertex and Fragment Shader Examples.

Véase también

Sintaxis ShaderLab: Shader

Shader data types and precision
ShaderLab syntax: Propiedades