游戏图形学——Shader1.0(Fixed Shader)

之前在游戏图形学基础介绍中介绍了渲染的基本流程以及Shader的分类,Shader1.0属于开关控制,本文主要介绍Shader1.0的基本结构,和一些基本操作。

Shader "Custom/Property"
{
    Properties //属性定义通用格式
    {
        /*以下划线开头, _name("",type)=value */
        _MainTex ("Texture", 2D) = "white" {}//表示默认值
        _TestInt("testInt",int)=1
        _TestFloat("testFloat",float)=0.5
        _TestRange("testRange",Range(1,5))=3
        _TestColor("testColor",Color)=(1,1,1)
        _TestVector("testVector",Vector)=(1,1,1,1)
    }
    SubShader
    {
        Pass
        {
        }
    }
}

上诉是Shader的通用结构,Properties 类似C#中的全局变量的定义:name(string,type)=default格式,默认以下划线开头,计算机进行渲染时会从上至下找第一个能够通过的SubShader,在SubShader中,每一个Pass都会被渲染一次。

顶点着色器

一些简单操作:
1、计算顶点的颜色:Color(0,1,0,1)或者Color[参数变量]
2、顶点变换(固定不可改变)
3、灯光的作用:DIFFUSE(漫反射), Ambien(环境光),SPECULAR(镜面反射),Emission(自发光)

Shader "Custom/Property"
{
    Properties //属性定义通用格式
    {
        _MainTex ("Texture", 2D) = "white" {}//表示默认值
        _ViewColor("Color",Color)=(0,0,0,0)
    }
    SubShader
    {
        Pass
        {
            Color[_ViewColor] //调节颜色
            /****************************
            灯光作用
            Material
            {
                DIFFUSE[_ViewColor] //漫反射
                Ambient[_ViewColor] //环境光
                SPECULAR[_ViewColor] //镜面反射
                Emission[_ViewColor] //自发光
            }
            Lighting On //灯光开关(总开关)
            SeparateSpecular On //只对高光起作用
           ****************************/
        }
    }
}

片段着色器:

文理采样:Point(就近采样),Bilinear(就近周围4个像素的平均),Trilinear(就近周围8个像素平均)

  • SetTexture[TextureName]{Texture Block}:设置文理
    TextureName:表示文理变量
    Privious:表示前面一个SetTexture出来以后的像素
    Primary:表示顶点计算出来的颜色
    Texture:等于SetTexture当前的文理变量
    Constant:表示一个固定的颜色值。
Shader "Custom/SetTexture"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _BlendTex ("Texture2", 2D) = "white" {}
        _MainColor("Color",Color)=(1,1,1,1)
    }
    SubShader
    {
        Pass
        {
            /****************************
            Color[_MainColor]
            SetTexture[_MainTex]
            {
                Combine Primary*Texture //顶点颜色和当前设置的颜色相乘
            }
            SetTexture[_MainTex]
            {
                ConstantColor[_MainColor] //固定颜色
                Combine Texture*Constant
            }
            SetTexture[_BlendTex]
            {
                Combine Previous*Texture //表示前面一个SetTexture出来以后的像素和当前像素作用
            }
            ****************************/
        }
    }
}

Shader1.0编码简单,主要是实现一些开关功能,但是Shader1.0支持所有的设备,不用考虑兼容的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值