美文网首页unity shader 技术从入门到放弃Unity Shader分享Unity教程合集
2.《unityshader中级篇》顶点着色器获取模型数据

2.《unityshader中级篇》顶点着色器获取模型数据

作者: 一壶开心酒 | 来源:发表于2017-08-05 21:24 被阅读33次

    在上节我们是使用POSITION来得到模型的顶点位置,假如我们想获取更多的模型数据那???例如获取纹理坐标,法线方向

    答案就是结构体

                //使用一个结构体来定义顶点着色器的输入
                struct a2v {
                    float4 vertex : POSITION;
                    //POSITION语义告诉引擎用模型空间空间顶点坐标填充vertex
                    float3 normal : NORMAL;
                    //NORMAL就告诉引擎用模型的空间法线方向填充normal变量
                    float4 texcoord : TEXCOORD0;
                    //TEXCOOD0告诉引擎用模型的第一套uv填充texcoord变量
                };
    

    我们定义了一个a2v结构体,里面含有模型数据。
    在unity中,使用该材质的meshrender组件提供这些数据来填充上述语义的数据,在调用drawcall时候,meshrender组件会把它渲染的模型数据给unityshader。模型数据有很多,例如顶点颜色了等等,通过定义结构体我们就可以在顶点着色器中访问这些模型数据。

    顶点着色器与片元着色器交互

    有时候我们希望从顶点着色器中输出一些数据,例如模型的纹理坐标,法线进行传递给片元着色器,他们是怎样交互的那?

                //来定义顶点着色器的输出
                struct v2f {
                    float4 pos : SV_POSITION;
                    //SV_POSITION告诉引擎pos中存储是顶点在裁剪空间中的位置信息
                    fixed3 color : COLOR0;
                    //COLOR0表示存储颜色信息
                };
    

    v2f结构体用于在顶点着色器和片元着色器之间传递消息,顶点着色逐顶点调用,片元着色器逐片元调用,片元着色器的输入实际就是顶点着色器的输出进行差值后得到的
    欢迎关注我的微博,给大家带来欢乐

    相关文章

      网友评论

        本文标题:2.《unityshader中级篇》顶点着色器获取模型数据

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