Changeset 2921


Ignore:
Timestamp:
Sep 14, 2013, 7:34:05 PM (6 years ago)
Author:
benlitz
Message:

gpu: moved VertexUsage to shader.h and added GetUsage() and GetIndex() to ShaderAttrib

Location:
trunk/src/lol/gpu
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lol/gpu/shader.h

    r2816 r2921  
    2222{
    2323
     24/* A safe enum to indicate how a vertex stream is going to be used. For
     25 * now there is only TexCoord and not TexCoord0 TexCoord1 etc. because
     26 * we can always reorganise the vertex declaration for the indices to
     27 * match. If the need arises these enums will be added. */
     28struct VertexUsage
     29{
     30    enum Value
     31    {
     32        Position = 0,
     33        BlendWeight,
     34        BlendIndices,
     35        Normal,
     36        PointSize,
     37        TexCoord,
     38        TexCoordExt,
     39        Tangent,
     40        Binormal,
     41        TessFactor,
     42        PositionT,
     43        Color,
     44        Fog,
     45        Depth,
     46        Sample,
     47
     48        Max
     49    }
     50    m_value;
     51
     52private:
     53    static String GetName(Value v, bool use_simple)
     54    {
     55        String tmp = String("");
     56        if (!use_simple) tmp += "<";
     57        switch (v)
     58        {
     59            case Position:      { tmp += "Position";    break; }
     60            case BlendWeight:   { tmp += "BlendWeight"; break; }
     61            case BlendIndices:  { tmp += "BlendIndices";break; }
     62            case Normal:        { tmp += "Normal";      break; }
     63            case PointSize:     { tmp += "PointSize";   break; }
     64            case TexCoord:      { tmp += "TexCoord";    break; }
     65            case TexCoordExt:   { tmp += "TexCoordExt"; break; }
     66            case Tangent:       { tmp += "Tangent";     break; }
     67            case Binormal:      { tmp += "Binormal";    break; }
     68            case TessFactor:    { tmp += "TessFactor";  break; }
     69            case PositionT:     { tmp += "PositionT";   break; }
     70            case Color:         { tmp += "Color";       break; }
     71            case Fog:           { tmp += "Fog";         break; }
     72            case Depth:         { tmp += "Depth";       break; }
     73            case Sample:        { tmp += "Sample";      break; }
     74            default:            { tmp += "UNDEFINED";   break; }
     75        }
     76        if (!use_simple) tmp += ">";
     77        return tmp;
     78    }
     79
     80public:
     81    static String GetName(Value v)
     82    {
     83        return GetName(v, false);
     84    }
     85
     86    static String GetNameList(uint32_t v)
     87    {
     88        String tmp = String("<");
     89        int nb = 0;
     90        for (int i = 0; i < Max; ++i)
     91        {
     92            if (v & (1<<i))
     93            {
     94                if (nb != 0)
     95                    tmp += ", ";
     96                tmp += GetName(Value(i), true);
     97                ++nb;
     98            }
     99        }
     100        return tmp + ">";
     101    }
     102
     103    inline VertexUsage(Value v) : m_value(v) {}
     104    inline VertexUsage(int v) : m_value((Value)v) {}
     105    inline operator Value() { return m_value; }
     106};
     107
    24108struct ShaderUniform
    25109{
     
    42126public:
    43127    inline ShaderAttrib() : m_flags((uint64_t)0 - 1) {}
     128        inline bool IsValid() { return m_flags != (uint64_t)0 - 1; }
     129        inline VertexUsage GetUsage() { return VertexUsage((int)(m_flags >> 16) & 0xffff); }
     130        inline int GetIndex() { return (int)(m_flags & 0xffff); }
    44131
    45132private:
  • trunk/src/lol/gpu/vertexbuffer.h

    r2919 r2921  
    3737private:
    3838    class VertexBufferData *m_data;
    39 };
    40 
    41 /* A safe enum to indicate how a vertex stream is going to be used. For
    42  * now there is only TexCoord and not TexCoord0 TexCoord1 etc. because
    43  * we can always reorganise the vertex declaration for the indices to
    44  * match. If the need arises these enums will be added. */
    45 struct VertexUsage
    46 {
    47     enum Value
    48     {
    49         Position = 0,
    50         BlendWeight,
    51         BlendIndices,
    52         Normal,
    53         PointSize,
    54         TexCoord,
    55         TexCoordExt,
    56         Tangent,
    57         Binormal,
    58         TessFactor,
    59         PositionT,
    60         Color,
    61         Fog,
    62         Depth,
    63         Sample,
    64 
    65         Max
    66     }
    67     m_value;
    68 
    69 private:
    70     static String GetName(Value v, bool use_simple)
    71     {
    72         String tmp = String("");
    73         if (!use_simple) tmp += "<";
    74         switch (v)
    75         {
    76             case Position:      { tmp += "Position";    break; }
    77             case BlendWeight:   { tmp += "BlendWeight"; break; }
    78             case BlendIndices:  { tmp += "BlendIndices";break; }
    79             case Normal:        { tmp += "Normal";      break; }
    80             case PointSize:     { tmp += "PointSize";   break; }
    81             case TexCoord:      { tmp += "TexCoord";    break; }
    82             case TexCoordExt:   { tmp += "TexCoordExt"; break; }
    83             case Tangent:       { tmp += "Tangent";     break; }
    84             case Binormal:      { tmp += "Binormal";    break; }
    85             case TessFactor:    { tmp += "TessFactor";  break; }
    86             case PositionT:     { tmp += "PositionT";   break; }
    87             case Color:         { tmp += "Color";       break; }
    88             case Fog:           { tmp += "Fog";         break; }
    89             case Depth:         { tmp += "Depth";       break; }
    90             case Sample:        { tmp += "Sample";      break; }
    91             default:            { tmp += "UNDEFINED";   break; }
    92         }
    93         if (!use_simple) tmp += ">";
    94         return tmp;
    95     }
    96 
    97 public:
    98     static String GetName(Value v)
    99     {
    100         return GetName(v, false);
    101     }
    102 
    103     static String GetNameList(uint32_t v)
    104     {
    105         String tmp = String("<");
    106         int nb = 0;
    107         for (int i = 0; i < Max; ++i)
    108         {
    109             if (v & (1<<i))
    110             {
    111                 if (nb != 0)
    112                     tmp += ", ";
    113                 tmp += GetName(Value(i), true);
    114                 ++nb;
    115             }
    116         }
    117         return tmp + ">";
    118     }
    119 
    120     inline VertexUsage(Value v) : m_value(v) {}
    121     inline VertexUsage(int v) : m_value((Value)v) {}
    122     inline operator Value() { return m_value; }
    12339};
    12440
Note: See TracChangeset for help on using the changeset viewer.