Shader_Shader的其他属性及使用003

来源:互联网 发布:mac os界面 编辑:程序博客网 时间:2024/06/06 04:24

Shader的其他属性及其使用规则都在源码中注释了,在这里不在赘述
参考代码如下:

//定义Shader 的名字  不要求和文件的名字一样//YY是Shader的目录  MyShader是Shader 的名字Shader"YY/01 MyShader"{    //属性部分  只能有一块    //属性中的代码是没有分号的    Properties{        //属性        //"_Color"是自定义的 "Color"是自定义的  Color是固定的  (1,1,1,1)使用的是RGBA颜色系统        _Color("Color",Color) = (1,1,1,1)  //对应float4类型        //向量        _Vector("Vector",Vector) = (1,2,3,4)//对应float4类型        //整型        _Int("Int",Int) = 12//对应float类型        //浮点类型        _Float("Float",Float) = 12.0//对应float类型        //设置一个范围        _Range("Range",Range(1,11)) = 6//对应float类型        //2D纹理        _2D("Texture",2D) = "white"{}//对应sampler2D类型        //立方体贴图        _Cube("Cube",Cube) = "white"{}//对应samplerCube类型        //3D纹理        _3D("Texture",3D) = "white"{}//对应sampler3D类型    }    //子Shader块  类似类  一个Shader中可以有很多Shader 为了适配不同种类的显卡    //显卡运行效果的时候 从第一个SubShader开始,如果第一个SubShader里面的效果都可实现,那么就使用第一个SubShader,如果显卡发现这个SubShader里面某些效果实现不了,它会自动运行下一个SubShader    SubShader{        //pass块类似方法  可以有很多pass块 至少有一个Pass块        //在pass内部写Shader代码        pass {            //声明包含Cg代码的块            //Cg代码中的是要使用分号隔开的            CGPROGRAM            //使用Cg语言编写Shader代码            //_Color 和属性中的变量保持一致  由于Color类型是4个分量组成  所以在这里使用float4代替            //在Cg块中使用属性的值需要在声明一次            float4 _Color;            float4 _Vector;            float _Int;            float _Range;            sampler2D _2D;            samplerCube _Cube;            sampler3D _3D;            ENDCG        }  //这里面没有分号的    }    //如果上面的所有的SubShader都不满足  则执行备用方案  VertexLit 是一个Shader的名字  直接指定名称即可    FallBack "VertexLit"}
原创粉丝点击