Version: 6000.3
语言: 中文
ShaderLab:遗留雾
ShaderLab:传统的 alpha 测试

ShaderLab:传统光照

注意:该ShaderLabUnity 用于定义 Shader 对象结构的语言。更多信息
请参阅术语表
此页面上的功能是旧版的,仅用于向后兼容性。如果您的着色器在 GPU 上运行的程序。更多信息
请参阅术语表
源文件包含 HLSL 代码,Unity 会完全忽略这些命令。如果您的着色器源文件不包含 HLSL 代码,Unity 会在导入时将这些命令编译为常规着色器程序。

渲染管线兼容性

功能名称 内置渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
通用渲染管线(URP) 高清渲染管线 (HDRP) 定制 SRP
传统照明 是的

概述

材质和光照参数用于控制内置顶点光照。顶点照明是为每个顶点计算的标准 Direct3D/OpenGL 照明模型。开灯会打开它。照明受以下因素影响材质(Material)定义表面应如何渲染的资产。更多信息
请参阅术语表
块、ColorMaterialSeparateSpecular 命令。

顶点着色和照明是为任何渲染几何体计算的第一个效果。它在顶点级别运行,并计算在应用纹理之前使用的基色。

语法

顶级命令控制是否使用固定功能照明,以及一些配置选项。主要设置在材质块中,详见下文。

颜色

    Color color

将对象设置为纯色。颜色是括号中的四个 RGBA 值,或方括号中的颜色属性名称。

材料

    Material {Material Block}

Material 块用于定义对象的材质属性。

照明

    Lighting On | Off

要使 Material 块中定义的设置具有任何效果,您必须使用 Lighting On 命令启用 Lighting。如果照明关闭,则直接从“颜色”命令中获取颜色。

独立镜面反射(SeparateSpecular)

    SeparateSpecular On | Off

此命令使高光照明添加到着色器通道的末尾,因此高光照明不受纹理的影响。仅当使用“照明打开”时才有效。

颜色材质

    ColorMaterial AmbientAndDiffuse | Emission

使用每个顶点的颜色,而不是材质中设置的颜色。AmbientAndDiffuse 替换材质的 Ambient 和 Diffuse 值;发射取代材料的发射值。

材质块

这包含材质如何对光线做出反应的设置。这些属性中的任何一个都可以被省略,在这种情况下,它们默认为黑色(即没有效果)。

漫反射色:漫反射颜色组件。这是对象的基色。

环境颜色:环境色组件。这是对象被环境光源不来自任何特定方向的光源,在所有方向上为场景提供相等的光源。更多信息
请参阅术语表
设置

镜面反射颜色镜面反射高光的颜色。
请参阅术语表
:
对象的高光的颜色。

光泽数:高光的锐度,介于 0 和 1 之间。在 0 时,您会得到一个看起来很像漫反射照明的巨大高光,在 1 时,您会得到一个小斑点。

发射颜色:对象未受到任何光线照射时的颜色。

照射到对象的光源的全色为:

环境光 * 光照窗口的环境强度设置 + (光源颜色 * 漫反射 + 光源颜色 * 镜面反射)+ 发射

对于击中对象的所有光源,方程中的光源部分(括号内)将重复。

通常,你希望保持“漫反射”和“环境”颜色相同(所有内置着色器都这样做)。

例子

始终以纯红色渲染对象:

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

将对象涂成白色并应用顶点光照的基本着色器:

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

将材质颜色添加为材质中可见的属性的扩展版本检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
:

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

最后,一个成熟的顶点光照着色器(另请参阅 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:遗留雾
ShaderLab:传统的 alpha 测试