summaryrefslogtreecommitdiff
path: root/src/mesa/shader/slang/library/slang_common_builtin.gc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/shader/slang/library/slang_common_builtin.gc')
-rwxr-xr-xsrc/mesa/shader/slang/library/slang_common_builtin.gc1469
1 files changed, 0 insertions, 1469 deletions
diff --git a/src/mesa/shader/slang/library/slang_common_builtin.gc b/src/mesa/shader/slang/library/slang_common_builtin.gc
deleted file mode 100755
index 768cef54748..00000000000
--- a/src/mesa/shader/slang/library/slang_common_builtin.gc
+++ /dev/null
@@ -1,1469 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 2006 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-//
-// From Shader Spec, ver. 1.10, rev. 59
-//
-
-const int gl_MaxLights = 8;
-const int gl_MaxClipPlanes = 6;
-const int gl_MaxTextureUnits = 8;
-const int gl_MaxTextureCoords = 8;
-const int gl_MaxVertexAttribs = 16;
-const int gl_MaxVertexUniformComponents = 512;
-const int gl_MaxVaryingFloats = 32;
-const int gl_MaxVertexTextureImageUnits = 0;
-const int gl_MaxCombinedTextureImageUnits = 2;
-const int gl_MaxTextureImageUnits = 2;
-const int gl_MaxFragmentUniformComponents = 64;
-const int gl_MaxDrawBuffers = 1;
-
-uniform mat4 gl_ModelViewMatrix;
-uniform mat4 gl_ProjectionMatrix;
-uniform mat4 gl_ModelViewProjectionMatrix;
-uniform mat4 gl_TextureMatrix[gl_MaxTextureCoords];
-
-uniform mat3 gl_NormalMatrix;
-
-uniform mat4 gl_ModelViewMatrixInverse;
-uniform mat4 gl_ProjectionMatrixInverse;
-uniform mat4 gl_ModelViewProjectionMatrixInverse;
-uniform mat4 gl_TextureMatrixInverse[gl_MaxTextureCoords];
-
-uniform mat4 gl_ModelViewMatrixTranspose;
-uniform mat4 gl_ProjectionMatrixTranspose;
-uniform mat4 gl_ModelViewProjectionMatrixTranspose;
-uniform mat4 gl_TextureMatrixTranspose[gl_MaxTextureCoords];
-
-uniform mat4 gl_ModelViewMatrixInverseTranspose;
-uniform mat4 gl_ProjectionMatrixInverseTranspose;
-uniform mat4 gl_ModelViewProjectionMatrixInverseTranspose;
-uniform mat4 gl_TextureMatrixInverseTranspose[gl_MaxTextureCoords];
-
-uniform float gl_NormalScale;
-
-struct gl_DepthRangeParameters {
- float near;
- float far;
- float diff;
-};
-
-uniform gl_DepthRangeParameters gl_DepthRange;
-
-uniform vec4 gl_ClipPlane[gl_MaxClipPlanes];
-
-struct gl_PointParameters {
- float size;
- float sizeMin;
- float sizeMax;
- float fadeThresholdSize;
- float distanceConstantAttenuation;
- float distanceLinearAttenuation;
- float distanceQuadraticAttenuation;
-};
-
-uniform gl_PointParameters gl_Point;
-
-struct gl_MaterialParameters {
- vec4 emission;
- vec4 ambient;
- vec4 diffuse;
- vec4 specular;
- float shininess;
-};
-
-uniform gl_MaterialParameters gl_FrontMaterial;
-uniform gl_MaterialParameters gl_BackMaterial;
-
-struct gl_LightSourceParameters {
- vec4 ambient;
- vec4 diffuse;
- vec4 specular;
- vec4 position;
- vec4 halfVector;
- vec3 spotDirection;
- float spotExponent;
- float spotCutoff;
- float spotCosCutoff;
- float constantAttenuation;
- float linearAttenuation;
- float quadraticAttenuation;
-};
-
-uniform gl_LightSourceParameters gl_LightSource[gl_MaxLights];
-
-struct gl_LightModelParameters {
- vec4 ambient;
-};
-
-uniform gl_LightModelParameters gl_LightModel;
-
-struct gl_LightModelProducts {
- vec4 sceneColor;
-};
-
-uniform gl_LightModelProducts gl_FrontLightModelProduct;
-uniform gl_LightModelProducts gl_BackLightModelProduct;
-
-struct gl_LightProducts {
- vec4 ambient;
- vec4 diffuse;
- vec4 specular;
-};
-
-uniform gl_LightProducts gl_FrontLightProduct[gl_MaxLights];
-uniform gl_LightProducts gl_BackLightProduct[gl_MaxLights];
-
-uniform vec4 gl_TextureEnvColor[gl_MaxTextureImageUnits];
-uniform vec4 gl_EyePlaneS[gl_MaxTextureCoords];
-uniform vec4 gl_EyePlaneT[gl_MaxTextureCoords];
-uniform vec4 gl_EyePlaneR[gl_MaxTextureCoords];
-uniform vec4 gl_EyePlaneQ[gl_MaxTextureCoords];
-uniform vec4 gl_ObjectPlaneS[gl_MaxTextureCoords];
-uniform vec4 gl_ObjectPlaneT[gl_MaxTextureCoords];
-uniform vec4 gl_ObjectPlaneR[gl_MaxTextureCoords];
-uniform vec4 gl_ObjectPlaneQ[gl_MaxTextureCoords];
-
-struct gl_FogParameters {
- vec4 color;
- float density;
- float start;
- float end;
- float scale;
-};
-
-uniform gl_FogParameters gl_Fog;
-
-//
-// 8.1 Angle and Trigonometry Functions
-//
-
-float radians (float deg) {
- return 3.141593 * deg / 180.0;
-}
-
-vec2 radians (vec2 deg) {
- return vec2 (3.141593) * deg / vec2 (180.0);
-}
-
-vec3 radians (vec3 deg) {
- return vec3 (3.141593) * deg / vec3 (180.0);
-}
-
-vec4 radians (vec4 deg) {
- return vec4 (3.141593) * deg / vec4 (180.0);
-}
-
-float degrees (float rad) {
- return 180.0 * rad / 3.141593;
-}
-
-vec2 degrees (vec2 rad) {
- return vec2 (180.0) * rad / vec2 (3.141593);
-}
-
-vec3 degrees (vec3 rad) {
- return vec3 (180.0) * rad / vec3 (3.141593);
-}
-
-vec4 degrees (vec4 rad) {
- return vec4 (180.0) * rad / vec4 (3.141593);
-}
-
-float sin (float angle) {
- float x;
- __asm float_sine x, angle;
- return x;
-}
-
-vec2 sin (vec2 angle) {
- return vec2 (
- sin (angle.x),
- sin (angle.y)
- );
-}
-
-vec3 sin (vec3 angle) {
- return vec3 (
- sin (angle.x),
- sin (angle.y),
- sin (angle.z)
- );
-}
-
-vec4 sin (vec4 angle) {
- return vec4 (
- sin (angle.x),
- sin (angle.y),
- sin (angle.z),
- sin (angle.w)
- );
-}
-
-float cos (float angle) {
- return sin (angle + 1.5708);
-}
-
-vec2 cos (vec2 angle) {
- return vec2 (
- cos (angle.x),
- cos (angle.y)
- );
-}
-
-vec3 cos (vec3 angle) {
- return vec3 (
- cos (angle.x),
- cos (angle.y),
- cos (angle.z)
- );
-}
-
-vec4 cos (vec4 angle) {
- return vec4 (
- cos (angle.x),
- cos (angle.y),
- cos (angle.z),
- cos (angle.w)
- );
-}
-
-float tan (float angle) {
- return sin (angle) / cos (angle);
-}
-
-vec2 tan (vec2 angle) {
- return vec2 (
- tan (angle.x),
- tan (angle.y)
- );
-}
-
-vec3 tan (vec3 angle) {
- return vec3 (
- tan (angle.x),
- tan (angle.y),
- tan (angle.z)
- );
-}
-
-vec4 tan (vec4 angle) {
- return vec4 (
- tan (angle.x),
- tan (angle.y),
- tan (angle.z),
- tan (angle.w)
- );
-}
-
-float asin (float x) {
- float y;
- __asm float_arcsine y, x;
- return y;
-}
-
-vec2 asin (vec2 v) {
- return vec2 (
- asin (v.x),
- asin (v.y)
- );
-}
-
-vec3 asin (vec3 v) {
- return vec3 (
- asin (v.x),
- asin (v.y),
- asin (v.z)
- );
-}
-
-vec4 asin (vec4 v) {
- return vec4 (
- asin (v.x),
- asin (v.y),
- asin (v.z),
- asin (v.w)
- );
-}
-
-float acos (float x) {
- return 1.5708 - asin (x);
-}
-
-vec2 acos (vec2 v) {
- return vec2 (
- acos (v.x),
- acos (v.y)
- );
-}
-
-vec3 acos (vec3 v) {
- return vec3 (
- acos (v.x),
- acos (v.y),
- acos (v.z)
- );
-}
-
-vec4 acos (vec4 v) {
- return vec4 (
- acos (v.x),
- acos (v.y),
- acos (v.z),
- acos (v.w)
- );
-}
-
-float atan (float y_over_x) {
- float z;
- __asm float_arctan z, y_over_x;
- return z;
-}
-
-vec2 atan (vec2 y_over_x) {
- return vec2 (
- atan (y_over_x.x),
- atan (y_over_x.y)
- );
-}
-
-vec3 atan (vec3 y_over_x) {
- return vec3 (
- atan (y_over_x.x),
- atan (y_over_x.y),
- atan (y_over_x.z)
- );
-}
-
-vec4 atan (vec4 y_over_x) {
- return vec4 (
- atan (y_over_x.x),
- atan (y_over_x.y),
- atan (y_over_x.z),
- atan (y_over_x.w)
- );
-}
-
-float atan (float y, float x) {
- float z = atan (y / x);
- if (x < 0.0)
- {
- if (y < 0.0)
- return z - 3.141593;
- return z + 3.141593;
- }
- return z;
-}
-
-vec2 atan (vec2 u, vec2 v) {
- return vec2 (
- atan (u.x, v.x),
- atan (u.y, v.y)
- );
-}
-
-vec3 atan (vec3 u, vec3 v) {
- return vec3 (
- atan (u.x, v.x),
- atan (u.y, v.y),
- atan (u.z, v.z)
- );
-}
-
-vec4 atan (vec4 u, vec4 v) {
- return vec4 (
- atan (u.x, v.x),
- atan (u.y, v.y),
- atan (u.z, v.z),
- atan (u.w, v.w)
- );
-}
-
-//
-// 8.2 Exponential Functions
-//
-
-float pow (float x, float y) {
- float p;
- __asm float_power p, x, y;
- return p;
-}
-
-vec2 pow (vec2 v, vec2 u) {
- return vec2 (
- pow (v.x, u.x),
- pow (v.y, u.y)
- );
-}
-
-vec3 pow (vec3 v, vec3 u) {
- return vec3 (
- pow (v.x, u.x),
- pow (v.y, u.y),
- pow (v.z, u.z)
- );
-}
-
-vec4 pow (vec4 v, vec4 u) {
- return vec4 (
- pow (v.x, u.x),
- pow (v.y, u.y),
- pow (v.z, u.z),
- pow (v.w, u.w)
- );
-}
-
-float exp (float x) {
- return pow (2.71828183, x);
-}
-
-vec2 exp (vec2 v) {
- return pow (vec2 (2.71828183), v);
-}
-
-vec3 exp (vec3 v) {
- return pow (vec3 (2.71828183), v);
-}
-
-vec4 exp (vec4 v) {
- return pow (vec4 (2.71828183), v);
-}
-
-float log2 (float x) {
- float y;
- __asm float_log2 y, x;
- return y;
-}
-
-vec2 log2 (vec2 v) {
- return vec2 (
- log2 (v.x),
- log2 (v.y)
- );
-}
-
-vec3 log2 (vec3 v) {
- return vec3 (
- log2 (v.x),
- log2 (v.y),
- log2 (v.z)
- );
-}
-
-vec4 log2 (vec4 v) {
- return vec4 (
- log2 (v.x),
- log2 (v.y),
- log2 (v.z),
- log2 (v.w)
- );
-}
-
-float log (float x) {
- return log2 (x) / log2 (2.71828183);
-}
-
-vec2 log (vec2 v) {
- return log2 (v) / log2 (vec2 (2.71828183));
-}
-
-vec3 log (vec3 v) {
- return log2 (v) / log2 (vec3 (2.71828183));
-}
-
-vec4 log (vec4 v) {
- return log2 (v) / log2 (vec4 (2.71828183));
-}
-
-float exp2 (float x) {
- return pow (2.0, x);
-}
-
-vec2 exp2 (vec2 v) {
- return pow (vec2 (2.0), v);
-}
-
-vec3 exp2 (vec3 v) {
- return pow (vec3 (2.0), v);
-}
-
-vec4 exp2 (vec4 v) {
- return pow (vec4 (2.0), v);
-}
-
-float sqrt (float x) {
- return pow (x, 0.5);
-}
-
-vec2 sqrt (vec2 v) {
- return pow (v, vec2 (0.5));
-}
-
-vec3 sqrt (vec3 v) {
- return pow (v, vec3 (0.5));
-}
-
-vec4 sqrt (vec4 v) {
- return pow (v, vec4 (0.5));
-}
-
-float inversesqrt (float x) {
- return 1.0 / sqrt (x);
-}
-
-vec2 inversesqrt (vec2 v) {
- return vec2 (1.0) / sqrt (v);
-}
-
-vec3 inversesqrt (vec3 v) {
- return vec3 (1.0) / sqrt (v);
-}
-
-vec4 inversesqrt (vec4 v) {
- return vec4 (1.0) / sqrt (v);
-}
-
-//
-// 8.3 Common Functions
-//
-
-float abs (float x) {
- return x >= 0.0 ? x : -x;
-}
-
-vec2 abs (vec2 v) {
- return vec2 (
- abs (v.x),
- abs (v.y)
- );
-}
-
-vec3 abs (vec3 v) {
- return vec3 (
- abs (v.x),
- abs (v.y),
- abs (v.z)
- );
-}
-
-vec4 abs (vec4 v) {
- return vec4 (
- abs (v.x),
- abs (v.y),
- abs (v.z),
- abs (v.w)
- );
-}
-
-float sign (float x) {
- return x > 0.0 ? 1.0 : x < 0.0 ? -1.0 : 0.0;
-}
-
-vec2 sign (vec2 v) {
- return vec2 (
- sign (v.x),
- sign (v.y)
- );
-}
-
-vec3 sign (vec3 v) {
- return vec3 (
- sign (v.x),
- sign (v.y),
- sign (v.z)
- );
-}
-
-vec4 sign (vec4 v) {
- return vec4 (
- sign (v.x),
- sign (v.y),
- sign (v.z),
- sign (v.w)
- );
-}
-
-float floor (float x) {
- float y;
- __asm float_floor y, x;
- return y;
-}
-
-vec2 floor (vec2 v) {
- return vec2 (
- floor (v.x),
- floor (v.y)
- );
-}
-
-vec3 floor (vec3 v) {
- return vec3 (
- floor (v.x),
- floor (v.y),
- floor (v.z)
- );
-}
-
-vec4 floor (vec4 v) {
- return vec4 (
- floor (v.x),
- floor (v.y),
- floor (v.z),
- floor (v.w)
- );
-}
-
-float ceil (float x) {
- float y;
- __asm float_ceil y, x;
- return y;
-}
-
-vec2 ceil (vec2 v) {
- return vec2 (
- ceil (v.x),
- ceil (v.y)
- );
-}
-
-vec3 ceil (vec3 v) {
- return vec3 (
- ceil (v.x),
- ceil (v.y),
- ceil (v.z)
- );
-}
-
-vec4 ceil (vec4 v) {
- return vec4 (
- ceil (v.x),
- ceil (v.y),
- ceil (v.z),
- ceil (v.w)
- );
-}
-
-float fract (float x) {
- return x - floor (x);
-}
-
-vec2 fract (vec2 v) {
- return v - floor (v);
-}
-
-vec3 fract (vec3 v) {
- return v - floor (v);
-}
-
-vec4 fract (vec4 v) {
- return v - floor (v);
-}
-
-float mod (float x, float y) {
- return x - y * floor (x / y);
-}
-
-vec2 mod (vec2 v, float u) {
- return v - u * floor (v / u);
-}
-
-vec3 mod (vec3 v, float u) {
- return v - u * floor (v / u);
-}
-
-vec4 mod (vec4 v, float u) {
- return v - u * floor (v / u);
-}
-
-vec2 mod (vec2 v, vec2 u) {
- return v - u * floor (v / u);
-}
-
-vec3 mod (vec3 v, vec3 u) {
- return v - u * floor (v / u);
-}
-
-vec4 mod (vec4 v, vec4 u) {
- return v - u * floor (v / u);
-}
-
-float min (float x, float y) {
- return x < y ? x : y;
-}
-
-vec2 min (vec2 v, vec2 u) {
- return vec2 (
- min (v.x, u.x),
- min (v.y, u.y)
- );
-}
-
-vec3 min (vec3 v, vec3 u) {
- return vec3 (
- min (v.x, u.x),
- min (v.y, u.y),
- min (v.z, u.z)
- );
-}
-
-vec4 min (vec4 v, vec4 u) {
- return vec4 (
- min (v.x, u.x),
- min (v.y, u.y),
- min (v.z, u.z),
- min (v.w, u.w)
- );
-}
-
-vec2 min (vec2 v, float y) {
- return min (v, vec2 (y));
-}
-
-vec3 min (vec3 v, float y) {
- return min (v, vec3 (y));
-}
-
-vec4 min (vec4 v, float y) {
- return min (v, vec4 (y));
-}
-
-float max (float x, float y) {
- return x < y ? y : x;
-}
-
-vec2 max (vec2 v, vec2 u) {
- return vec2 (
- max (v.x, u.x),
- max (v.y, u.y)
- );
-}
-
-vec3 max (vec3 v, vec3 u) {
- return vec3 (
- max (v.x, u.x),
- max (v.y, u.y),
- max (v.z, u.z)
- );
-}
-
-vec4 max (vec4 v, vec4 u) {
- return vec4 (
- max (v.x, u.x),
- max (v.y, u.y),
- max (v.z, u.z),
- max (v.w, u.w)
- );
-}
-
-vec2 max (vec2 v, float y) {
- return max (v, vec2 (y));
-}
-
-vec3 max (vec3 v, float y) {
- return max (v, vec3 (y));
-}
-
-vec4 max (vec4 v, float y) {
- return max (v, vec4 (y));
-}
-
-float clamp (float x, float minVal, float maxVal) {
- return min (max (x, minVal), maxVal);
-}
-
-vec2 clamp (vec2 x, float minVal, float maxVal) {
- return min (max (x, minVal), maxVal);
-}
-
-vec3 clamp (vec3 x, float minVal, float maxVal) {
- return min (max (x, minVal), maxVal);
-}
-
-vec4 clamp (vec4 x, float minVal, float maxVal) {
- return min (max (x, minVal), maxVal);
-}
-
-vec2 clamp (vec2 x, vec2 minVal, vec2 maxVal) {
- return min (max (x, minVal), maxVal);
-}
-
-vec3 clamp (vec3 x, vec3 minVal, vec3 maxVal) {
- return min (max (x, minVal), maxVal);
-}
-
-vec4 clamp (vec4 x, vec4 minVal, vec4 maxVal) {
- return min (max (x, minVal), maxVal);
-}
-
-float mix (float x, float y, float a) {
- return x * (1.0 - a) + y * a;
-}
-
-vec2 mix (vec2 x, vec2 y, float a) {
- return x * (1.0 - a) + y * a;
-}
-
-vec3 mix (vec3 x, vec3 y, float a) {
- return x * (1.0 - a) + y * a;
-}
-
-vec4 mix (vec4 x, vec4 y, float a) {
- return x * (1.0 - a) + y * a;
-}
-
-vec2 mix (vec2 x, vec2 y, vec2 a) {
- return x * (1.0 - a) + y * a;
-}
-
-vec3 mix (vec3 x, vec3 y, vec3 a) {
- return x * (1.0 - a) + y * a;
-}
-
-vec4 mix (vec4 x, vec4 y, vec4 a) {
- return x * (1.0 - a) + y * a;
-}
-
-float step (float edge, float x) {
- return x < edge ? 0.0 : 1.0;
-}
-
-vec2 step (vec2 edge, vec2 v) {
- return vec2 (
- step (edge.x, v.x),
- step (edge.y, v.y)
- );
-}
-
-vec3 step (vec3 edge, vec3 v) {
- return vec3 (
- step (edge.x, v.x),
- step (edge.y, v.y),
- step (edge.z, v.z)
- );
-}
-
-vec4 step (vec4 edge, vec4 v) {
- return vec4 (
- step (edge.x, v.x),
- step (edge.y, v.y),
- step (edge.z, v.z),
- step (edge.w, v.w)
- );
-}
-
-vec2 step (float edge, vec2 v) {
- return step (vec2 (edge), v);
-}
-
-vec3 step (float edge, vec3 v) {
- return step (vec3 (edge), v);
-}
-
-vec4 step (float edge, vec4 v) {
- return step (vec4 (edge), v);
-}
-
-float smoothstep (float edge0, float edge1, float x) {
- float t = clamp ((x - edge0) / (edge1 - edge0), 0.0, 1.0);
- return t * t * (3.0 - 2.0 * t);
-}
-
-vec2 smoothstep (vec2 edge0, vec2 edge1, vec2 v) {
- return vec2 (
- smoothstep (edge0.x, edge1.x, v.x),
- smoothstep (edge0.y, edge1.y, v.y)
- );
-}
-
-vec3 smoothstep (vec3 edge0, vec3 edge1, vec3 v) {
- return vec3 (
- smoothstep (edge0.x, edge1.x, v.x),
- smoothstep (edge0.y, edge1.y, v.y),
- smoothstep (edge0.z, edge1.z, v.z)
- );
-}
-
-vec4 smoothstep (vec4 edge0, vec4 edge1, vec4 v) {
- return vec4 (
- smoothstep (edge0.x, edge1.x, v.x),
- smoothstep (edge0.y, edge1.y, v.y),
- smoothstep (edge0.z, edge1.z, v.z),
- smoothstep (edge0.w, edge1.w, v.w)
- );
-}
-
-vec2 smoothstep (float edge0, float edge1, vec2 v) {
- return vec2 (
- smoothstep (edge0, edge1, v.x),
- smoothstep (edge0, edge1, v.y)
- );
-}
-
-vec3 smoothstep (float edge0, float edge1, vec3 v) {
- return vec3 (
- smoothstep (edge0, edge1, v.x),
- smoothstep (edge0, edge1, v.y),
- smoothstep (edge0, edge1, v.z)
- );
-}
-
-vec4 smoothstep (float edge0, float edge1, vec4 v) {
- return vec4 (
- smoothstep (edge0, edge1, v.x),
- smoothstep (edge0, edge1, v.y),
- smoothstep (edge0, edge1, v.z),
- smoothstep (edge0, edge1, v.w)
- );
-}
-
-//
-// 8.4 Geometric Functions
-//
-
-float dot (float x, float y) {
- return x * y;
-}
-
-float dot (vec2 v, vec2 u) {
- return v.x * u.x + v.y * u.y;
-}
-
-float dot (vec3 v, vec3 u) {
- return v.x * u.x + v.y * u.y + v.z * u.z;
-}
-
-float dot (vec4 v, vec4 u) {
- return v.x * u.x + v.y * u.y + v.z * u.z + v.w * u.w;
-}
-
-float length (float x) {
- return sqrt (dot (x, x));
-}
-
-float length (vec2 v) {
- return sqrt (dot (v, v));
-}
-
-float length (vec3 v) {
- return sqrt (dot (v, v));
-}
-
-float length (vec4 v) {
- return sqrt (dot (v, v));
-}
-
-float distance (float x, float y) {
- return length (x - y);
-}
-
-float distance (vec2 v, vec2 u) {
- return length (v - u);
-}
-
-float distance (vec3 v, vec3 u) {
- return length (v - u);
-}
-
-float distance (vec4 v, vec4 u) {
- return length (v - u);
-}
-
-vec3 cross (vec3 v, vec3 u) {
- return vec3 (
- v.y * u.z - u.y * v.z,
- v.z * u.x - u.z * v.x,
- v.x * u.y - u.x * v.y
- );
-}
-
-float normalize (float x) {
- return 1.0;
-}
-
-vec2 normalize (vec2 v) {
- return v / length (v);
-}
-
-vec3 normalize (vec3 v) {
- return v / length (v);
-}
-
-vec4 normalize (vec4 v) {
- return v / length (v);
-}
-
-float faceforward (float N, float I, float Nref) {
- return dot (Nref, I) < 0.0 ? N : -N;
-}
-
-vec2 faceforward (vec2 N, vec2 I, vec2 Nref) {
- return dot (Nref, I) < 0.0 ? N : -N;
-}
-
-vec3 faceforward (vec3 N, vec3 I, vec3 Nref) {
- return dot (Nref, I) < 0.0 ? N : -N;
-}
-
-vec4 faceforward (vec4 N, vec4 I, vec4 Nref) {
- return dot (Nref, I) < 0.0 ? N : -N;
-}
-
-float reflect (float I, float N) {
- return I - 2.0 * dot (N, I) * N;
-}
-
-vec2 reflect (vec2 I, vec2 N) {
- return I - 2.0 * dot (N, I) * N;
-}
-
-vec3 reflect (vec3 I, vec3 N) {
- return I - 2.0 * dot (N, I) * N;
-}
-
-vec4 reflect (vec4 I, vec4 N) {
- return I - 2.0 * dot (N, I) * N;
-}
-
-float refract (float I, float N, float eta) {
- float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));
- if (k < 0.0)
- return 0.0;
- return eta * I - (eta * dot (N, I) + sqrt (k)) * N;
-}
-
-vec2 refract (vec2 I, vec2 N, float eta) {
- float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));
- if (k < 0.0)
- return 0.0;
- return eta * I - (eta * dot (N, I) + sqrt (k)) * N;
-}
-
-vec3 refract (vec3 I, vec3 N, float eta) {
- float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));
- if (k < 0.0)
- return 0.0;
- return eta * I - (eta * dot (N, I) + sqrt (k)) * N;
-}
-
-vec4 refract (vec4 I, vec4 N, float eta) {
- float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));
- if (k < 0.0)
- return 0.0;
- return eta * I - (eta * dot (N, I) + sqrt (k)) * N;
-}
-
-//
-// 8.5 Matrix Functions
-//
-
-mat2 matrixCompMult (mat2 m, mat2 n) {
- return mat2 (m[0] * n[0], m[1] * n[1]);
-}
-
-mat3 matrixCompMult (mat3 m, mat3 n) {
- return mat3 (m[0] * n[0], m[1] * n[1], m[2] * n[2]);
-}
-
-mat4 matrixCompMult (mat4 m, mat4 n) {
- return mat4 (m[0] * n[0], m[1] * n[1], m[2] * n[2], m[3] * n[3]);
-}
-
-//
-// 8.6 Vector Relational Functions
-//
-
-bvec2 lessThan (vec2 v, vec2 u) {
- return bvec2 (v.x < u.x, v.y < u.y);
-}
-
-bvec3 lessThan (vec3 v, vec3 u) {
- return bvec3 (v.x < u.x, v.y < u.y, v.z < u.z);
-}
-
-bvec4 lessThan (vec4 v, vec4 u) {
- return bvec4 (v.x < u.x, v.y < u.y, v.z < u.z, v.w < u.w);
-}
-
-bvec2 lessThan (ivec2 v, ivec2 u) {
- return bvec2 (v.x < u.x, v.y < u.y);
-}
-
-bvec3 lessThan (ivec3 v, ivec3 u) {
- return bvec3 (v.x < u.x, v.y < u.y, v.z < u.z);
-}
-
-bvec4 lessThan (ivec4 v, ivec4 u) {
- return bvec4 (v.x < u.x, v.y < u.y, v.z < u.z, v.w < u.w);
-}
-
-bvec2 lessThanEqual (vec2 v, vec2 u) {
- return bvec2 (v.x <= u.x, v.y <= u.y);
-}
-
-bvec3 lessThanEqual (vec3 v, vec3 u) {
- return bvec3 (v.x <= u.x, v.y <= u.y, v.z <= u.z);
-}
-
-bvec4 lessThanEqual (vec4 v, vec4 u) {
- return bvec4 (v.x <= u.x, v.y <= u.y, v.z <= u.z, v.w <= u.w);
-}
-
-bvec2 lessThanEqual (ivec2 v, ivec2 u) {
- return bvec2 (v.x <= u.x, v.y <= u.y);
-}
-
-bvec3 lessThanEqual (ivec3 v, ivec3 u) {
- return bvec3 (v.x <= u.x, v.y <= u.y, v.z <= u.z);
-}
-
-bvec4 lessThanEqual (ivec4 v, ivec4 u) {
- return bvec4 (v.x <= u.x, v.y <= u.y, v.z <= u.z, v.w <= u.w);
-}
-
-bvec2 greaterThan (vec2 v, vec2 u) {
- return bvec2 (v.x > u.x, v.y > u.y);
-}
-
-bvec3 greaterThan (vec3 v, vec3 u) {
- return bvec3 (v.x > u.x, v.y > u.y, v.z > u.z);
-}
-
-bvec4 greaterThan (vec4 v, vec4 u) {
- return bvec4 (v.x > u.x, v.y > u.y, v.z > u.z, v.w > u.w);
-}
-
-bvec2 greaterThan (ivec2 v, ivec2 u) {
- return bvec2 (v.x > u.x, v.y > u.y);
-}
-
-bvec3 greaterThan (ivec3 v, ivec3 u) {
- return bvec3 (v.x > u.x, v.y > u.y, v.z > u.z);
-}
-
-bvec4 greaterThan (ivec4 v, ivec4 u) {
- return bvec4 (v.x > u.x, v.y > u.y, v.z > u.z, v.w > u.w);
-}
-
-bvec2 greaterThanEqual (vec2 v, vec2 u) {
- return bvec2 (v.x >= u.x, v.y >= u.y);
-}
-
-bvec3 greaterThanEqual (vec3 v, vec3 u) {
- return bvec3 (v.x >= u.x, v.y >= u.y, v.z >= u.z);
-}
-
-bvec4 greaterThanEqual (vec4 v, vec4 u) {
- return bvec4 (v.x >= u.x, v.y >= u.y, v.z >= u.z, v.w >= u.w);
-}
-
-bvec2 greaterThanEqual (ivec2 v, ivec2 u) {
- return bvec2 (v.x >= u.x, v.y >= u.y);
-}
-
-bvec3 greaterThanEqual (ivec3 v, ivec3 u) {
- return bvec3 (v.x >= u.x, v.y >= u.y, v.z >= u.z);
-}
-
-bvec4 greaterThanEqual (ivec4 v, ivec4 u) {
- return bvec4 (v.x >= u.x, v.y >= u.y, v.z >= u.z, v.w >= u.w);
-}
-
-bvec2 equal (vec2 v, vec2 u) {
- return bvec2 (v.x == u.x, v.y == u.y);
-}
-
-bvec3 equal (vec3 v, vec3 u) {
- return bvec3 (v.x == u.x, v.y == u.y, v.z == u.z);
-}
-
-bvec4 equal (vec4 v, vec4 u) {
- return bvec4 (v.x == u.x, v.y == u.y, v.z == u.z, v.w == u.w);
-}
-
-bvec2 equal (ivec2 v, ivec2 u) {
- return bvec2 (v.x == u.x, v.y == u.y);
-}
-
-bvec3 equal (ivec3 v, ivec3 u) {
- return bvec3 (v.x == u.x, v.y == u.y, v.z == u.z);
-}
-
-bvec4 equal (ivec4 v, ivec4 u) {
- return bvec4 (v.x == u.x, v.y == u.y, v.z == u.z, v.w == u.w);
-}
-
-bvec2 notEqual (vec2 v, vec2 u) {
- return bvec2 (v.x != u.x, v.y != u.y);
-}
-
-bvec3 notEqual (vec3 v, vec3 u) {
- return bvec3 (v.x != u.x, v.y != u.y, v.z != u.z);
-}
-
-bvec4 notEqual (vec4 v, vec4 u) {
- return bvec4 (v.x != u.x, v.y != u.y, v.z != u.z, v.w != u.w);
-}
-
-bvec2 notEqual (ivec2 v, ivec2 u) {
- return bvec2 (v.x != u.x, v.y != u.y);
-}
-
-bvec3 notEqual (ivec3 v, ivec3 u) {
- return bvec3 (v.x != u.x, v.y != u.y, v.z != u.z);
-}
-
-bvec4 notEqual (ivec4 v, ivec4 u) {
- return bvec4 (v.x != u.x, v.y != u.y, v.z != u.z, v.w != u.w);
-}
-
-bool any (bvec2 v) {
- return v.x || v.y;
-}
-
-bool any (bvec3 v) {
- return v.x || v.y || v.z;
-}
-
-bool any (bvec4 v) {
- return v.x || v.y || v.z || v.w;
-}
-
-bool all (bvec2 v) {
- return v.x && v.y;
-}
-
-bool all (bvec3 v) {
- return v.x && v.y && v.z;
-}
-
-bool all (bvec4 v) {
- return v.x && v.y && v.z && v.w;
-}
-
-bvec2 not (bvec2 v) {
- return bvec2 (!v.x, !v.y);
-}
-
-bvec3 not (bvec3 v) {
- return bvec3 (!v.x, !v.y, !v.z);
-}
-
-bvec4 not (bvec4 v) {
- return bvec4 (!v.x, !v.y, !v.z, !v.w);
-}
-
-//
-// 8.7 Texture Lookup Functions
-//
-
-vec4 texture1D (sampler1D sampler, float coord) {
- vec4 texel;
- __asm vec4_tex1d texel, sampler, coord, 0.0;
- return texel;
-}
-
-vec4 texture1DProj (sampler1D sampler, vec2 coord) {
- return texture1D (sampler, coord.s / coord.t);
-}
-
-vec4 texture1DProj (sampler1D sampler, vec4 coord) {
- return texture1D (sampler, coord.s / coord.q);
-}
-
-vec4 texture2D (sampler2D sampler, vec2 coord) {
- vec4 texel;
- __asm vec4_tex2d texel, sampler, coord, 0.0;
- return texel;
-}
-
-vec4 texture2DProj (sampler2D sampler, vec3 coord) {
- return texture2D (sampler, vec2 (coord.s / coord.p, coord.t / coord.p));
-}
-
-vec4 texture2DProj (sampler2D sampler, vec4 coord) {
- return texture2D (sampler, vec2 (coord.s / coord.q, coord.t / coord.q));
-}
-
-vec4 texture3D (sampler3D sampler, vec3 coord) {
- vec4 texel;
- __asm vec4_tex3d texel, sampler, coord, 0.0;
- return texel;
-}
-
-vec4 texture3DProj (sampler3D sampler, vec4 coord) {
- return texture3D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q));
-}
-
-vec4 textureCube (samplerCube sampler, vec3 coord) {
- vec4 texel;
- __asm vec4_texcube texel, sampler, coord, 0.0;
- return texel;
-}
-
-vec4 shadow1D (sampler1DShadow sampler, vec3 coord) {
- vec4 texel;
- __asm vec4_shad1d texel, sampler, coord, 0.0;
- return texel;
-}
-
-vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord) {
- return shadow1D (sampler, vec3 (coord.s / coord.q, 0.0, coord.p / coord.q));
-}
-
-vec4 shadow2D (sampler2DShadow sampler, vec3 coord) {
- vec4 texel;
- __asm vec4_shad2d texel, sampler, coord, 0.0;
- return texel;
-}
-
-vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord) {
- return shadow2D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q));
-}
-
-//
-// 8.9 Noise Functions
-//
-// AUTHOR: Stefan Gustavson (stegu@itn.liu.se), Nov 26, 2005
-//
-
-float noise1 (float x) {
- float a;
- __asm float_noise1 a, x;
- return a;
-}
-
-float noise1 (vec2 x) {
- float a;
- __asm float_noise2 a, x;
- return a;
-}
-
-float noise1 (vec3 x) {
- float a;
- __asm float_noise3 a, x;
- return a;
-}
-
-float noise1 (vec4 x) {
- float a;
- __asm float_noise4 a, x;
- return a;
-}
-
-vec2 noise2 (float x) {
- return vec2 (
- noise1 (x),
- noise1 (x + 19.34)
- );
-}
-
-vec2 noise2 (vec2 x) {
- return vec2 (
- noise1 (x),
- noise1 (x + vec2 (19.34, 7.66))
- );
-}
-
-vec2 noise2 (vec3 x) {
- return vec2 (
- noise1 (x),
- noise1 (x + vec3 (19.34, 7.66, 3.23))
- );
-}
-
-vec2 noise2 (vec4 x) {
- return vec2 (
- noise1 (x),
- noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77))
- );
-}
-
-vec3 noise3 (float x) {
- return vec3 (
- noise1 (x),
- noise1 (x + 19.34),
- noise1 (x + 5.47)
- );
-}
-
-vec3 noise3 (vec2 x) {
- return vec3 (
- noise1 (x),
- noise1 (x + vec2 (19.34, 7.66)),
- noise1 (x + vec2 (5.47, 17.85))
- );
-}
-
-vec3 noise3 (vec3 x) {
- return vec3 (
- noise1 (x),
- noise1 (x + vec3 (19.34, 7.66, 3.23)),
- noise1 (x + vec3 (5.47, 17.85, 11.04))
- );
-}
-
-vec3 noise3 (vec4 x) {
- return vec3 (
- noise1 (x),
- noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77)),
- noise1 (x + vec4 (5.47, 17.85, 11.04, 13.19))
- );
-}
-
-vec4 noise4 (float x) {
- return vec4 (
- noise1 (x),
- noise1 (x + 19.34),
- noise1 (x + 5.47),
- noise1 (x + 23.54)
- );
-}
-
-vec4 noise4 (vec2 x) {
- return vec4 (
- noise1 (x),
- noise1 (x + vec2 (19.34, 7.66)),
- noise1 (x + vec2 (5.47, 17.85)),
- noise1 (x + vec2 (23.54, 29.11))
- );
-}
-
-vec4 noise4 (vec3 x) {
- return vec4 (
- noise1 (x),
- noise1 (x + vec3 (19.34, 7.66, 3.23)),
- noise1 (x + vec3 (5.47, 17.85, 11.04)),
- noise1 (x + vec3 (23.54, 29.11, 31.91))
- );
-}
-
-vec4 noise4 (vec4 x) {
- return vec4 (
- noise1 (x),
- noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77)),
- noise1 (x + vec4 (5.47, 17.85, 11.04, 13.19)),
- noise1 (x + vec4 (23.54, 29.11, 31.91, 37.48))
- );
-}
-