Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
712ecb96
Commit
712ecb96
authored
Jan 16, 2016
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Doubles: Add all the missing built-in double-based prototypes.
parent
c57b2a97
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
664 additions
and
41 deletions
+664
-41
400.frag
Test/400.frag
+1
-1
400.geom
Test/400.geom
+213
-0
400.frag.out
Test/baseResults/400.frag.out
+24
-40
400.geom.out
Test/baseResults/400.geom.out
+0
-0
spv.400.frag.out
Test/baseResults/spv.400.frag.out
+0
-0
spv.400.frag
Test/spv.400.frag
+218
-0
Initialize.cpp
glslang/MachineIndependent/Initialize.cpp
+208
-0
No files found.
Test/400.frag
View file @
712ecb96
...
@@ -60,7 +60,7 @@ patch out vec4 patchOut; // ERROR
...
@@ -60,7 +60,7 @@ patch out vec4 patchOut; // ERROR
void
foo24
()
void
foo24
()
{
{
dvec3
df
,
di
;
dvec3
df
,
di
;
df
=
modf
(
outp
.
xyz
,
di
);
df
=
modf
(
dvec3
(
outp
.
xyz
)
,
di
);
}
}
in
float
in1
;
in
float
in1
;
...
...
Test/400.geom
View file @
712ecb96
...
@@ -115,3 +115,216 @@ void qlod()
...
@@ -115,3 +115,216 @@ void qlod()
lod
=
textureQueryLod
(
samp1D
,
pf
);
// ERROR, only in fragment
lod
=
textureQueryLod
(
samp1D
,
pf
);
// ERROR, only in fragment
lod
=
textureQueryLod
(
samp2Ds
,
pf2
);
// ERROR, only in fragment
lod
=
textureQueryLod
(
samp2Ds
,
pf2
);
// ERROR, only in fragment
}
}
void
doubles
()
{
double
doublev
;
dvec2
dvec2v
;
dvec3
dvec3v
;
dvec4
dvec4v
;
bool
boolv
;
bvec2
bvec2v
;
bvec3
bvec3v
;
bvec4
bvec4v
;
doublev
=
sqrt
(
2
.
9
);
dvec2v
=
sqrt
(
dvec2
(
2
.
7
));
dvec3v
=
sqrt
(
dvec3
(
2
.
0
));
dvec4v
=
sqrt
(
dvec4
(
2
.
1
));
doublev
+=
inversesqrt
(
doublev
);
dvec2v
+=
inversesqrt
(
dvec2v
);
dvec3v
+=
inversesqrt
(
dvec3v
);
dvec4v
+=
inversesqrt
(
dvec4v
);
doublev
+=
abs
(
doublev
);
dvec2v
+=
abs
(
dvec2v
);
dvec3v
+=
abs
(
dvec3v
);
dvec4v
+=
abs
(
dvec4v
);
doublev
+=
sign
(
doublev
);
dvec2v
+=
sign
(
dvec2v
);
dvec3v
+=
sign
(
dvec3v
);
dvec4v
+=
sign
(
dvec4v
);
doublev
+=
floor
(
doublev
);
dvec2v
+=
floor
(
dvec2v
);
dvec3v
+=
floor
(
dvec3v
);
dvec4v
+=
floor
(
dvec4v
);
doublev
+=
trunc
(
doublev
);
dvec2v
+=
trunc
(
dvec2v
);
dvec3v
+=
trunc
(
dvec3v
);
dvec4v
+=
trunc
(
dvec4v
);
doublev
+=
round
(
doublev
);
dvec2v
+=
round
(
dvec2v
);
dvec3v
+=
round
(
dvec3v
);
dvec4v
+=
round
(
dvec4v
);
doublev
+=
roundEven
(
doublev
);
dvec2v
+=
roundEven
(
dvec2v
);
dvec3v
+=
roundEven
(
dvec3v
);
dvec4v
+=
roundEven
(
dvec4v
);
doublev
+=
ceil
(
doublev
);
dvec2v
+=
ceil
(
dvec2v
);
dvec3v
+=
ceil
(
dvec3v
);
dvec4v
+=
ceil
(
dvec4v
);
doublev
+=
fract
(
doublev
);
dvec2v
+=
fract
(
dvec2v
);
dvec3v
+=
fract
(
dvec3v
);
dvec4v
+=
fract
(
dvec4v
);
doublev
+=
mod
(
doublev
,
doublev
);
dvec2v
+=
mod
(
dvec2v
,
doublev
);
dvec3v
+=
mod
(
dvec3v
,
doublev
);
dvec4v
+=
mod
(
dvec4v
,
doublev
);
dvec2v
+=
mod
(
dvec2v
,
dvec2v
);
dvec3v
+=
mod
(
dvec3v
,
dvec3v
);
dvec4v
+=
mod
(
dvec4v
,
dvec4v
);
doublev
+=
modf
(
doublev
,
doublev
);
dvec2v
+=
modf
(
dvec2v
,
dvec2v
);
dvec3v
+=
modf
(
dvec3v
,
dvec3v
);
dvec4v
+=
modf
(
dvec4v
,
dvec4v
);
doublev
+=
min
(
doublev
,
doublev
);
dvec2v
+=
min
(
dvec2v
,
doublev
);
dvec3v
+=
min
(
dvec3v
,
doublev
);
dvec4v
+=
min
(
dvec4v
,
doublev
);
dvec2v
+=
min
(
dvec2v
,
dvec2v
);
dvec3v
+=
min
(
dvec3v
,
dvec3v
);
dvec4v
+=
min
(
dvec4v
,
dvec4v
);
doublev
+=
max
(
doublev
,
doublev
);
dvec2v
+=
max
(
dvec2v
,
doublev
);
dvec3v
+=
max
(
dvec3v
,
doublev
);
dvec4v
+=
max
(
dvec4v
,
doublev
);
dvec2v
+=
max
(
dvec2v
,
dvec2v
);
dvec3v
+=
max
(
dvec3v
,
dvec3v
);
dvec4v
+=
max
(
dvec4v
,
dvec4v
);
doublev
+=
clamp
(
doublev
,
doublev
,
doublev
);
dvec2v
+=
clamp
(
dvec2v
,
doublev
,
doublev
);
dvec3v
+=
clamp
(
dvec3v
,
doublev
,
doublev
);
dvec4v
+=
clamp
(
dvec4v
,
doublev
,
doublev
);
dvec2v
+=
clamp
(
dvec2v
,
dvec2v
,
dvec2v
);
dvec3v
+=
clamp
(
dvec3v
,
dvec3v
,
dvec3v
);
dvec4v
+=
clamp
(
dvec4v
,
dvec4v
,
dvec4v
);
doublev
+=
mix
(
doublev
,
doublev
,
doublev
);
dvec2v
+=
mix
(
dvec2v
,
dvec2v
,
doublev
);
dvec3v
+=
mix
(
dvec3v
,
dvec3v
,
doublev
);
dvec4v
+=
mix
(
dvec4v
,
dvec4v
,
doublev
);
dvec2v
+=
mix
(
dvec2v
,
dvec2v
,
dvec2v
);
dvec3v
+=
mix
(
dvec3v
,
dvec3v
,
dvec3v
);
dvec4v
+=
mix
(
dvec4v
,
dvec4v
,
dvec4v
);
doublev
+=
mix
(
doublev
,
doublev
,
boolv
);
dvec2v
+=
mix
(
dvec2v
,
dvec2v
,
bvec2v
);
dvec3v
+=
mix
(
dvec3v
,
dvec3v
,
bvec3v
);
dvec4v
+=
mix
(
dvec4v
,
dvec4v
,
bvec4v
);
doublev
+=
step
(
doublev
,
doublev
);
dvec2v
+=
step
(
dvec2v
,
dvec2v
);
dvec3v
+=
step
(
dvec3v
,
dvec3v
);
dvec4v
+=
step
(
dvec4v
,
dvec4v
);
dvec2v
+=
step
(
doublev
,
dvec2v
);
dvec3v
+=
step
(
doublev
,
dvec3v
);
dvec4v
+=
step
(
doublev
,
dvec4v
);
doublev
+=
smoothstep
(
doublev
,
doublev
,
doublev
);
dvec2v
+=
smoothstep
(
dvec2v
,
dvec2v
,
dvec2v
);
dvec3v
+=
smoothstep
(
dvec3v
,
dvec3v
,
dvec3v
);
dvec4v
+=
smoothstep
(
dvec4v
,
dvec4v
,
dvec4v
);
dvec2v
+=
smoothstep
(
doublev
,
doublev
,
dvec2v
);
dvec3v
+=
smoothstep
(
doublev
,
doublev
,
dvec3v
);
dvec4v
+=
smoothstep
(
doublev
,
doublev
,
dvec4v
);
boolv
=
isnan
(
doublev
);
bvec2v
=
isnan
(
dvec2v
);
bvec3v
=
isnan
(
dvec3v
);
bvec4v
=
isnan
(
dvec4v
);
boolv
=
boolv
?
isinf
(
doublev
)
:
false
;
bvec2v
=
boolv
?
isinf
(
dvec2v
)
:
bvec2
(
false
);
bvec3v
=
boolv
?
isinf
(
dvec3v
)
:
bvec3
(
false
);
bvec4v
=
boolv
?
isinf
(
dvec4v
)
:
bvec4
(
false
);
doublev
+=
length
(
doublev
);
doublev
+=
length
(
dvec2v
);
doublev
+=
length
(
dvec3v
);
doublev
+=
length
(
dvec4v
);
doublev
+=
distance
(
doublev
,
doublev
);
doublev
+=
distance
(
dvec2v
,
dvec2v
);
doublev
+=
distance
(
dvec3v
,
dvec3v
);
doublev
+=
distance
(
dvec4v
,
dvec4v
);
doublev
+=
dot
(
doublev
,
doublev
);
doublev
+=
dot
(
dvec2v
,
dvec2v
);
doublev
+=
dot
(
dvec3v
,
dvec3v
);
doublev
+=
dot
(
dvec4v
,
dvec4v
);
dvec3v
+=
cross
(
dvec3v
,
dvec3v
);
doublev
+=
normalize
(
doublev
);
dvec2v
+=
normalize
(
dvec2v
);
dvec3v
+=
normalize
(
dvec3v
);
dvec4v
+=
normalize
(
dvec4v
);
doublev
+=
faceforward
(
doublev
,
doublev
,
doublev
);
dvec2v
+=
faceforward
(
dvec2v
,
dvec2v
,
dvec2v
);
dvec3v
+=
faceforward
(
dvec3v
,
dvec3v
,
dvec3v
);
dvec4v
+=
faceforward
(
dvec4v
,
dvec4v
,
dvec4v
);
doublev
+=
reflect
(
doublev
,
doublev
);
dvec2v
+=
reflect
(
dvec2v
,
dvec2v
);
dvec3v
+=
reflect
(
dvec3v
,
dvec3v
);
dvec4v
+=
reflect
(
dvec4v
,
dvec4v
);
doublev
+=
refract
(
doublev
,
doublev
,
doublev
);
dvec2v
+=
refract
(
dvec2v
,
dvec2v
,
doublev
);
dvec3v
+=
refract
(
dvec3v
,
dvec3v
,
doublev
);
dvec4v
+=
refract
(
dvec4v
,
dvec4v
,
doublev
);
dmat2
dmat2v
=
outerProduct
(
dvec2v
,
dvec2v
);
dmat3
dmat3v
=
outerProduct
(
dvec3v
,
dvec3v
);
dmat4
dmat4v
=
outerProduct
(
dvec4v
,
dvec4v
);
dmat2x3
dmat2x3v
=
outerProduct
(
dvec3v
,
dvec2v
);
dmat3x2
dmat3x2v
=
outerProduct
(
dvec2v
,
dvec3v
);
dmat2x4
dmat2x4v
=
outerProduct
(
dvec4v
,
dvec2v
);
dmat4x2
dmat4x2v
=
outerProduct
(
dvec2v
,
dvec4v
);
dmat3x4
dmat3x4v
=
outerProduct
(
dvec4v
,
dvec3v
);
dmat4x3
dmat4x3v
=
outerProduct
(
dvec3v
,
dvec4v
);
dmat2v
*=
matrixCompMult
(
dmat2v
,
dmat2v
);
dmat3v
*=
matrixCompMult
(
dmat3v
,
dmat3v
);
dmat4v
*=
matrixCompMult
(
dmat4v
,
dmat4v
);
dmat2x3v
=
matrixCompMult
(
dmat2x3v
,
dmat2x3v
);
dmat2x4v
=
matrixCompMult
(
dmat2x4v
,
dmat2x4v
);
dmat3x2v
=
matrixCompMult
(
dmat3x2v
,
dmat3x2v
);
dmat3x4v
=
matrixCompMult
(
dmat3x4v
,
dmat3x4v
);
dmat4x2v
=
matrixCompMult
(
dmat4x2v
,
dmat4x2v
);
dmat4x3v
=
matrixCompMult
(
dmat4x3v
,
dmat4x3v
);
dmat2v
*=
transpose
(
dmat2v
);
dmat3v
*=
transpose
(
dmat3v
);
dmat4v
*=
transpose
(
dmat4v
);
dmat2x3v
=
transpose
(
dmat3x2v
);
dmat3x2v
=
transpose
(
dmat2x3v
);
dmat2x4v
=
transpose
(
dmat4x2v
);
dmat4x2v
=
transpose
(
dmat2x4v
);
dmat3x4v
=
transpose
(
dmat4x3v
);
dmat4x3v
=
transpose
(
dmat3x4v
);
doublev
+=
determinant
(
dmat2v
);
doublev
+=
determinant
(
dmat3v
);
doublev
+=
determinant
(
dmat4v
);
dmat2v
*=
inverse
(
dmat2v
);
dmat3v
*=
inverse
(
dmat3v
);
dmat4v
*=
inverse
(
dmat4v
);
}
Test/baseResults/400.frag.out
View file @
712ecb96
...
@@ -218,26 +218,18 @@ ERROR: node is still EOpNull!
...
@@ -218,26 +218,18 @@ ERROR: node is still EOpNull!
0:? Sequence
0:? Sequence
0:63 move second child to first child (temp 3-component vector of double)
0:63 move second child to first child (temp 3-component vector of double)
0:63 'df' (temp 3-component vector of double)
0:63 'df' (temp 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double)
0:63 modf (global 3-component vector of double)
0:63 Comma (global 3-component vector of float)
0:63 Convert float to double (temp 3-component vector of double)
0:63 move second child to first child (temp 3-component vector of float)
0:63 vector swizzle (temp 3-component vector of float)
0:63 'tempReturn' (global 3-component vector of float)
0:63 'outp' (out 4-component vector of float)
0:63 modf (global 3-component vector of float)
0:63 Sequence
0:63 vector swizzle (temp 3-component vector of float)
0:63 Constant:
0:63 'outp' (out 4-component vector of float)
0:63 0 (const int)
0:63 Sequence
0:63 Constant:
0:63 Constant:
0:63 1 (const int)
0:63 0 (const int)
0:63 Constant:
0:63 Constant:
0:63 2 (const int)
0:63 1 (const int)
0:63 'di' (temp 3-component vector of double)
0:63 Constant:
0:63 2 (const int)
0:63 'tempArg' (temp 3-component vector of float)
0:63 move second child to first child (temp 3-component vector of double)
0:63 'di' (temp 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double)
0:63 'tempArg' (temp 3-component vector of float)
0:63 'tempReturn' (global 3-component vector of float)
0:71 Function Definition: foodc1( (global void)
0:71 Function Definition: foodc1( (global void)
0:71 Function Parameters:
0:71 Function Parameters:
0:73 Sequence
0:73 Sequence
...
@@ -707,26 +699,18 @@ ERROR: node is still EOpNull!
...
@@ -707,26 +699,18 @@ ERROR: node is still EOpNull!
0:? Sequence
0:? Sequence
0:63 move second child to first child (temp 3-component vector of double)
0:63 move second child to first child (temp 3-component vector of double)
0:63 'df' (temp 3-component vector of double)
0:63 'df' (temp 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double)
0:63 modf (global 3-component vector of double)
0:63 Comma (global 3-component vector of float)
0:63 Convert float to double (temp 3-component vector of double)
0:63 move second child to first child (temp 3-component vector of float)
0:63 vector swizzle (temp 3-component vector of float)
0:63 'tempReturn' (global 3-component vector of float)
0:63 'outp' (out 4-component vector of float)
0:63 modf (global 3-component vector of float)
0:63 Sequence
0:63 vector swizzle (temp 3-component vector of float)
0:63 Constant:
0:63 'outp' (out 4-component vector of float)
0:63 0 (const int)
0:63 Sequence
0:63 Constant:
0:63 Constant:
0:63 1 (const int)
0:63 0 (const int)
0:63 Constant:
0:63 Constant:
0:63 2 (const int)
0:63 1 (const int)
0:63 'di' (temp 3-component vector of double)
0:63 Constant:
0:63 2 (const int)
0:63 'tempArg' (temp 3-component vector of float)
0:63 move second child to first child (temp 3-component vector of double)
0:63 'di' (temp 3-component vector of double)
0:63 Convert float to double (temp 3-component vector of double)
0:63 'tempArg' (temp 3-component vector of float)
0:63 'tempReturn' (global 3-component vector of float)
0:71 Function Definition: foodc1( (global void)
0:71 Function Definition: foodc1( (global void)
0:71 Function Parameters:
0:71 Function Parameters:
0:73 Sequence
0:73 Sequence
...
...
Test/baseResults/400.geom.out
View file @
712ecb96
This diff is collapsed.
Click to expand it.
Test/baseResults/spv.400.frag.out
View file @
712ecb96
This diff is collapsed.
Click to expand it.
Test/spv.400.frag
View file @
712ecb96
...
@@ -21,6 +21,223 @@ void foo23()
...
@@ -21,6 +21,223 @@ void foo23()
outp
.
x
+=
textureProjGradOffset
(
u2drs
,
outp
,
vec2
(
0
.
0
),
vec2
(
0
.
0
),
offsets
[
1
]);
outp
.
x
+=
textureProjGradOffset
(
u2drs
,
outp
,
vec2
(
0
.
0
),
vec2
(
0
.
0
),
offsets
[
1
]);
}
}
void
doubles
()
{
double
doublev
;
dvec2
dvec2v
;
dvec3
dvec3v
;
dvec4
dvec4v
;
bool
boolv
;
bvec2
bvec2v
;
bvec3
bvec3v
;
bvec4
bvec4v
;
doublev
=
sqrt
(
2
.
9
);
dvec2v
=
sqrt
(
dvec2
(
2
.
7
));
dvec3v
=
sqrt
(
dvec3
(
2
.
0
));
dvec4v
=
sqrt
(
dvec4
(
doublev
));
doublev
+=
inversesqrt
(
doublev
);
dvec2v
+=
inversesqrt
(
dvec2v
);
dvec3v
+=
inversesqrt
(
dvec3v
);
dvec4v
+=
inversesqrt
(
dvec4v
);
doublev
+=
abs
(
doublev
);
dvec2v
+=
abs
(
dvec2v
);
dvec3v
+=
abs
(
dvec3v
);
dvec4v
+=
abs
(
dvec4v
);
doublev
+=
sign
(
doublev
);
dvec2v
+=
sign
(
dvec2v
);
dvec3v
+=
sign
(
dvec3v
);
dvec4v
+=
sign
(
dvec4v
);
doublev
+=
floor
(
doublev
);
dvec2v
+=
floor
(
dvec2v
);
dvec3v
+=
floor
(
dvec3v
);
dvec4v
+=
floor
(
dvec4v
);
doublev
+=
trunc
(
doublev
);
dvec2v
+=
trunc
(
dvec2v
);
dvec3v
+=
trunc
(
dvec3v
);
dvec4v
+=
trunc
(
dvec4v
);
doublev
+=
round
(
doublev
);
dvec2v
+=
round
(
dvec2v
);
dvec3v
+=
round
(
dvec3v
);
dvec4v
+=
round
(
dvec4v
);
doublev
+=
roundEven
(
doublev
);
dvec2v
+=
roundEven
(
dvec2v
);
dvec3v
+=
roundEven
(
dvec3v
);
dvec4v
+=
roundEven
(
dvec4v
);
doublev
+=
ceil
(
doublev
);
dvec2v
+=
ceil
(
dvec2v
);
dvec3v
+=
ceil
(
dvec3v
);
dvec4v
+=
ceil
(
dvec4v
);
doublev
+=
fract
(
doublev
);
dvec2v
+=
fract
(
dvec2v
);
dvec3v
+=
fract
(
dvec3v
);
dvec4v
+=
fract
(
dvec4v
);
doublev
+=
mod
(
doublev
,
doublev
);
dvec2v
+=
mod
(
dvec2v
,
doublev
);
dvec3v
+=
mod
(
dvec3v
,
doublev
);
dvec4v
+=
mod
(
dvec4v
,
doublev
);
dvec2v
+=
mod
(
dvec2v
,
dvec2v
);
dvec3v
+=
mod
(
dvec3v
,
dvec3v
);
dvec4v
+=
mod
(
dvec4v
,
dvec4v
);
doublev
+=
modf
(
doublev
,
doublev
);
dvec2v
+=
modf
(
dvec2v
,
dvec2v
);
dvec3v
+=
modf
(
dvec3v
,
dvec3v
);
dvec4v
+=
modf
(
dvec4v
,
dvec4v
);
doublev
+=
min
(
doublev
,
doublev
);
dvec2v
+=
min
(
dvec2v
,
doublev
);
dvec3v
+=
min
(
dvec3v
,
doublev
);
dvec4v
+=
min
(
dvec4v
,
doublev
);
dvec2v
+=
min
(
dvec2v
,
dvec2v
);
dvec3v
+=
min
(
dvec3v
,
dvec3v
);
dvec4v
+=
min
(
dvec4v
,
dvec4v
);
doublev
+=
max
(
doublev
,
doublev
);
dvec2v
+=
max
(
dvec2v
,
doublev
);
dvec3v
+=
max
(
dvec3v
,
doublev
);
dvec4v
+=
max
(
dvec4v
,
doublev
);
dvec2v
+=
max
(
dvec2v
,
dvec2v
);
dvec3v
+=
max
(
dvec3v
,
dvec3v
);
dvec4v
+=
max
(
dvec4v
,
dvec4v
);
doublev
+=
clamp
(
doublev
,
doublev
,
doublev
);
dvec2v
+=
clamp
(
dvec2v
,
doublev
,
doublev
);
dvec3v
+=
clamp
(
dvec3v
,
doublev
,
doublev
);
dvec4v
+=
clamp
(
dvec4v
,
doublev
,
doublev
);
dvec2v
+=
clamp
(
dvec2v
,
dvec2v
,
dvec2v
);
dvec3v
+=
clamp
(
dvec3v
,
dvec3v
,
dvec3v
);
dvec4v
+=
clamp
(
dvec4v
,
dvec4v
,
dvec4v
);
doublev
+=
mix
(
doublev
,
doublev
,
doublev
);
dvec2v
+=
mix
(
dvec2v
,
dvec2v
,
doublev
);
dvec3v
+=
mix
(
dvec3v
,
dvec3v
,
doublev
);
dvec4v
+=
mix
(
dvec4v
,
dvec4v
,
doublev
);
dvec2v
+=
mix
(
dvec2v
,
dvec2v
,
dvec2v
);
dvec3v
+=
mix
(
dvec3v
,
dvec3v
,
dvec3v
);
dvec4v
+=
mix
(
dvec4v
,
dvec4v
,
dvec4v
);
doublev
+=
mix
(
doublev
,
doublev
,
boolv
);
dvec2v
+=
mix
(
dvec2v
,
dvec2v
,
bvec2v
);
dvec3v
+=
mix
(
dvec3v
,
dvec3v
,
bvec3v
);
dvec4v
+=
mix
(
dvec4v
,
dvec4v
,
bvec4v
);
doublev
+=
step
(
doublev
,
doublev
);
dvec2v
+=
step
(
dvec2v
,
dvec2v
);
dvec3v
+=
step
(
dvec3v
,
dvec3v
);
dvec4v
+=
step
(
dvec4v
,
dvec4v
);
dvec2v
+=
step
(
doublev
,
dvec2v
);
dvec3v
+=
step
(
doublev
,
dvec3v
);
dvec4v
+=
step
(
doublev
,
dvec4v
);
doublev
+=
smoothstep
(
doublev
,
doublev
,
doublev
);
dvec2v
+=
smoothstep
(
dvec2v
,
dvec2v
,
dvec2v
);
dvec3v
+=
smoothstep
(
dvec3v
,
dvec3v
,
dvec3v
);
dvec4v
+=
smoothstep
(
dvec4v
,
dvec4v
,
dvec4v
);
dvec2v
+=
smoothstep
(
doublev
,
doublev
,
dvec2v
);
dvec3v
+=
smoothstep
(
doublev
,
doublev
,
dvec3v
);
dvec4v
+=
smoothstep
(
doublev
,
doublev
,
dvec4v
);
boolv
=
isnan
(
doublev
);
bvec2v
=
isnan
(
dvec2v
);
bvec3v
=
isnan
(
dvec3v
);
bvec4v
=
isnan
(
dvec4v
);
boolv
=
boolv
?
isinf
(
doublev
)
:
false
;
bvec2v
=
boolv
?
isinf
(
dvec2v
)
:
bvec2
(
false
);
bvec3v
=
boolv
?
isinf
(
dvec3v
)
:
bvec3
(
false
);
bvec4v
=
boolv
?
isinf
(
dvec4v
)
:
bvec4
(
false
);
doublev
+=
length
(
doublev
);
doublev
+=
length
(
dvec2v
);
doublev
+=
length
(
dvec3v
);
doublev
+=
length
(
dvec4v
);
doublev
+=
distance
(
doublev
,
doublev
);
doublev
+=
distance
(
dvec2v
,
dvec2v
);
doublev
+=
distance
(
dvec3v
,
dvec3v
);
doublev
+=
distance
(
dvec4v
,
dvec4v
);
doublev
+=
dot
(
doublev
,
doublev
);
doublev
+=
dot
(
dvec2v
,
dvec2v
);
doublev
+=
dot
(
dvec3v
,
dvec3v
);
doublev
+=
dot
(
dvec4v
,
dvec4v
);
dvec3v
+=
cross
(
dvec3v
,
dvec3v
);
doublev
+=
normalize
(
doublev
);
dvec2v
+=
normalize
(
dvec2v
);
dvec3v
+=
normalize
(
dvec3v
);
dvec4v
+=
normalize
(
dvec4v
);
doublev
+=
faceforward
(
doublev
,
doublev
,
doublev
);
dvec2v
+=
faceforward
(
dvec2v
,
dvec2v
,
dvec2v
);
dvec3v
+=
faceforward
(
dvec3v
,
dvec3v
,
dvec3v
);
dvec4v
+=
faceforward
(
dvec4v
,
dvec4v
,
dvec4v
);
doublev
+=
reflect
(
doublev
,
doublev
);
dvec2v
+=
reflect
(
dvec2v
,
dvec2v
);
dvec3v
+=
reflect
(
dvec3v
,
dvec3v
);
dvec4v
+=
reflect
(
dvec4v
,
dvec4v
);
doublev
+=
refract
(
doublev
,
doublev
,
doublev
);
dvec2v
+=
refract
(
dvec2v
,
dvec2v
,
doublev
);
dvec3v
+=
refract
(
dvec3v
,
dvec3v
,
doublev
);
dvec4v
+=
refract
(
dvec4v
,
dvec4v
,
doublev
);
dmat2
dmat2v
=
outerProduct
(
dvec2v
,
dvec2v
);
dmat3
dmat3v
=
outerProduct
(
dvec3v
,
dvec3v
);
dmat4
dmat4v
=
outerProduct
(
dvec4v
,
dvec4v
);
dmat2x3
dmat2x3v
=
outerProduct
(
dvec3v
,
dvec2v
);
dmat3x2
dmat3x2v
=
outerProduct
(
dvec2v
,
dvec3v
);
dmat2x4
dmat2x4v
=
outerProduct
(
dvec4v
,
dvec2v
);
dmat4x2
dmat4x2v
=
outerProduct
(
dvec2v
,
dvec4v
);
dmat3x4
dmat3x4v
=
outerProduct
(
dvec4v
,
dvec3v
);
dmat4x3
dmat4x3v
=
outerProduct
(
dvec3v
,
dvec4v
);
dmat2v
*=
matrixCompMult
(
dmat2v
,
dmat2v
);
dmat3v
*=
matrixCompMult
(
dmat3v
,
dmat3v
);
dmat4v
*=
matrixCompMult
(
dmat4v
,
dmat4v
);
dmat2x3v
=
matrixCompMult
(
dmat2x3v
,
dmat2x3v
);
// For now, relying on no dead-code elimination
dmat2x4v
=
matrixCompMult
(
dmat2x4v
,
dmat2x4v
);
dmat3x2v
=
matrixCompMult
(
dmat3x2v
,
dmat3x2v
);
dmat3x4v
=
matrixCompMult
(
dmat3x4v
,
dmat3x4v
);
dmat4x2v
=
matrixCompMult
(
dmat4x2v
,
dmat4x2v
);
dmat4x3v
=
matrixCompMult
(
dmat4x3v
,
dmat4x3v
);
dmat2v
*=
transpose
(
dmat2v
);
dmat3v
*=
transpose
(
dmat3v
);
dmat4v
*=
transpose
(
dmat4v
);
dmat2x3v
=
transpose
(
dmat3x2v
);
// For now, relying on no dead-code elimination
dmat3x2v
=
transpose
(
dmat2x3v
);
dmat2x4v
=
transpose
(
dmat4x2v
);
dmat4x2v
=
transpose
(
dmat2x4v
);
dmat3x4v
=
transpose
(
dmat4x3v
);
dmat4x3v
=
transpose
(
dmat3x4v
);
doublev
+=
determinant
(
dmat2v
);
doublev
+=
determinant
(
dmat3v
);
doublev
+=
determinant
(
dmat4v
);
dmat2v
*=
inverse
(
dmat2v
);
dmat3v
*=
inverse
(
dmat3v
);
dmat4v
*=
inverse
(
dmat4v
);
outp
*=
float
(
doublev
+
dvec2v
.
y
+
dvec3v
.
z
+
dvec4v
.
w
+
dmat2v
[
1
][
1
]
+
dmat3v
[
2
][
2
]
+
dmat4v
[
3
][
3
]
+
dmat2x3v
[
1
][
1
]
+
dmat3x2v
[
1
][
1
]
+
dmat3x4v
[
2
][
2
]
+
dmat4x3v
[
2
][
2
]
+
dmat2x4v
[
1
][
1
]
+
dmat4x2v
[
1
][
1
]
+
float
(
boolv
)
+
float
(
bvec2v
.
x
)
+
float
(
bvec3v
.
x
)
+
float
(
bvec4v
.
x
));
}
void
main
()
void
main
()
{
{
vec4
v
;
vec4
v
;
...
@@ -38,5 +255,6 @@ void main()
...
@@ -38,5 +255,6 @@ void main()
outp
+=
gl_FragCoord
+
vl2
;
outp
+=
gl_FragCoord
+
vl2
;
foo23
();
foo23
();
doubles
();
}
}
glslang/MachineIndependent/Initialize.cpp
View file @
712ecb96
...
@@ -419,6 +419,214 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv)
...
@@ -419,6 +419,214 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv)
"
\n
"
);
"
\n
"
);
}
}
//
// double functions added to desktop 4.00, but not fma, frexp, ldexp, or pack/unpack
//
if
(
profile
!=
EEsProfile
&&
version
>=
400
)
{
commonBuiltins
.
append
(
"double sqrt(double);"
"dvec2 sqrt(dvec2);"
"dvec3 sqrt(dvec3);"
"dvec4 sqrt(dvec4);"
"double inversesqrt(double);"
"dvec2 inversesqrt(dvec2);"
"dvec3 inversesqrt(dvec3);"
"dvec4 inversesqrt(dvec4);"
"double abs(double);"
"dvec2 abs(dvec2);"
"dvec3 abs(dvec3);"
"dvec4 abs(dvec4);"
"double sign(double);"
"dvec2 sign(dvec2);"
"dvec3 sign(dvec3);"
"dvec4 sign(dvec4);"
"double floor(double);"
"dvec2 floor(dvec2);"
"dvec3 floor(dvec3);"
"dvec4 floor(dvec4);"
"double trunc(double);"
"dvec2 trunc(dvec2);"
"dvec3 trunc(dvec3);"
"dvec4 trunc(dvec4);"
"double round(double);"
"dvec2 round(dvec2);"
"dvec3 round(dvec3);"
"dvec4 round(dvec4);"
"double roundEven(double);"
"dvec2 roundEven(dvec2);"
"dvec3 roundEven(dvec3);"
"dvec4 roundEven(dvec4);"
"double ceil(double);"
"dvec2 ceil(dvec2);"
"dvec3 ceil(dvec3);"
"dvec4 ceil(dvec4);"
"double fract(double);"
"dvec2 fract(dvec2);"
"dvec3 fract(dvec3);"
"dvec4 fract(dvec4);"
"double mod(double, double);"
"dvec2 mod(dvec2 , double);"
"dvec3 mod(dvec3 , double);"
"dvec4 mod(dvec4 , double);"
"dvec2 mod(dvec2 , dvec2);"
"dvec3 mod(dvec3 , dvec3);"
"dvec4 mod(dvec4 , dvec4);"
"double modf(double, out double);"
"dvec2 modf(dvec2, out dvec2);"
"dvec3 modf(dvec3, out dvec3);"
"dvec4 modf(dvec4, out dvec4);"
"double min(double, double);"
"dvec2 min(dvec2, double);"
"dvec3 min(dvec3, double);"
"dvec4 min(dvec4, double);"
"dvec2 min(dvec2, dvec2);"
"dvec3 min(dvec3, dvec3);"
"dvec4 min(dvec4, dvec4);"
"double max(double, double);"
"dvec2 max(dvec2 , double);"
"dvec3 max(dvec3 , double);"
"dvec4 max(dvec4 , double);"
"dvec2 max(dvec2 , dvec2);"
"dvec3 max(dvec3 , dvec3);"
"dvec4 max(dvec4 , dvec4);"
"double clamp(double, double, double);"
"dvec2 clamp(dvec2 , double, double);"
"dvec3 clamp(dvec3 , double, double);"
"dvec4 clamp(dvec4 , double, double);"
"dvec2 clamp(dvec2 , dvec2 , dvec2);"
"dvec3 clamp(dvec3 , dvec3 , dvec3);"
"dvec4 clamp(dvec4 , dvec4 , dvec4);"
"double mix(double, double, double);"
"dvec2 mix(dvec2, dvec2, double);"
"dvec3 mix(dvec3, dvec3, double);"
"dvec4 mix(dvec4, dvec4, double);"
"dvec2 mix(dvec2, dvec2, dvec2);"
"dvec3 mix(dvec3, dvec3, dvec3);"
"dvec4 mix(dvec4, dvec4, dvec4);"
"double mix(double, double, bool);"
"dvec2 mix(dvec2, dvec2, bvec2);"
"dvec3 mix(dvec3, dvec3, bvec3);"
"dvec4 mix(dvec4, dvec4, bvec4);"
"double step(double, double);"
"dvec2 step(dvec2 , dvec2);"
"dvec3 step(dvec3 , dvec3);"
"dvec4 step(dvec4 , dvec4);"
"dvec2 step(double, dvec2);"
"dvec3 step(double, dvec3);"
"dvec4 step(double, dvec4);"
"double smoothstep(double, double, double);"
"dvec2 smoothstep(dvec2 , dvec2 , dvec2);"
"dvec3 smoothstep(dvec3 , dvec3 , dvec3);"
"dvec4 smoothstep(dvec4 , dvec4 , dvec4);"
"dvec2 smoothstep(double, double, dvec2);"
"dvec3 smoothstep(double, double, dvec3);"
"dvec4 smoothstep(double, double, dvec4);"
"bool isnan(double);"
"bvec2 isnan(dvec2);"
"bvec3 isnan(dvec3);"
"bvec4 isnan(dvec4);"
"bool isinf(double);"
"bvec2 isinf(dvec2);"
"bvec3 isinf(dvec3);"
"bvec4 isinf(dvec4);"
"double length(double);"
"double length(dvec2);"
"double length(dvec3);"
"double length(dvec4);"
"double distance(double, double);"
"double distance(dvec2 , dvec2);"
"double distance(dvec3 , dvec3);"
"double distance(dvec4 , dvec4);"
"double dot(double, double);"
"double dot(dvec2 , dvec2);"
"double dot(dvec3 , dvec3);"
"double dot(dvec4 , dvec4);"
"dvec3 cross(dvec3, dvec3);"
"double normalize(double);"
"dvec2 normalize(dvec2);"
"dvec3 normalize(dvec3);"
"dvec4 normalize(dvec4);"
"double faceforward(double, double, double);"
"dvec2 faceforward(dvec2, dvec2, dvec2);"
"dvec3 faceforward(dvec3, dvec3, dvec3);"
"dvec4 faceforward(dvec4, dvec4, dvec4);"
"double reflect(double, double);"
"dvec2 reflect(dvec2 , dvec2 );"
"dvec3 reflect(dvec3 , dvec3 );"
"dvec4 reflect(dvec4 , dvec4 );"
"double refract(double, double, double);"
"dvec2 refract(dvec2 , dvec2 , double);"
"dvec3 refract(dvec3 , dvec3 , double);"
"dvec4 refract(dvec4 , dvec4 , double);"
"dmat2 matrixCompMult(dmat2, dmat2);"
"dmat3 matrixCompMult(dmat3, dmat3);"
"dmat4 matrixCompMult(dmat4, dmat4);"
"dmat2x3 matrixCompMult(dmat2x3, dmat2x3);"
"dmat2x4 matrixCompMult(dmat2x4, dmat2x4);"
"dmat3x2 matrixCompMult(dmat3x2, dmat3x2);"
"dmat3x4 matrixCompMult(dmat3x4, dmat3x4);"
"dmat4x2 matrixCompMult(dmat4x2, dmat4x2);"
"dmat4x3 matrixCompMult(dmat4x3, dmat4x3);"
"dmat2 outerProduct(dvec2, dvec2);"
"dmat3 outerProduct(dvec3, dvec3);"
"dmat4 outerProduct(dvec4, dvec4);"
"dmat2x3 outerProduct(dvec3, dvec2);"
"dmat3x2 outerProduct(dvec2, dvec3);"
"dmat2x4 outerProduct(dvec4, dvec2);"
"dmat4x2 outerProduct(dvec2, dvec4);"
"dmat3x4 outerProduct(dvec4, dvec3);"
"dmat4x3 outerProduct(dvec3, dvec4);"
"dmat2 transpose(dmat2);"
"dmat3 transpose(dmat3);"
"dmat4 transpose(dmat4);"
"dmat2x3 transpose(dmat3x2);"
"dmat3x2 transpose(dmat2x3);"
"dmat2x4 transpose(dmat4x2);"
"dmat4x2 transpose(dmat2x4);"
"dmat3x4 transpose(dmat4x3);"
"dmat4x3 transpose(dmat3x4);"
"double determinant(dmat2);"
"double determinant(dmat3);"
"double determinant(dmat4);"
"dmat2 inverse(dmat2);"
"dmat3 inverse(dmat3);"
"dmat4 inverse(dmat4);"
);
}
if
((
profile
==
EEsProfile
&&
version
>=
310
)
||
if
((
profile
==
EEsProfile
&&
version
>=
310
)
||
(
profile
!=
EEsProfile
&&
version
>=
430
))
{
(
profile
!=
EEsProfile
&&
version
>=
430
))
{
commonBuiltins
.
append
(
commonBuiltins
.
append
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment