美文网首页
Shader学习——自定义结构体的使用

Shader学习——自定义结构体的使用

作者: BacteriumFox | 来源:发表于2019-08-16 23:58 被阅读0次
  1. 每个顶点着色器的输入输出需要有对应的结构体,方便把输出的结构传入片元着色器操作
  2. 结构体除自己定义以外,还可以引入UnityShader库 #include "UnityCG.cginc,在库中有unity方便开发者定义的一些常用结构类型,我们可以拿来直接使用
Shader "Unlit/003"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _Color("Color",Color) = (1,1,1,1)
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            //引入unityShader库
            //#include "UnityCG.cginc"
           
           //只有在CGPROGRAM内再次定义一个与属性块内名字与类型相同的变量,属性块对应的变量才能起作用
           fixed4 _Color;


           //定义输入结构体
           struct a2v//a application dao vert
           {    
                float4 vertex:POSITION;//用模型顶点填充V变量
                float3 normal:NORMAL;//用模型的法线填充n变量
                float4 texcoord:TEXCOORD;//用模型的第一套UV填充texcoord
           };

           //定义输出结构体
           struct v2f// v vert dao frag
           {
                float4 pos:SV_POSITION;//SV_POSITION 语义告诉Unity :pos 为裁剪空间中的位置信息
                fixed3 color:COLOR;//COLORO 语义可以储存颜色信息
           };
           
           //使用UnityShader库里预制结构体
           //v2f vert(appdata_full v)
           v2f vert(a2v v)
           {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                //将【-1,1】转变成【0,1】的常用方法 x/2+0.5
                o.color = v.normal * 0.5+fixed3(0.5,0.5,0.5);
                return o;
           }

           fixed4 frag(v2f i):SV_Target
           {
                fixed3 c= i.color;
                //.xyzw .rgb .x .y .xw
                c*=_Color.rgb;
                return fixed4(c,1);
           }

            ENDCG
        }
    }
}

相关文章

  • Shader学习——自定义结构体的使用

    每个顶点着色器的输入输出需要有对应的结构体,方便把输出的结构传入片元着色器操作 结构体除自己定义以外,还可以引入U...

  • solidity基础(3)

    solidity的自定义结构体深入详解结构体,solidity中的自定义类型,我们可以使用关键字struct来进行...

  • C语言--结构体

    用户可以使用结构体自定义自己的数据类型。 结构体定义和变量声明 struct用来定义结构体,结构体一般定义如下,其...

  • 【Golang】json自定义序列化的深入解析

    对于使用结构体中嵌套结构体的情况,只有receiver为指针类型,而嵌套结构体为结构体的值语义的时候不能触发自定义...

  • 结构体

    基本概念 结构体:属于用户自定义的数据类型,允许用户存储不同的数据类型。 定义和使用 结构体数组 结构体指针 结构...

  • Go Struct

    Go语言通过自定义结构的方式来实现新的类型,结构体是类型中带有成员的复合类型。 Go语言使用结构体和结构体成员来描...

  • C结构体、共用体与C++基础1

    1、结构体 结构体是C编程中一种用户自定义的数据类型,类似于Java的JavaBean 当结构体需要内存过大,使用...

  • C++结构体

    概念 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型 定义和使用 语法:struct 结构体名{ 结构...

  • Solidity的自定义结构体深入详解(十一)|入门系列

    结构体,Solidity中的自定义类型。我们可以使用Solidity的关键字struct来进行自定义。结构体内可以...

  • Day7

    学习内容:结构体、共用体、枚举(1/2)收获: 了解了结构体变量的定义与使用 了解了结构体数组的使用; 了解了结构...

网友评论

      本文标题:Shader学习——自定义结构体的使用

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