00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00033
00034
#ifndef SH_SHTEXCOORD_HPP
00035
#define SH_SHTEXCOORD_HPP
00036
00037
#include "ShAttrib.hpp"
00038
namespace SH {
00039
00044
template<
int N, ShBindingType Binding,
typename T=
float,
bool Swizzled=false>
00045 class ShTexCoord :
public ShAttrib<N, Binding, T, Swizzled> {
00046
public:
00047
ShTexCoord();
00048
ShTexCoord(
const ShGeneric<N, T>& other);
00049
ShTexCoord(
const ShTexCoord<N, Binding, T, Swizzled>& other);
00050
ShTexCoord(
const ShVariableNodePtr& node,
const ShSwizzle& swizzle,
bool neg);
00051
explicit ShTexCoord(T data[N]);
00052
00053 ~
ShTexCoord();
00054
00055
ShTexCoord& operator=(
const ShGeneric<N, T>& other);
00056
ShTexCoord& operator=(
const ShTexCoord<N, Binding, T, Swizzled>& other);
00057
00058
ShTexCoord& operator=(
const ShProgram& prg);
00059
00060
ShTexCoord& operator+=(
const ShGeneric<N, T>& right);
00061
ShTexCoord& operator-=(
const ShGeneric<N, T>& right);
00062
ShTexCoord& operator*=(
const ShGeneric<N, T>& right);
00063
ShTexCoord& operator/=(
const ShGeneric<N, T>& right);
00064
ShTexCoord& operator%=(
const ShGeneric<N, T>& right);
00065
ShTexCoord& operator*=(T);
00066
ShTexCoord& operator/=(T);
00067
ShTexCoord& operator%=(T);
00068
ShTexCoord& operator+=(T);
00069
ShTexCoord& operator-=(T);
00070
ShTexCoord& operator+=(
const ShGeneric<1, T>&);
00071
ShTexCoord& operator-=(
const ShGeneric<1, T>&);
00072
ShTexCoord& operator*=(
const ShGeneric<1, T>&);
00073
ShTexCoord& operator/=(
const ShGeneric<1, T>&);
00074
ShTexCoord& operator%=(
const ShGeneric<1, T>&);
00075
ShTexCoord<1, Binding, T, true> operator()(
int)
const;
00076
ShTexCoord<2, Binding, T, true> operator()(
int,
int)
const;
00077
ShTexCoord<3, Binding, T, true> operator()(
int,
int,
int)
const;
00078
ShTexCoord<4, Binding, T, true> operator()(
int,
int,
int,
int)
const;
00079
ShTexCoord<1, Binding, T, true> operator[](
int)
const;
00080
00081
template<
int N2>
00082
ShTexCoord<N2, Binding, T, true> swiz(
int indices[])
const;
00083
00084
ShTexCoord operator-()
const;
00085
typedef T ValueType;
00086
static const int typesize = N;
00087
static const ShBindingType binding_type = Binding;
00088
static const ShSemanticType semantic_type = SH_TEXCOORD;
00089
00090
typedef ShTexCoord<N, SH_INPUT, T> InputType;
00091
typedef ShTexCoord<N, SH_OUTPUT, T> OutputType;
00092
typedef ShTexCoord<N, SH_INOUT, T> InOutType;
00093
typedef ShTexCoord<N, SH_TEMP, T> TempType;
00094
typedef ShTexCoord<N, SH_CONST, T> ConstType;
00095
private:
00096
typedef ShAttrib<N, Binding, T, Swizzled> ParentType;
00097 };
00098
00099
template<ShBindingType Binding,
typename T,
bool Swizzled>
00100
class ShTexCoord<1, Binding, T, Swizzled> :
public ShAttrib<1, Binding, T, Swizzled> {
00101
public:
00102
ShTexCoord();
00103
ShTexCoord(
const ShGeneric<1, T>& other);
00104
ShTexCoord(
const ShTexCoord<1, Binding, T, Swizzled>& other);
00105
ShTexCoord(
const ShVariableNodePtr& node,
const ShSwizzle& swizzle,
bool neg);
00106
explicit ShTexCoord(T data[1]);
00107
00108
ShTexCoord(T);
00109
00110 ~
ShTexCoord();
00111
00112
ShTexCoord& operator=(
const ShGeneric<1, T>& other);
00113
ShTexCoord& operator=(
const ShTexCoord<1, Binding, T, Swizzled>& other);
00114
00115
ShTexCoord& operator=(T other);
00116
00117
ShTexCoord& operator=(
const ShProgram& prg);
00118
00119
ShTexCoord& operator+=(
const ShGeneric<1, T>& right);
00120
ShTexCoord& operator-=(
const ShGeneric<1, T>& right);
00121
ShTexCoord& operator*=(
const ShGeneric<1, T>& right);
00122
ShTexCoord& operator/=(
const ShGeneric<1, T>& right);
00123
ShTexCoord& operator%=(
const ShGeneric<1, T>& right);
00124
ShTexCoord& operator*=(T);
00125
ShTexCoord& operator/=(T);
00126
ShTexCoord& operator%=(T);
00127
ShTexCoord& operator+=(T);
00128
ShTexCoord& operator-=(T);
00129
ShTexCoord<1, Binding, T, true> operator()(
int) const;
00130
ShTexCoord<2, Binding, T, true> operator()(
int,
int) const;
00131
ShTexCoord<3, Binding, T, true> operator()(
int,
int,
int) const;
00132
ShTexCoord<4, Binding, T, true> operator()(
int,
int,
int,
int) const;
00133
ShTexCoord<1, Binding, T, true> operator[](
int) const;
00134
00135 template<
int N2>
00136
ShTexCoord<N2, Binding, T, true> swiz(
int indices[]) const;
00137
00138
ShTexCoord operator-() const;
00139 typedef T ValueType;
00140 static const
int typesize = 1;
00141 static const ShBindingType binding_type = Binding;
00142 static const ShSemanticType semantic_type = SH_TEXCOORD;
00143
00144 typedef
ShTexCoord<1, SH_INPUT, T> InputType;
00145 typedef ShTexCoord<1, SH_OUTPUT, T> OutputType;
00146 typedef ShTexCoord<1, SH_INOUT, T> InOutType;
00147 typedef ShTexCoord<1, SH_TEMP, T> TempType;
00148 typedef ShTexCoord<1, SH_CONST, T> ConstType;
00149 private:
00150 typedef
ShAttrib<1, Binding, T, Swizzled> ParentType;
00151 };
00152
00153 template<ShBindingType Binding, typename T,
bool Swizzled>
00154 class ShTexCoord<2, Binding, T, Swizzled> : public ShAttrib<2, Binding, T, Swizzled> {
00155
public:
00156 ShTexCoord();
00157 ShTexCoord(
const ShGeneric<2, T>& other);
00158 ShTexCoord(
const ShTexCoord<2, Binding, T, Swizzled>& other);
00159 ShTexCoord(
const ShVariableNodePtr& node,
const ShSwizzle& swizzle,
bool neg);
00160
explicit ShTexCoord(T data[2]);
00161
00162 ShTexCoord(T, T);
00163 ShTexCoord(
const ShGeneric<1, T>&,
const ShGeneric<1, T>&);
00164
00165 ~ShTexCoord();
00166
00167 ShTexCoord& operator=(
const ShGeneric<2, T>& other);
00168 ShTexCoord& operator=(
const ShTexCoord<2, Binding, T, Swizzled>& other);
00169
00170 ShTexCoord& operator=(
const ShProgram& prg);
00171
00172 ShTexCoord& operator+=(
const ShGeneric<2, T>& right);
00173 ShTexCoord& operator-=(
const ShGeneric<2, T>& right);
00174 ShTexCoord& operator*=(
const ShGeneric<2, T>& right);
00175 ShTexCoord& operator/=(
const ShGeneric<2, T>& right);
00176 ShTexCoord& operator%=(
const ShGeneric<2, T>& right);
00177 ShTexCoord& operator*=(T);
00178 ShTexCoord& operator/=(T);
00179 ShTexCoord& operator%=(T);
00180 ShTexCoord& operator+=(T);
00181 ShTexCoord& operator-=(T);
00182 ShTexCoord& operator+=(
const ShGeneric<1, T>&);
00183 ShTexCoord& operator-=(
const ShGeneric<1, T>&);
00184 ShTexCoord& operator*=(
const ShGeneric<1, T>&);
00185 ShTexCoord& operator/=(
const ShGeneric<1, T>&);
00186 ShTexCoord& operator%=(
const ShGeneric<1, T>&);
00187
ShTexCoord<1, Binding, T, true> operator()(
int) const;
00188 ShTexCoord<2, Binding, T, true> operator()(
int,
int) const;
00189 ShTexCoord<3, Binding, T, true> operator()(
int,
int,
int) const;
00190 ShTexCoord<4, Binding, T, true> operator()(
int,
int,
int,
int) const;
00191 ShTexCoord<1, Binding, T, true> operator[](
int) const;
00192
00193 template<
int N2>
00194 ShTexCoord<N2, Binding, T, true> swiz(
int indices[]) const;
00195
00196 ShTexCoord operator-() const;
00197 typedef T ValueType;
00198 static const
int typesize = 2;
00199 static const ShBindingType binding_type = Binding;
00200 static const ShSemanticType semantic_type = SH_TEXCOORD;
00201
00202 typedef ShTexCoord<2, SH_INPUT, T> InputType;
00203 typedef ShTexCoord<2, SH_OUTPUT, T> OutputType;
00204 typedef ShTexCoord<2, SH_INOUT, T> InOutType;
00205 typedef ShTexCoord<2, SH_TEMP, T> TempType;
00206 typedef ShTexCoord<2, SH_CONST, T> ConstType;
00207 private:
00208 typedef ShAttrib<2, Binding, T, Swizzled> ParentType;
00209 };
00210
00211 template<ShBindingType Binding, typename T,
bool Swizzled>
00212 class ShTexCoord<3, Binding, T, Swizzled> : public ShAttrib<3, Binding, T, Swizzled> {
00213
public:
00214 ShTexCoord();
00215 ShTexCoord(
const ShGeneric<3, T>& other);
00216 ShTexCoord(
const ShTexCoord<3, Binding, T, Swizzled>& other);
00217 ShTexCoord(
const ShVariableNodePtr& node,
const ShSwizzle& swizzle,
bool neg);
00218
explicit ShTexCoord(T data[3]);
00219
00220 ShTexCoord(T, T, T);
00221 ShTexCoord(
const ShGeneric<1, T>&,
const ShGeneric<1, T>&,
const ShGeneric<1, T>&);
00222
00223 ~ShTexCoord();
00224
00225 ShTexCoord& operator=(
const ShGeneric<3, T>& other);
00226 ShTexCoord& operator=(
const ShTexCoord<3, Binding, T, Swizzled>& other);
00227
00228 ShTexCoord& operator=(
const ShProgram& prg);
00229
00230 ShTexCoord& operator+=(
const ShGeneric<3, T>& right);
00231 ShTexCoord& operator-=(
const ShGeneric<3, T>& right);
00232 ShTexCoord& operator*=(
const ShGeneric<3, T>& right);
00233 ShTexCoord& operator/=(
const ShGeneric<3, T>& right);
00234 ShTexCoord& operator%=(
const ShGeneric<3, T>& right);
00235 ShTexCoord& operator*=(T);
00236 ShTexCoord& operator/=(T);
00237 ShTexCoord& operator%=(T);
00238 ShTexCoord& operator+=(T);
00239 ShTexCoord& operator-=(T);
00240 ShTexCoord& operator+=(
const ShGeneric<1, T>&);
00241 ShTexCoord& operator-=(
const ShGeneric<1, T>&);
00242 ShTexCoord& operator*=(
const ShGeneric<1, T>&);
00243 ShTexCoord& operator/=(
const ShGeneric<1, T>&);
00244 ShTexCoord& operator%=(
const ShGeneric<1, T>&);
00245
ShTexCoord<1, Binding, T, true> operator()(
int) const;
00246 ShTexCoord<2, Binding, T, true> operator()(
int,
int) const;
00247 ShTexCoord<3, Binding, T, true> operator()(
int,
int,
int) const;
00248 ShTexCoord<4, Binding, T, true> operator()(
int,
int,
int,
int) const;
00249 ShTexCoord<1, Binding, T, true> operator[](
int) const;
00250
00251 template<
int N2>
00252 ShTexCoord<N2, Binding, T, true> swiz(
int indices[]) const;
00253
00254 ShTexCoord operator-() const;
00255 typedef T ValueType;
00256 static const
int typesize = 3;
00257 static const ShBindingType binding_type = Binding;
00258 static const ShSemanticType semantic_type = SH_TEXCOORD;
00259
00260 typedef ShTexCoord<3, SH_INPUT, T> InputType;
00261 typedef ShTexCoord<3, SH_OUTPUT, T> OutputType;
00262 typedef ShTexCoord<3, SH_INOUT, T> InOutType;
00263 typedef ShTexCoord<3, SH_TEMP, T> TempType;
00264 typedef ShTexCoord<3, SH_CONST, T> ConstType;
00265 private:
00266 typedef ShAttrib<3, Binding, T, Swizzled> ParentType;
00267 };
00268
00269 template<ShBindingType Binding, typename T,
bool Swizzled>
00270 class ShTexCoord<4, Binding, T, Swizzled> : public ShAttrib<4, Binding, T, Swizzled> {
00271
public:
00272 ShTexCoord();
00273 ShTexCoord(
const ShGeneric<4, T>& other);
00274 ShTexCoord(
const ShTexCoord<4, Binding, T, Swizzled>& other);
00275 ShTexCoord(
const ShVariableNodePtr& node,
const ShSwizzle& swizzle,
bool neg);
00276
explicit ShTexCoord(T data[4]);
00277
00278 ShTexCoord(T, T, T, T);
00279 ShTexCoord(
const ShGeneric<1, T>&,
const ShGeneric<1, T>&,
const ShGeneric<1, T>&,
const ShGeneric<1, T>&);
00280
00281 ~ShTexCoord();
00282
00283 ShTexCoord& operator=(
const ShGeneric<4, T>& other);
00284 ShTexCoord& operator=(
const ShTexCoord<4, Binding, T, Swizzled>& other);
00285
00286 ShTexCoord& operator=(
const ShProgram& prg);
00287
00288 ShTexCoord& operator+=(
const ShGeneric<4, T>& right);
00289 ShTexCoord& operator-=(
const ShGeneric<4, T>& right);
00290 ShTexCoord& operator*=(
const ShGeneric<4, T>& right);
00291 ShTexCoord& operator/=(
const ShGeneric<4, T>& right);
00292 ShTexCoord& operator%=(
const ShGeneric<4, T>& right);
00293 ShTexCoord& operator*=(T);
00294 ShTexCoord& operator/=(T);
00295 ShTexCoord& operator%=(T);
00296 ShTexCoord& operator+=(T);
00297 ShTexCoord& operator-=(T);
00298 ShTexCoord& operator+=(
const ShGeneric<1, T>&);
00299 ShTexCoord& operator-=(
const ShGeneric<1, T>&);
00300 ShTexCoord& operator*=(
const ShGeneric<1, T>&);
00301 ShTexCoord& operator/=(
const ShGeneric<1, T>&);
00302 ShTexCoord& operator%=(
const ShGeneric<1, T>&);
00303
ShTexCoord<1, Binding, T, true> operator()(
int) const;
00304 ShTexCoord<2, Binding, T, true> operator()(
int,
int) const;
00305 ShTexCoord<3, Binding, T, true> operator()(
int,
int,
int) const;
00306 ShTexCoord<4, Binding, T, true> operator()(
int,
int,
int,
int) const;
00307 ShTexCoord<1, Binding, T, true> operator[](
int) const;
00308
00309 template<
int N2>
00310 ShTexCoord<N2, Binding, T, true> swiz(
int indices[]) const;
00311
00312 ShTexCoord operator-() const;
00313 typedef T ValueType;
00314 static const
int typesize = 4;
00315 static const ShBindingType binding_type = Binding;
00316 static const ShSemanticType semantic_type = SH_TEXCOORD;
00317
00318 typedef ShTexCoord<4, SH_INPUT, T> InputType;
00319 typedef ShTexCoord<4, SH_OUTPUT, T> OutputType;
00320 typedef ShTexCoord<4, SH_INOUT, T> InOutType;
00321 typedef ShTexCoord<4, SH_TEMP, T> TempType;
00322 typedef ShTexCoord<4, SH_CONST, T> ConstType;
00323 private:
00324 typedef ShAttrib<4, Binding, T, Swizzled> ParentType;
00325 };
00326
00327 typedef ShTexCoord<1, SH_INPUT,
float>
ShInputTexCoord1f;
00328 typedef ShTexCoord<1, SH_OUTPUT,
float>
ShOutputTexCoord1f;
00329 typedef ShTexCoord<1, SH_INOUT,
float>
ShInOutTexCoord1f;
00330 typedef ShTexCoord<1, SH_TEMP,
float>
ShTexCoord1f;
00331 typedef ShTexCoord<1, SH_CONST,
float>
ShConstTexCoord1f;
00332 typedef ShTexCoord<2, SH_INPUT,
float>
ShInputTexCoord2f;
00333 typedef ShTexCoord<2, SH_OUTPUT,
float>
ShOutputTexCoord2f;
00334 typedef ShTexCoord<2, SH_INOUT,
float>
ShInOutTexCoord2f;
00335 typedef ShTexCoord<2, SH_TEMP,
float>
ShTexCoord2f;
00336 typedef ShTexCoord<2, SH_CONST,
float>
ShConstTexCoord2f;
00337 typedef ShTexCoord<3, SH_INPUT,
float>
ShInputTexCoord3f;
00338 typedef ShTexCoord<3, SH_OUTPUT,
float>
ShOutputTexCoord3f;
00339 typedef ShTexCoord<3, SH_INOUT,
float>
ShInOutTexCoord3f;
00340 typedef ShTexCoord<3, SH_TEMP,
float>
ShTexCoord3f;
00341 typedef ShTexCoord<3, SH_CONST,
float>
ShConstTexCoord3f;
00342 typedef ShTexCoord<4, SH_INPUT,
float>
ShInputTexCoord4f;
00343 typedef ShTexCoord<4, SH_OUTPUT,
float>
ShOutputTexCoord4f;
00344 typedef ShTexCoord<4, SH_INOUT,
float>
ShInOutTexCoord4f;
00345 typedef ShTexCoord<4, SH_TEMP,
float>
ShTexCoord4f;
00346 typedef ShTexCoord<4, SH_CONST,
float>
ShConstTexCoord4f;
00347
00348 }
00349 #include "ShTexCoordImpl.hpp"
00350
00351 #endif