ShaderAndEffect

一、Main Maps

1.Metallic(金属光泽)

(1)Metallic参数值存储在RGBA纹理文件的红色通道内, 红色通道的值越高,则金属光泽越明显. 其他通道没有使用.
①注意:将纹理添加到材质的Metallic槽中后, 原来检阅面板上的平滑度(smoothness)滑动条将变为不可用状态.
②平滑度由金属纹理贴图的alpha通道数据指定.如果纹理文件没有alpha通道, 平滑度则默认为最大值.

2.Normal Map(法线贴图)

(1)取代模型表面的法线, 重新定义表面反射光线的方向.
(2)这种技术常用于在精度较低的模型表面上模拟产生高精度的模型细节.
(3)使用RGB贴图, 贴图中的三个彩色通道被用于定义法线方向向量.

3.Ambient Occlusion(环境光遮挡)

(1)是一种作用于模型凹陷处的光照效果.
(2)在模型上有时会出现腔孔或者布料褶皱等通常难以接收到足够光照的凹陷部分, 环境光遮挡效果是模型的这种特殊部分显得比其他正常部分更暗些.
(3)这种效果与法线贴图和金属光泽效果结合在一起,可以是复杂模型显得非常真实.
(4)在标准着色器里,遮挡使用获取RGB贴图.

4.Emission(自发光)

(1)标准着色器里,自发光特性使用RGB贴图.该贴图可以制定一个颜色,以便对自发光的颜色进行修改.

5.Specular(高光)

(1)减小平滑度(Smoothness)值,将使物体表面对环境的反射程度降低, 高光区域的尺寸增加,从而使表面显得更加粗糙.
** 将多个材质放到一个模型上时,一个材质会覆盖在另一个材质的上面.只有将上层材质的渲染模式设置为透明,剪裁或者混合时,下层材质才可见.
警告: 将多个材质设置到同一个模型上回影响运行效率, 考虑使用多遍着色.

6.UV缩放倍数(Tiling)和UV起始位置(Offset)

(1)设置材质的UV缩放倍数的X值为-7, Y值为7, 会将为例的显示尺寸缩小为原来的1/7.

二、自定义着色器

Shader "PACKT/Moon" 
{
    Properties 
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {} 
        _Color ("Color", Color) = (1, 1, 1, 1)
    }
    SubShader 
    {
        /** CG语言来实现具体的着色工作
        Pass
        {
            Color [_Color]
            setTexture [_MainTex]
            {
                Combine Primary * Texture
            }
        }
        */

        CGPROGRAM
        #pragma surface surf Lambert //着色器编译指令,使用支持明暗效果的兰伯特光照模型.
        //Input结构体定义了CG代码块的输入数据有哪些内容,这里的数据包含了纹理和座标(UV)数据,
        //这是在物体表面进行贴图的基础

        /// =======================为着色器添加光照支持Start==========================
        struct Input { 
            float2 uv_MainTex; 
        };
        sampler2D _MainTex; //纹理属性处理为二维采样器对象
        float4 _Color; //颜色属性处理为包含四个浮点数的值,分别代表RGBA四个通道
        //定义了着色器的输入数据IN,与输出数据o.
        void surf (Input IN, inout SurfaceOutput o) {
            //着色器需要将纹理贴图的颜色值与但颜色值相乘, 并作为反光值输出
            o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb * _Color.rgb;
        }
        /// =======================为着色器添加光照支持Start============================

        ENDCG
    }
}

– ”Color” 中的Color将显示在材质属性的检阅面板上
– _MainTex属性, 通常被用于定义基础纹理贴图的属性名称.基础纹理贴图一般指着色器的反光(Abledo)属性, 属性类型2D指定该属性是一个二维贴图.
– 蓝色代码片段 表示通过属性名称为着色过程设置纹理贴图, 纹理颜色将与当前颜色相乘.

1.Properties(属性)

(1)属性区为着色器定义了原始材质属性, 例如: 定义一个颜色值, 一个漫反射纹理, 或者一个可以由使用者调用的滑动条控件等.
(2)属性类似于C#或者UnityScript中的公有变量.
(3)双引号内的名称将显示在材质属性的检阅面板上, 颜色属性被定义为一组由四个实数组成的值, 分别代表R,G,B,A.

2.SubShader(子着色器)

(1)包含这色漆的主体部分, 负责处理输入的颜色,纹理以及其他数据.
(2)所有着色器必须包含一个子着色器.
(3)子着色器下有一个Pass, 代表该着色器中包含一遍渲染, 这是对子着色器的最低要求.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章