《Unity Shader入门精要》读书笔记第一章——shaderlab语义

这个系列主要是通过阅读《Unity Shader入门精要》之后的一些感想,给读者一些启发。
联系邮箱:glasirius@gmail.com

ShaderLab是Unity结合CG和HLSL的一些语义,开发出来的可编程管线语言,主要优势是能基于Unity实现跨平台。

整体上来看,跟脚本语言有些类似,例如CG外的部分大小写不敏感,不需要分隔符等等。

所以,可以当成类似JavaScript学习,CG部分当成C语言来看,会熟悉很多,有些规则是一样的。

//取个名字
Shader "test/5/simple_shader_test"
{
    //定义属性,可以通过外部的c#语言传值
    Properties
    {
        //_color:变量名
        //"color":编辑器里显示的tips
        //COLOR:变量类型    
        _color("color",COLOR)=(1,1,1,1)
    }

    //子着色器,可以存在多个
    SubShader
    {
        //一次渲染
        Pass
        {
            //使用cg代码段
            CGPROGRAM
            //预编译,顶点/片元着色器指定函数
            #pragma vertex vert
            #pragma fragment frag
            
            //外部变量引用,跟Properties同名
            float4 _color;

            //从应用阶段拿数据结构
            struct a2v
            {
                //float4:cg变量类型
                //POSITION:unity的变量类型
                float4 pos:POSITION;
            };

            //从顶点着色器拿数据结构
            struct v2f
            {
                float4 pos:SV_POSITION;
            };

            v2f vert(a2v i)
            {
                v2f o;
                //UNITY_MATRIX_MVP:unity提供的宏,代表模型空间到裁切空间的变换矩阵
                o.pos = mul(UNITY_MATRIX_MVP,i.pos);
                return o;
            }

            //SV_TARGET:表示返回值给系统
            float4 frag(v2f i):SV_TARGET
            {
                float4 o;
                o = _color;
                return o;
            }


            ENDCG
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值