mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-25 21:21:14 +00:00
[qfcc] Parse about 2/5 of the glsl functions
They're stuck on computed return types causing segfaults, but the rest helped with ironing out other issues in the compiler.
This commit is contained in:
parent
3aab301d45
commit
f6d2cf43e8
1 changed files with 236 additions and 196 deletions
|
@ -309,217 +309,256 @@ static gentype_t genDType = {
|
||||||
.name = "genDType",
|
.name = "genDType",
|
||||||
.valid_types = Dtypes,
|
.valid_types = Dtypes,
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
genFType radians(genFType degrees)
|
static const char *glsl_general_functions =
|
||||||
genFType degrees(genFType radians)
|
SRC_LINE
|
||||||
genFType sin(genFType angle)
|
"#define out @out" "\n"
|
||||||
genFType cos(genFType angle)
|
"#define highp" "\n"
|
||||||
genFType tan(genFType angle)
|
"#define lowp" "\n"
|
||||||
genFType asin(genFType x)
|
"#define uint unsigned" "\n"
|
||||||
genFType acos(genFType x)
|
"#define uvec2 uivec2" "\n"
|
||||||
genFType atan(genFType y, genFType x)
|
"@generic(genFType=@vector(float)," "\n"
|
||||||
genFType atan(genFType y_over_x)
|
" genDType=@vector(double)," "\n"
|
||||||
genFType sinh(genFType x)
|
" genIType=@vector(int)," "\n"
|
||||||
genFType cosh(genFType x)
|
" genUType=@vector(unsigned int)," "\n"
|
||||||
genFType tanh(genFType x)
|
" genBType=@vector(bool)," "\n"
|
||||||
genFType asinh(genFType x)
|
" mat=@matrix(float)," "\n"
|
||||||
genFType acosh(genFType x)
|
" vec=[vec2,vec3,vec4,dvec2,dvec3,dvec4]," "\n"
|
||||||
genFType atanh(genFType x)
|
" ivec=[ivec2,ivec3,ivec4]," "\n"
|
||||||
|
" uvec=[uivec2,uivec3,uivec4]," "\n"
|
||||||
|
" bvec=[bvec2,bvec3,bvec4]) {" "\n"
|
||||||
|
"genFType radians(genFType degrees);" "\n"
|
||||||
|
"genFType degrees(genFType radians);" "\n"
|
||||||
|
"genFType sin(genFType angle);" "\n"
|
||||||
|
"genFType cos(genFType angle);" "\n"
|
||||||
|
"genFType tan(genFType angle);" "\n"
|
||||||
|
"genFType asin(genFType x);" "\n"
|
||||||
|
"genFType acos(genFType x);" "\n"
|
||||||
|
"genFType atan(genFType y, genFType x);" "\n"
|
||||||
|
"genFType atan(genFType y_over_x);" "\n"
|
||||||
|
"genFType sinh(genFType x);" "\n"
|
||||||
|
"genFType cosh(genFType x);" "\n"
|
||||||
|
"genFType tanh(genFType x);" "\n"
|
||||||
|
"genFType asinh(genFType x);" "\n"
|
||||||
|
"genFType acosh(genFType x);" "\n"
|
||||||
|
"genFType atanh(genFType x);" "\n"
|
||||||
|
|
||||||
//exponential functions
|
//exponential functions
|
||||||
genFType pow(genFType x, genFType y)
|
SRC_LINE
|
||||||
genFType exp(genFType x)
|
"genFType pow(genFType x, genFType y);" "\n"
|
||||||
genFType log(genFType x)
|
"genFType exp(genFType x);" "\n"
|
||||||
genFType exp2(genFType x)
|
"genFType log(genFType x);" "\n"
|
||||||
genFType log2(genFType x)
|
"genFType exp2(genFType x);" "\n"
|
||||||
genFType sqrt(genFType x)
|
"genFType log2(genFType x);" "\n"
|
||||||
genDType sqrt(genDType x)
|
"genFType sqrt(genFType x);" "\n"
|
||||||
genFType inversesqrt(genFType x)
|
"genDType sqrt(genDType x);" "\n"
|
||||||
genDType inversesqrt(genDType x)
|
"genFType inversesqrt(genFType x);" "\n"
|
||||||
|
"genDType inversesqrt(genDType x);" "\n"
|
||||||
|
|
||||||
//common functions
|
//common functions
|
||||||
genFType abs(genFType x)
|
SRC_LINE
|
||||||
genIType abs(genIType x)
|
"genFType abs(genFType x);" "\n"
|
||||||
genDType abs(genDType x)
|
"genIType abs(genIType x);" "\n"
|
||||||
genFType sign(genFType x)
|
"genDType abs(genDType x);" "\n"
|
||||||
genIType sign(genIType x)
|
"genFType sign(genFType x);" "\n"
|
||||||
genDType sign(genDType x)
|
"genIType sign(genIType x);" "\n"
|
||||||
genFType floor(genFType x)
|
"genDType sign(genDType x);" "\n"
|
||||||
genDType floor(genDType x)
|
"genFType floor(genFType x);" "\n"
|
||||||
genFType trunc(genFType x)
|
"genDType floor(genDType x);" "\n"
|
||||||
genDType trunc(genDType x)
|
"genFType trunc(genFType x);" "\n"
|
||||||
genFType round(genFType x)
|
"genDType trunc(genDType x);" "\n"
|
||||||
genDType round(genDType x)
|
"genFType round(genFType x);" "\n"
|
||||||
genFType roundEven(genFType x)
|
"genDType round(genDType x);" "\n"
|
||||||
genDType roundEven(genDType x)
|
"genFType roundEven(genFType x);" "\n"
|
||||||
genFType ceil(genFType x)
|
"genDType roundEven(genDType x);" "\n"
|
||||||
genDType ceil(genDType x)
|
"genFType ceil(genFType x);" "\n"
|
||||||
genFType fract(genFType x)
|
"genDType ceil(genDType x);" "\n"
|
||||||
genDType fract(genDType x)
|
"genFType fract(genFType x);" "\n"
|
||||||
genFType mod(genFType x, float y)
|
"genDType fract(genDType x);" "\n"
|
||||||
genFType mod(genFType x, genFType y)
|
"genFType mod(genFType x, float y);" "\n"
|
||||||
genDType mod(genDType x, double y)
|
"genFType mod(genFType x, genFType y);" "\n"
|
||||||
genDType mod(genDType x, genDType y)
|
"genDType mod(genDType x, double y);" "\n"
|
||||||
genFType modf(genFType x, out genFType i)
|
"genDType mod(genDType x, genDType y);" "\n"
|
||||||
genDType modf(genDType x, out genDType i)
|
"genFType modf(genFType x, out genFType i);" "\n"
|
||||||
genFType min(genFType x, genFType y)
|
"genDType modf(genDType x, out genDType i);" "\n"
|
||||||
genFType min(genFType x, float y)
|
"genFType min(genFType x, genFType y);" "\n"
|
||||||
genDType min(genDType x, genDType y)
|
"genFType min(genFType x, float y);" "\n"
|
||||||
genDType min(genDType x, double y)
|
"genDType min(genDType x, genDType y);" "\n"
|
||||||
genIType min(genIType x, genIType y)
|
"genDType min(genDType x, double y);" "\n"
|
||||||
genIType min(genIType x, int y)
|
"genIType min(genIType x, genIType y);" "\n"
|
||||||
genUType min(genUType x, genUType y)
|
"genIType min(genIType x, int y);" "\n"
|
||||||
genUType min(genUType x, uint y)
|
"genUType min(genUType x, genUType y);" "\n"
|
||||||
genFType max(genFType x, genFType y)
|
"genUType min(genUType x, uint y);" "\n"
|
||||||
genFType max(genFType x, float y)
|
"genFType max(genFType x, genFType y);" "\n"
|
||||||
genDType max(genDType x, genDType y)
|
"genFType max(genFType x, float y);" "\n"
|
||||||
genDType max(genDType x, double y)
|
"genDType max(genDType x, genDType y);" "\n"
|
||||||
genIType max(genIType x, genIType y)
|
"genDType max(genDType x, double y);" "\n"
|
||||||
genIType max(genIType x, int y)
|
"genIType max(genIType x, genIType y);" "\n"
|
||||||
genUType max(genUType x, genUType y)
|
"genIType max(genIType x, int y);" "\n"
|
||||||
genUType max(genUType x, uint y)
|
"genUType max(genUType x, genUType y);" "\n"
|
||||||
genFType clamp(genFType x, genFType minVal, genFType maxVal)
|
"genUType max(genUType x, uint y);" "\n"
|
||||||
genFType clamp(genFType x, float minVal, float maxVal)
|
"genFType clamp(genFType x, genFType minVal, genFType maxVal);" "\n"
|
||||||
genDType clamp(genDType x, genDType minVal, genDType maxVal)
|
"genFType clamp(genFType x, float minVal, float maxVal);" "\n"
|
||||||
genDType clamp(genDType x, double minVal, double maxVal)
|
"genDType clamp(genDType x, genDType minVal, genDType maxVal);" "\n"
|
||||||
genIType clamp(genIType x, genIType minVal, genIType maxVal)
|
"genDType clamp(genDType x, double minVal, double maxVal);" "\n"
|
||||||
genIType clamp(genIType x, int minVal, int maxVal)
|
"genIType clamp(genIType x, genIType minVal, genIType maxVal);" "\n"
|
||||||
genUType clamp(genUType x, genUType minVal, genUType maxVal)
|
"genIType clamp(genIType x, int minVal, int maxVal);" "\n"
|
||||||
genUType clamp(genUType x, uint minVal, uint maxVal)
|
"genUType clamp(genUType x, genUType minVal, genUType maxVal);" "\n"
|
||||||
genFType mix(genFType x, genFType y, genFType a)
|
"genUType clamp(genUType x, uint minVal, uint maxVal);" "\n"
|
||||||
genFType mix(genFType x, genFType y, float a)
|
"genFType mix(genFType x, genFType y, genFType a);" "\n"
|
||||||
genDType mix(genDType x, genDType y, genDType a)
|
"genFType mix(genFType x, genFType y, float a);" "\n"
|
||||||
genDType mix(genDType x, genDType y, double a)
|
"genDType mix(genDType x, genDType y, genDType a);" "\n"
|
||||||
genFType mix(genFType x, genFType y, genBType a)
|
"genDType mix(genDType x, genDType y, double a);" "\n"
|
||||||
genDType mix(genDType x, genDType y, genBType a)
|
"genFType mix(genFType x, genFType y, genBType a);" "\n"
|
||||||
genIType mix(genIType x, genIType y, genBType a)
|
"genDType mix(genDType x, genDType y, genBType a);" "\n"
|
||||||
genUType mix(genUType x, genUType y, genBType a)
|
"genIType mix(genIType x, genIType y, genBType a);" "\n"
|
||||||
genBType mix(genBType x, genBType y, genBType a)
|
"genUType mix(genUType x, genUType y, genBType a);" "\n"
|
||||||
genFType step(genFType edge, genFType x)
|
"genBType mix(genBType x, genBType y, genBType a);" "\n"
|
||||||
genFType step(float edge, genFType x)
|
"genFType step(genFType edge, genFType x);" "\n"
|
||||||
genDType step(genDType edge, genDType x)
|
"genFType step(float edge, genFType x);" "\n"
|
||||||
genDType step(double edge, genDType x)
|
"genDType step(genDType edge, genDType x);" "\n"
|
||||||
genFType smoothstep(genFType edge0, genFType edge1, genFType x)
|
"genDType step(double edge, genDType x);" "\n"
|
||||||
genFType smoothstep(float edge0, float edge1, genFType x)
|
"genFType smoothstep(genFType edge0, genFType edge1, genFType x);" "\n"
|
||||||
genDType smoothstep(genDType edge0, genDType edge1, genDType x)
|
"genFType smoothstep(float edge0, float edge1, genFType x);" "\n"
|
||||||
genDType smoothstep(double edge0, double edge1, genDType x)
|
"genDType smoothstep(genDType edge0, genDType edge1, genDType x);" "\n"
|
||||||
genBType isnan(genFType x)
|
"genDType smoothstep(double edge0, double edge1, genDType x);" "\n"
|
||||||
genBType isnan(genDType x)
|
"genBType isnan(genFType x);" "\n"
|
||||||
genBType isinf(genFType x)
|
"genBType isnan(genDType x);" "\n"
|
||||||
genBType isinf(genDType x)
|
"genBType isinf(genFType x);" "\n"
|
||||||
genIType floatBitsToInt(highp genFType value)
|
"genBType isinf(genDType x);" "\n"
|
||||||
genUType floatBitsToUint(highp genFType value)
|
"genIType floatBitsToInt(highp genFType value);" "\n"
|
||||||
genFType intBitsToFloat(highp genIType value)
|
"genUType floatBitsToUint(highp genFType value);" "\n"
|
||||||
genFType uintBitsToFloat(highp genUType value)
|
"genFType intBitsToFloat(highp genIType value);" "\n"
|
||||||
genFType fma(genFType a, genFType b, genFType c)
|
"genFType uintBitsToFloat(highp genUType value);" "\n"
|
||||||
genDType fma(genDType a, genDType b, genDType c)
|
"genFType fma(genFType a, genFType b, genFType c);" "\n"
|
||||||
genFType frexp(highp genFType x, out highp genIType exp)
|
"genDType fma(genDType a, genDType b, genDType c);" "\n"
|
||||||
genDType frexp(genDType x, out genIType exp)
|
"genFType frexp(highp genFType x, out highp genIType exp);" "\n"
|
||||||
genFType ldexp(highp genFType x, highp genIType exp)
|
"genDType frexp(genDType x, out genIType exp);" "\n"
|
||||||
genDType ldexp(genDType x, genIType exp)
|
"genFType ldexp(highp genFType x, highp genIType exp);" "\n"
|
||||||
|
"genDType ldexp(genDType x, genIType exp);" "\n"
|
||||||
|
|
||||||
//floating-point pack and unpack functions
|
//floating-point pack and unpack functions
|
||||||
highp uint packUnorm2x16(vec2 v)
|
SRC_LINE
|
||||||
highp uint packSnorm2x16(vec2 v)
|
"highp uint packUnorm2x16(vec2 v);" "\n"
|
||||||
uint packUnorm4x8(vec4 v)
|
"highp uint packSnorm2x16(vec2 v);" "\n"
|
||||||
uint packSnorm4x8(vec4 v)
|
"uint packUnorm4x8(vec4 v);" "\n"
|
||||||
vec2 unpackUnorm2x16(highp uint p)
|
"uint packSnorm4x8(vec4 v);" "\n"
|
||||||
vec2 unpackSnorm2x16(highp uint p)
|
"vec2 unpackUnorm2x16(highp uint p);" "\n"
|
||||||
vec4 unpackUnorm4x8(highp uint p)
|
"vec2 unpackSnorm2x16(highp uint p);" "\n"
|
||||||
vec4 unpackSnorm4x8(highp uint p)
|
"vec4 unpackUnorm4x8(highp uint p);" "\n"
|
||||||
uint packHalf2x16(vec2 v)
|
"vec4 unpackSnorm4x8(highp uint p);" "\n"
|
||||||
vec2 unpackHalf2x16(uint v)
|
"uint packHalf2x16(vec2 v);" "\n"
|
||||||
double packDouble2x32(uvec2 v)
|
"vec2 unpackHalf2x16(uint v);" "\n"
|
||||||
uvec2 unpackDouble2x32(double v)
|
"double packDouble2x32(uvec2 v);" "\n"
|
||||||
|
"uvec2 unpackDouble2x32(double v);" "\n"
|
||||||
|
|
||||||
//geometric functions
|
//geometric functions
|
||||||
float length(genFType x)
|
SRC_LINE
|
||||||
double length(genDType x)
|
"float length(genFType x);" "\n"
|
||||||
float distance(genFType p0, genFType p1)
|
"double length(genDType x);" "\n"
|
||||||
double distance(genDType p0, genDType p1)
|
"float distance(genFType p0, genFType p1);" "\n"
|
||||||
float dot(genFType x, genFType y)
|
"double distance(genDType p0, genDType p1);" "\n"
|
||||||
double dot(genDType x, genDType y)
|
"float dot(genFType x, genFType y);" "\n"
|
||||||
vec3 cross(vec3 x, vec3 y)
|
"double dot(genDType x, genDType y);" "\n"
|
||||||
dvec3 cross(dvec3 x, dvec3 y)
|
"@overload vec3 cross(vec3 x, vec3 y);" "\n"
|
||||||
genFType normalize(genFType x)
|
"@overload dvec3 cross(dvec3 x, dvec3 y);" "\n"
|
||||||
genDType normalize(genDType x)
|
"genFType normalize(genFType x);" "\n"
|
||||||
genFType faceforward(genFType N, genFType I, genFType Nref)
|
"genDType normalize(genDType x);" "\n"
|
||||||
genDType faceforward(genDType N, genDType I, genDType Nref)
|
"genFType faceforward(genFType N, genFType I, genFType Nref);" "\n"
|
||||||
genFType reflect(genFType I, genFType N)
|
"genDType faceforward(genDType N, genDType I, genDType Nref);" "\n"
|
||||||
genDType reflect(genDType I, genDType N)
|
"genFType reflect(genFType I, genFType N);" "\n"
|
||||||
genFType refract(genFType I, genFType N, float eta)
|
"genDType reflect(genDType I, genDType N);" "\n"
|
||||||
genDType refract(genDType I, genDType N, double eta)
|
"genFType refract(genFType I, genFType N, float eta);" "\n"
|
||||||
|
"genDType refract(genDType I, genDType N, double eta);" "\n"
|
||||||
|
|
||||||
//matrix functions
|
//matrix functions
|
||||||
mat matrixCompMult(mat x, mat y)
|
SRC_LINE
|
||||||
mat2 outerProduct(vec2 c, vec2 r)
|
"mat matrixCompMult(mat x, mat y);" "\n"
|
||||||
mat3 outerProduct(vec3 c, vec3 r)
|
"@overload mat2 outerProduct(vec2 c, vec2 r);" "\n"
|
||||||
mat4 outerProduct(vec4 c, vec4 r)
|
"@overload mat3 outerProduct(vec3 c, vec3 r);" "\n"
|
||||||
mat2x3 outerProduct(vec3 c, vec2 r)
|
"@overload mat4 outerProduct(vec4 c, vec4 r);" "\n"
|
||||||
mat3x2 outerProduct(vec2 c, vec3 r)
|
"@overload mat2x3 outerProduct(vec3 c, vec2 r);" "\n"
|
||||||
mat2x4 outerProduct(vec4 c, vec2 r)
|
"@overload mat3x2 outerProduct(vec2 c, vec3 r);" "\n"
|
||||||
mat4x2 outerProduct(vec2 c, vec4 r)
|
"@overload mat2x4 outerProduct(vec4 c, vec2 r);" "\n"
|
||||||
mat3x4 outerProduct(vec4 c, vec3 r)
|
"@overload mat4x2 outerProduct(vec2 c, vec4 r);" "\n"
|
||||||
mat4x3 outerProduct(vec3 c, vec4 r)
|
"@overload mat3x4 outerProduct(vec4 c, vec3 r);" "\n"
|
||||||
mat2 transpose(mat2 m)
|
"@overload mat4x3 outerProduct(vec3 c, vec4 r);" "\n"
|
||||||
mat3 transpose(mat3 m)
|
"@overload mat2 transpose(mat2 m);" "\n"
|
||||||
mat4 transpose(mat4 m)
|
"@overload mat3 transpose(mat3 m);" "\n"
|
||||||
mat2x3 transpose(mat3x2 m)
|
"@overload mat4 transpose(mat4 m);" "\n"
|
||||||
mat3x2 transpose(mat2x3 m)
|
"@overload mat2x3 transpose(mat3x2 m);" "\n"
|
||||||
mat2x4 transpose(mat4x2 m)
|
"@overload mat3x2 transpose(mat2x3 m);" "\n"
|
||||||
mat4x2 transpose(mat2x4 m)
|
"@overload mat2x4 transpose(mat4x2 m);" "\n"
|
||||||
mat3x4 transpose(mat4x3 m)
|
"@overload mat4x2 transpose(mat2x4 m);" "\n"
|
||||||
mat4x3 transpose(mat3x4 m)
|
"@overload mat3x4 transpose(mat4x3 m);" "\n"
|
||||||
float determinant(mat2 m)
|
"@overload mat4x3 transpose(mat3x4 m);" "\n"
|
||||||
float determinant(mat3 m)
|
"@overload float determinant(mat2 m);" "\n"
|
||||||
float determinant(mat4 m)
|
"@overload float determinant(mat3 m);" "\n"
|
||||||
mat2 inverse(mat2 m)
|
"@overload float determinant(mat4 m);" "\n"
|
||||||
mat3 inverse(mat3 m)
|
"@overload mat2 inverse(mat2 m);" "\n"
|
||||||
mat4 inverse(mat4 m)
|
"@overload mat3 inverse(mat3 m);" "\n"
|
||||||
|
"@overload mat4 inverse(mat4 m);" "\n"
|
||||||
|
|
||||||
//vector relational functions
|
//vector relational functions
|
||||||
bvec lessThan(vec x, vec y)
|
SRC_LINE
|
||||||
bvec lessThan(ivec x, ivec y)
|
"@vector(bool,@width(vec)) lessThan(vec x, vec y);" "\n"
|
||||||
bvec lessThan(uvec x, uvec y)
|
"@vector(bool,@width(ivec)) lessThan(ivec x, ivec y);" "\n"
|
||||||
bvec lessThanEqual(vec x, vec y)
|
"@vector(bool,@width(uvec)) lessThan(uvec x, uvec y);" "\n"
|
||||||
bvec lessThanEqual(ivec x, ivec y)
|
"@vector(bool,@width(vec)) lessThanEqual(vec x, vec y);" "\n"
|
||||||
bvec lessThanEqual(uvec x, uvec y)
|
"@vector(bool,@width(ivec)) lessThanEqual(ivec x, ivec y);" "\n"
|
||||||
bvec greaterThan(vec x, vec y)
|
"@vector(bool,@width(uvec)) lessThanEqual(uvec x, uvec y);" "\n"
|
||||||
bvec greaterThan(ivec x, ivec y)
|
"@vector(bool,@width(vec)) greaterThan(vec x, vec y);" "\n"
|
||||||
bvec greaterThan(uvec x, uvec y)
|
"@vector(bool,@width(ivec)) greaterThan(ivec x, ivec y);" "\n"
|
||||||
bvec greaterThanEqual(vec x, vec y)
|
"@vector(bool,@width(uvec)) greaterThan(uvec x, uvec y);" "\n"
|
||||||
bvec greaterThanEqual(ivec x, ivec y)
|
"@vector(bool,@width(vec)) greaterThanEqual(vec x, vec y);" "\n"
|
||||||
bvec greaterThanEqual(uvec x, uvec y)
|
"@vector(bool,@width(ivec)) greaterThanEqual(ivec x, ivec y);" "\n"
|
||||||
bvec equal(vec x, vec y)
|
"@vector(bool,@width(uvec)) greaterThanEqual(uvec x, uvec y);" "\n"
|
||||||
bvec equal(ivec x, ivec y)
|
"@vector(bool,@width(vec)) equal(vec x, vec y);" "\n"
|
||||||
bvec equal(uvec x, uvec y)
|
"@vector(bool,@width(ivec)) equal(ivec x, ivec y);" "\n"
|
||||||
bvec equal(bvec x, bvec y)
|
"@vector(bool,@width(uvec)) equal(uvec x, uvec y);" "\n"
|
||||||
bvec notEqual(vec x, vec y)
|
"@vector(bool,@width(bvec)) equal(bvec x, bvec y);" "\n"
|
||||||
bvec notEqual(ivec x, ivec y)
|
"@vector(bool,@width(vec)) notEqual(vec x, vec y);" "\n"
|
||||||
bvec notEqual(uvec x, uvec y)
|
"@vector(bool,@width(ivec)) notEqual(ivec x, ivec y);" "\n"
|
||||||
bvec notEqual(bvec x, bvec y)
|
"@vector(bool,@width(uvec)) notEqual(uvec x, uvec y);" "\n"
|
||||||
bool any(bvec x)
|
"@vector(bool,@width(bvec)) notEqual(bvec x, bvec y);" "\n"
|
||||||
bool all(bvec x)
|
"bool any(bvec x);" "\n"
|
||||||
bvec not(bvec x)
|
"bool all(bvec x);" "\n"
|
||||||
|
"@vector(bool,@width(bvec)) not(bvec x);" "\n"
|
||||||
|
|
||||||
//integer functions
|
//integer functions
|
||||||
genUType uaddCarry(highp genUType x, highp genUType y, out lowp genUType carry)
|
SRC_LINE
|
||||||
genUType usubBorrow(highp genUType x, highp genUType y, out lowp genUType borrow)
|
"genUType uaddCarry(highp genUType x, highp genUType y," "\n"
|
||||||
void umulExtended(highp genUType x, highp genUType y, out highp genUType msb, out highp genUType lsb)
|
" out lowp genUType carry);" "\n"
|
||||||
void imulExtended(highp genIType x, highp genIType y, out highp genIType msb, out highp genIType lsb)
|
"genUType usubBorrow(highp genUType x, highp genUType y," "\n"
|
||||||
genIType bitfieldExtract(genIType value, int offset, int bits)
|
" out lowp genUType borrow);" "\n"
|
||||||
genUType bitfieldExtract(genUType value, int offset, int bits)
|
"void umulExtended(highp genUType x, highp genUType y," "\n"
|
||||||
genIType bitfieldInsert(genIType base, genIType insert, int offset, int bits)
|
" out highp genUType msb," "\n"
|
||||||
genUType bitfieldInsert(genUType base, genUType insert, int offset, int bits)
|
" out highp genUType lsb);" "\n"
|
||||||
genIType bitfieldReverse(highp genIType value)
|
"void imulExtended(highp genIType x, highp genIType y," "\n"
|
||||||
genUType bitfieldReverse(highp genUType value)
|
" out highp genIType msb," "\n"
|
||||||
genIType bitCount(genIType value)
|
" out highp genIType lsb);" "\n"
|
||||||
genIType bitCount(genUType value)
|
"genIType bitfieldExtract(genIType value, int offset, int bits);" "\n"
|
||||||
genIType findLSB(genIType value)
|
"genUType bitfieldExtract(genUType value, int offset, int bits);" "\n"
|
||||||
genIType findLSB(genUType value)
|
"genIType bitfieldInsert(genIType base, genIType insert," "\n"
|
||||||
genIType findMSB(highp genIType value)
|
" int offset, int bits);" "\n"
|
||||||
genIType findMSB(highp genUType value)
|
"genUType bitfieldInsert(genUType base, genUType insert," "\n"
|
||||||
|
" int offset, int bits);" "\n"
|
||||||
|
"genIType bitfieldReverse(highp genIType value);" "\n"
|
||||||
|
"genUType bitfieldReverse(highp genUType value);" "\n"
|
||||||
|
"genIType bitCount(genIType value);" "\n"
|
||||||
|
"genIType bitCount(genUType value);" "\n"
|
||||||
|
"genIType findLSB(genIType value);" "\n"
|
||||||
|
"genIType findLSB(genUType value);" "\n"
|
||||||
|
"genIType findMSB(highp genIType value);" "\n"
|
||||||
|
"genIType findMSB(highp genUType value);" "\n"
|
||||||
|
"};" "\n"
|
||||||
|
"#undef out" "\n"
|
||||||
|
"#undef highp" "\n"
|
||||||
|
"#undef lowp" "\n"
|
||||||
|
"#undef uint" "\n"
|
||||||
|
"#undef uvec2" "\n";
|
||||||
|
#if 0
|
||||||
//texture functions
|
//texture functions
|
||||||
//query
|
//query
|
||||||
int textureSize(gsampler1D sampler, int lod)
|
int textureSize(gsampler1D sampler, int lod)
|
||||||
|
@ -876,6 +915,7 @@ glsl_init_common (void)
|
||||||
{
|
{
|
||||||
current_language.initialized = true;
|
current_language.initialized = true;
|
||||||
glsl_block_clear ();
|
glsl_block_clear ();
|
||||||
|
qc_parse_string (glsl_general_functions);
|
||||||
glsl_parse_vars (glsl_system_constants);
|
glsl_parse_vars (glsl_system_constants);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue