美文网首页
一、Shader基础:1、认识shader文件结构

一、Shader基础:1、认识shader文件结构

作者: GameObjectLgy | 来源:发表于2021-01-09 10:14 被阅读0次

1、新建shader和材质,将shader给材质
2、定义属性,这部分属性后面就可以直接在材质的面板上进行调整
3、SubShader实现部分

这里介绍的是unity里的shader文件结构

Shader"Mocha/01 myshader"{//这里制定Shader的名字,不要求与文件名保持一致

Properties{
//属性
_Color("Color",Color)=(1,1,1,1)        //颜色float4
_Vector("Vector",Vector)=(1,2,3,4)    //向量float4
_Int("Int",Int)=1234                //整数float
_Float("Float",Float)=4.5            //小数float
_Range("Range",Range(1,11))=6        //随机数float
_2D("Texture",2D)="white"{}            //图片sampler2D(其中white代表当未指定图片时默认其未一张白色的图片,也可改为其他颜色)
_Cube("Cube",Cube)="White"{}        //立方体纹理samplerCube(其中white代表当未指定图片时默认其未一张白色的图片,也可改为其他颜色)用于天空盒子等
_3D("Texure",3D) = "White"{}        //3D贴图sampler3D(其中white代表当未指定图片时默认其未一张白色的图片,也可改为其他颜色)
}

//SubShader可以有很多个,显卡运行效果的时候,从第一个SubShader开始,如果里面的效果全部可以实现,那么就使用第一个SubShader,如果不支持则进行下一个
SubShader{
    
    //每个SubShader至少有一个Pass块  相当于一个方法
    Pass{
    
    //在这里编写Shader代码
        CGPROGRAM
        //使用CG语言编写Shader代码
        //每次使用上面定义好的属性时需要重新定义一下并且此处每行代码“;”结束
        //取到的值为上述默认定义好的值
        float4 _Color;
        float4 _Vector;
        float _Int;
        float _Float;
        float _Range;
        sampler2D _2D;
        samplerCube _Cube;
        sampler3D _3D;

        //float half fixed 的区别
        //一般小数这三个都可以声明定义
        float t1;
        half t2;
        fixed t3;
        half2 t4;
        fixed2 t5;
        //区别在于范围不同 
        //float 32位
        //half 16位  -6万 -- +6万
        //fixed 11位  -2 -- +2 (一般颜色用fixed)

        ENDCG

    }

}

//当所有的SubShader都不符合的时候,则用此备胎Shader效果可自定义备胎Shader
Fallback "VertexLit"

}

4、shaderlab是脚本语言,可以动态编译

相关文章

网友评论

      本文标题:一、Shader基础:1、认识shader文件结构

      本文链接:https://www.haomeiwen.com/subject/uaavuktx.html