[Unity] Shader(着色器)之固定管线

在Unity中,固定管线Shader的性能是最好的。

什么是固定管线呢?

固定渲染管线 —— 这是标准的几何&光照(T&L)管线,功能是固定的,它控制着世界、视、投影变换及固定光照控制和纹理混合。T&L管线可以被渲染状态控制,矩阵,光照和采制参数。

 

下面是一个固定管线Shader的示例:

Shader "Sbin/ff1" {
    // 固定管线
    properties {
        // 变量名("描述名",类型)=值
        _Color("主体", color)=(1,1,1,1)
        _Ambient("环境光", color)=(0.3,0.3,0.3,0.3)
        _Specular("高光", color)=(1,1,1,1)

        // 变量名("描述名",range(区域最小值,区域最大值)=默认值
        _Shininess("高光强度",range(0,8))=4
        _Emission("自发光", color)=(1,1,1,1)
    }

    SubShader {
        pass {
            //color (1, 1, 0, 1)
            //color[_Color]

            material {
                diffuse[_Color]
                ambient[_Ambient]
                specular[_Specular]
                shininess[_Shininess]
                emission[_Emission]
            }
            lighting on
            separatespecular on  // 镜面高光
        }
    }
    // FallBack "Diffuse"
}

 

关键字:

material : 物体材质属性

diffuse : 主体颜色

ambient : 环境光颜色

specular : 高光颜色

shininess : 高光强度, 越光滑的物体, 高光强度值应该越大。

emission : 自发光颜色

 

效果图:

 

【官方文档中的一些说明】

 

 

Properties 语法

Properties { Property [Property ...] }


Numbers and Sliders 数字和区域滑块
name ("display name", Range (min, max)) = number
name ("display name", Float) = number
name ("display name", Int) = number


Colors and Vectors 颜色和顶点
name ("display name", Color) = (number,number,number,number)
name ("display name", Vector) = (number,number,number,number)


Textures 纹理
name ("display name", 2D) = "defaulttexture" {}
name ("display name", Cube) = "defaulttexture" {}
name ("display name", 3D) = "defaulttexture" {}


Example (示例)

// properties for a water shader
Properties
{
    _WaveScale ("Wave scale", Range (0.02,0.15)) = 0.07 // sliders
    _ReflDistort ("Reflection distort", Range (0,1.5)) = 0.5
    _RefrDistort ("Refraction distort", Range (0,1.5)) = 0.4
    _RefrColor ("Refraction color", Color) = (.34, .85, .92, 1) // color
    _ReflectionTex ("Environment Reflection", 2D) = "" {} // textures
    _RefractionTex ("Environment Refraction", 2D) = "" {}
    _Fresnel ("Fresnel (A) ", 2D) = "" {}
    _BumpMap ("Bumpmap (RGB) ", 2D) = "" {}
}
 

 

转载于:https://www.cnblogs.com/yangyxd/p/5348668.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值