102 lines
2.4 KiB
C++
102 lines
2.4 KiB
C++
#define @0
|
|
#define @1
|
|
#define @2
|
|
#define @3
|
|
#define @@
|
|
#define uniform
|
|
#define varying
|
|
struct vec2
|
|
{
|
|
vec2(double t) {};
|
|
vec2(double x, double y) {};
|
|
double x;
|
|
double y;
|
|
vec2 operator + (vec2);
|
|
vec2 operator - (vec2);
|
|
vec2 operator * (vec2);
|
|
vec2 operator / (vec2);
|
|
vec2 operator + (double);
|
|
vec2 operator - (double);
|
|
vec2 operator * (double);
|
|
vec2 operator / (double);
|
|
friend vec2 operator +(double, vec2);
|
|
friend vec2 operator -(double, vec2);
|
|
friend vec2 operator *(double, vec2);
|
|
friend vec2 operator /(double, vec2);
|
|
void operator += (double);
|
|
void operator -= (double);
|
|
void operator *= (double);
|
|
void operator /= (double);
|
|
void operator += (vec2);
|
|
void operator -= (vec2);
|
|
void operator *= (vec2);
|
|
void operator /= (vec2);
|
|
};
|
|
|
|
struct vec3
|
|
{
|
|
vec3(double t) {};
|
|
vec3(double x, double y, double z) {};
|
|
double x;
|
|
double y;
|
|
double z;
|
|
vec3 operator + (vec3);
|
|
vec3 operator - (vec3);
|
|
vec3 operator * (vec3);
|
|
vec3 operator / (vec3);
|
|
vec3 operator + (double);
|
|
vec3 operator - (double);
|
|
vec3 operator * (double);
|
|
vec3 operator / (double);
|
|
friend vec3 operator +(double, vec3);
|
|
friend vec3 operator -(double, vec3);
|
|
friend vec3 operator *(double, vec3);
|
|
friend vec3 operator /(double, vec3);
|
|
void operator += (double);
|
|
void operator -= (double);
|
|
void operator *= (double);
|
|
void operator /= (double);
|
|
void operator += (vec3);
|
|
void operator -= (vec3);
|
|
void operator *= (vec3);
|
|
void operator /= (vec3);
|
|
};
|
|
|
|
struct vec4
|
|
{
|
|
vec4(double t) {};
|
|
vec4(double x, double y, double z, double w) {};
|
|
double x;
|
|
double y;
|
|
double z;
|
|
double w;
|
|
vec4 operator + (vec4);
|
|
vec4 operator - (vec4);
|
|
vec4 operator * (vec4);
|
|
vec4 operator / (vec4);
|
|
vec4 operator + (double);
|
|
vec4 operator - (double);
|
|
vec4 operator * (double);
|
|
vec4 operator / (double);
|
|
friend vec4 operator +(double, vec4);
|
|
friend vec4 operator -(double, vec4);
|
|
friend vec4 operator *(double, vec4);
|
|
friend vec4 operator /(double, vec4);
|
|
void operator += (double);
|
|
void operator -= (double);
|
|
void operator *= (double);
|
|
void operator /= (double);
|
|
void operator += (vec4);
|
|
void operator -= (vec4);
|
|
void operator *= (vec4);
|
|
void operator /= (vec4);
|
|
};
|
|
|
|
typedef double sampler2D;
|
|
vec4 texture2D(sampler2D t, vec2 uv);
|
|
template <typename T> T mix(T a, T b, double c);
|
|
template <typename T> T mod(T a, double b);
|
|
template <typename T> T fract(T a);
|
|
template <typename T> T step(double b, T a);
|
|
template <typename T> T smoothstep(double a, double b, T a);
|