【Unity Shaders】学习笔记之固定着色器命令(二)

我是小毛驴,一个游戏人,我的梦想是世界和平。转载请注明出处:http://blog.csdn.net/liulongling/article/details/51519006

一、准备

  在开始着色之前,我们需要创建一个场景(Scene)和球体。

   1.1 Diffuse

  漫反射计算一个简单的(Lambertian)光照模型。光照强度随着入射光线与表面的夹角减小而减小。光照强度只依赖于这个夹角,而且不会随着相机的移动或者旋转而改变。

Shader "liulongling/t1"
{
    Properties
    {
        _MainTex("主纹理",2D)="white"{}
        _DiffuseColor("漫反射",Color)=(1,1,1,1)
    }

    SubShader
    {
        Pass
        {

            Material
            {
                Diffuse[_DiffuseColor]//漫反射
            }
        }
    }
}

提示:这里把漫反射颜色改为红色后,球体颜色并未发生改变,是因为只有开启灯光之后,顶点光照才会有作用,材质块中的设定才会有效,所以加上代码Lighting On | Off:开启或关闭顶点光照 效果才会出来!如下:

   1.2 Lighting

这里写图片描述

  效果出来了有木有..

   1.3 Specular Properties 高光属性 

  Specular 和 Diffuse 使用同样简单的光照模型,另外增加了一个和观察角度相关的反射高光。这个叫做Blinn-Phong 高光模型。它包含了一个反射高光,取决于物体反射高光物体表面角度,光线入射角度和观察角度。这种高光计算方法实际上恰好是模拟实时光源模糊反射的一种方法。高光模糊等级通过检视面板里的Shininess来控制。

_Specular("高光",Color) =(1,1,1,1)
Specular[_Specular]//高光 

这里写图片描述

注意:貌似加了高光前后并没有什么效果,这是为什么呢?因为只有开启独立高光SeparateSpecular On看到镜面反射后 才有效果

  1.4 SeparateSpecular 

  SeparateSpecular On | Off:开启独立镜面反射。这个命令会添加高光光照到着色器通道的末尾,因此贴图对高光没有影响。只在光照开启时有效!

  1.5 Emission 

  自发光颜色,当不被任何光照所照到时,对象的颜色。

Properties
{
  _Emission("自发光",Color)=(1,1,1,1)
}

SubShader
{
    Emission[_Emission]//自发光
}

这里写图片描述

  1.6 Shininess 

  加亮时的光泽度,在0和1之间。0的时候你会发现更大的高亮也看起来像漫反射光照,1的时候你会获得一个细微的亮斑。

这里写图片描述

  1.7 Cull

  要想保持30FPS的同时处理数十万的三角形,以现在的主流机器来说还是有些困难的。为了提高效率,人们提出了很多方法,其中包括LOD、Culling 剔除,就是被挡住或视角以外的我们看不到的物体,因为它们无关紧要,所以我们就不去绘制,以节省资源,提高场景的运行效率。比如立方体,你不会看到背离你的面,因此我们不需要绘制出背面,因此也被称做背面剔除

  语法:Cull Back | Front| Off 

  Cull Front—— 不绘制面向观察者的几何面

  Cull Front—— 不绘制面向观察者的几何面

  Cull Off —— 显示所有面


作者:小毛驴,一个游戏人 
梦想:世界和平   
    
本博客中未标明转载的文章归作者小毛驴所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

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