Version: 2019.1
ShaderLab: Name
ShaderLab: Combinadores de Texturas Legacy

ShaderLab: Legacy Lighting

Los parámetros del material y de la iluminación se utilizan para controlar la iluminación incorporada del vértice. El Vertex lighting (iluminación de vértices) es el modelo de iluminación Direct3D/OpenGL estándar que se calcula para cada vértice. Lighting on lo enciende. La iluminación se ve afectada por los comandos Material, ColorMaterial y SeparateSpecular.

Nota: Los comandos Material/Lighting no tienen efecto cuando se utilizan vertex programs; Como en ese caso todos los cálculos se describen completamente en el shader. Es aconsejable usar shaders programables en estos días en lugar del legacy vertex lighting. Para estos no utilice ninguno de los comandos que se describen aquí, sino que defina sus propios vertex y fragment programs donde usted hace toda la iluminación, texturas y cualquier otra cosa usted mismo.

Vertex Coloring & Lighting es el primer efecto que se calcula para cualquier geometría renderizada. Funciona en el nivel de vértice y calcula el color base que se utiliza antes de aplicar texturas.

Sintaxis

Los comandos de nivel superior controlan si se debe utilizar una iluminación de función fija o no y algunas opciones de configuración. La configuración principal se encuentra en el Material Block, detallado más adelante.

Color

    Color color

Configura el objeto en un color sólido. Un color es cuatro valores RGBA entre paréntesis o un nombre de propiedad de color entre corchetes cuadrados.

Material

    Material {Material Block}

El Material block se utiliza para definir las propiedades del material del objeto.

Lighting

    Lighting On | Off

Para que los ajustes definidos en el Material block tengan algún efecto, debe activar la iluminación con el comando Lighting On. Si la iluminación está desactivada, el color se toma directamente del comando Color.

SeparateSpecular

    SeparateSpecular On | Off

Este comando hace que la specular lighting (iluminación especular) se agregue al final del pass del shader, por lo que la iluminación especular no se ve afectada por la texturización. Sólo tiene efecto cuando se utiliza Lighting On.

ColorMaterial

    ColorMaterial AmbientAndDiffuse | Emission

Hace que el color por vértice se use en lugar de los colores configurados en el material. AmbientAndDiffuse reemplaza los valores Ambient y Diffuse del material; Emission sustituye un Valor de emisión del material.

Material Block

Contiene ajustes de cómo el material reacciona a la luz. Cualquiera de estas propiedades se puede dejar de lado, en cuyo caso por defecto caen a negro (es decir, no tienen ningún efecto).

Diffuse color: El componente de color difuso. Este es el color base de un objeto.

Ambient color: El componente de color ambiente. Este es el color que el objeto tiene cuando es golpeado por la luz de ambiente configurada en la ventana de Lighting.

Specular color: El color del resalte especular del objeto.

Shininess number: La nitidez del resaltado, entre 0 y 1. En 0 se obtiene un gran resaltado que se parece mucho a la iluminación difusa, en 1 se obtiene una pequeña mancha.

Emission color: El color del objeto cuando no es golpeado por ninguna luz.

El color completo de las luces que golpea el objeto es:

Ambient * Lighting Window’s Ambient Intensity setting + (Light Color * Diffuse + Light Color * Specular) + Emission

Las partes de luz de la ecuación (entre paréntesis) se repiten para todas las luces que golpean el objeto.

Normalmente, desea mantener los colores Difuso y Ambiental igual (todos los shaders integrados de Unity hacen esto).

Ejemplos

Siempre renderice el objeto en rojo puro:

Shader "Solid Red" {
    SubShader {
        Pass { Color (1,0,0,0) }
    }
}

Shader básico que colorea el objeto blanco y aplica una vertex lighting (iluminación del vértice):

Shader "VertexLit White" {
    SubShader {
        Pass {
            Material {
                Diffuse (1,1,1,1)
                Ambient (1,1,1,1)
            }
            Lighting On
        }
    }
}

Una versión extendida que añade color de material como una propiedad visible en el Inspector de materiales:

Shader "VertexLit Simple" {
    Properties {
        _Color ("Main Color", COLOR) = (1,1,1,1)
    }
    SubShader {
        Pass {
            Material {
                Diffuse [_Color]
                Ambient [_Color]
            }
            Lighting On
        }
    }
}

Y, por último, un shader de vértices totalmente iluminado (mirar también la página de referencia SetTexture):

Shader "VertexLit" {
    Properties {
        _Color ("Main Color", Color) = (1,1,1,0)
        _SpecColor ("Spec Color", Color) = (1,1,1,1)
        _Emission ("Emmisive Color", Color) = (0,0,0,0)
        _Shininess ("Shininess", Range (0.01, 1)) = 0.7
        _MainTex ("Base (RGB)", 2D) = "white" {}
    }
    SubShader {
        Pass {
            Material {
                Diffuse [_Color]
                Ambient [_Color]
                Shininess [_Shininess]
                Specular [_SpecColor]
                Emission [_Emission]
            }
            Lighting On
            SeparateSpecular On
            SetTexture [_MainTex] {
                Combine texture * primary DOUBLE, texture * primary
            }
        }
    }
}
ShaderLab: Name
ShaderLab: Combinadores de Texturas Legacy