版本:Unity 6(6000.0)
语言:英语
ShaderLab:旧版雾效
ShaderLab:旧版 Alpha 测试

ShaderLab:旧版光照

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

渲染管线兼容性

功能名称 内建 渲染管线一系列针对场景内容进行处理的操作,并将结果显示在屏幕上。Unity 为您提供预置的渲染管线,或供您自定义。 更多信息
术语表中查看
通用渲染管线 (URP) 高清渲染管线 (HDRP) 自定 SRP
旧版光照

概述

材质和光照参数用于控制内置顶点光照。顶点光照是针对每个顶点计算的标准 Direct3D/OpenGL 光照模型。Lighting on 可以将其打开。光照会受到 材质定义如何渲染表面的资产。 更多信息
术语表中查看
块、ColorMaterialSeparateSpecular 命令的影响。

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

语法

最高层命令控制是否使用固定功能光照以及一些配置选项。主要设置位于 材质块中,详见下文。

颜色

    Color color

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

材质

    Material {Material Block}

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

照明

    Lighting On | Off

要让材质模块中定义的设置生效,您必须使用启用照明命令启用照明。如果照明已关闭,则颜色将直接从颜色命令获取。

单独镜面反射

    SeparateSpecular On | Off

此命令将镜面反射光照添加到着色器过程的末尾,以便在纹理处理过程中镜面反射光照不受影响。仅在使用启用照明时有效。

颜色材质

    ColorMaterial AmbientAndDiffuse | Emission

使用逐顶点颜色,而不是材质中设置的颜色。环境光和散射光替换材质的环境光和散射光值;自发光替换材质的自发光值。

材质模块

此模块包含材质对光照的反应方式设置。任何这些属性都可以留空,在这种情况下,它们默认为黑色(即,没有效果)。

散射光颜色:散射光颜色分量。这是对象的基色。

环境光颜色:环境光颜色分量。这是对象在被环境光不会从任何特定方向射来的光,并且从各个方向为场景贡献均匀的光照。更多信息
请参见 术语表
照射到时呈现的颜色,在照明窗口中设置。

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

光泽度数值:高光的锐度,介于 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 测试