通道渲染命令

作者:追风剑情 发布于:2014-5-26 23:23 分类:Shader

颜色、材质和光照

    顶点颜色和光照是对任何要渲染的几何体所添加的第一步效果。这个操作处在顶点级别,用于计算在纹理被应用之前被使用的基础颜色。

    材质和光照参数被用于控制内置顶点光照。顶点光照是Direct3D/OpenGL标准的按顶点计算的光照模式。光照打开时,光照受材质块,颜色材质和平行高光命令的影响。相关命令语法如下所列。

Color <颜色>

    设定对象的纯色,颜色可以是用小括号括起来的RGBA值(4值的取值范围0~1),也可以是被中括号括起来的颜色属性名,下面的代码片段说明了这种语法的使用:

Color (1, 0, 0, 0) //设置颜色为红色

Color [ _MainColor ] //设置颜色为_MainColor的颜色


Material { 材质块 }

   材质块被用于定义对象的材质属性,包含材质如何和光线产生作用的设置。这些设置都是可以被忽略的,默认为值都被设为黑色(即不产生作用)。相关设置如下:

材质块设置

材质块设置 说明
Diffuse <颜色> 漫反射颜色,这是对象的基本颜色
Ambient <颜色> 环境光颜色,这是当对象被RenderSettings中设定的环境光所照射时对象所表现的颜色
Specular <颜色> 对象镜面高光的颜色
Shininess <颜色> 加亮时的光泽度,在0和1之间。0的时候会获得像漫反射光照的高亮,1的时候会获得一个细微的亮斑
Emission <颜色> 自发光颜色,当不被任何光照所照到时,对象的颜色

打在对象上的完整光照颜色是:

Ambient * RenderSettings ambient setting + (Light Color * Diffuse + Light Color * Specular) + Emission

提示

   计算公式的灯光部分(带括号)对所有打在对象上的光线重复使用,即该部分是打在对象上的所有光线经括号内公式计算后的和。


Lighting 开关状态

   定义材质块中的设定是否有效,你必须使用Lighting On命令开启光照,而Off时的颜色则通过Color命令直接给出。

SeparateSpecular 开关状态

   这个命令会添加高光光照到着色器通道的末尾,因此贴图对高光没有影响。只在光照开启时有效。

ColorMaterial 颜色

   使用顶点的颜色替代材质的颜色集。AmbientAndDiffuse替代材质的环境光和漫反射值; Emission替代材质中的自发光发射值。


下面的代码是一个完整的顶点光照着色器代码:

Shader "VertexLit" {

     Properties {

      _Color ("Main Color", Color) = (1, 1, 1, 0)	 //定义颜色属性
      _SpecColor ("Spec Color", Color) = (1, 1, 1, 1)	 //定义颜色属性
      _Emmisive ("Emmisive Color", Color) = (0, 0, 0, 0) //定义颜色属性
      _Shininess ("Shininess", Range (0.01, 1)) = 0.7	 //定义浮点数范围属性
      _MainTex ("Base (RGB)", 2D) = "white" {}	 //定义2D纹理属性
   }
   SubShader {
      Pass {
         Material {
            Diffuse [_Color]	 //设置漫反射光颜色
            Ambient [_Color]	 //设置环境光颜色
            Shininess [_Shininess]	 //设置加亮时光泽度
            Specular [_SpecColor]	 //设置镜面高光颜色
            Emission [_Emmisive]	 //设置自发光颜色
        }
        Lighting On	 //开启光照
        SeparateSpecular On	 //开启高光
        //设置纹理合并方式
        SetTexture [_MainTex] {Combine texture * primary DOUBLE, texture * primary}
      }
   } 
   FallBack "Diffuse"
}






Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号