Implement 'distance' builtin.

This commit is contained in:
Kenneth Graunke
2010-06-09 13:17:00 -07:00
parent cdf1726ffd
commit 29b22287fe
2 changed files with 70 additions and 0 deletions
+37
View File
@@ -513,6 +513,42 @@ static const char *builtins_110_degrees = {
"))\n"
};
static const char *builtins_110_distance = {
"((function distance\n"
" (signature float\n"
" (parameters\n"
" (declare (in) float p0)\n"
" (declare (in) float p1))\n"
" ((declare () float p)\n"
" (assign (constant bool (1)) (var_ref p) (expression float - (var_ref p0) (var_ref p1)))\n"
" (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))\n"
"\n"
" (signature float\n"
" (parameters\n"
" (declare (in) vec2 p0)\n"
" (declare (in) vec2 p1))\n"
" ((declare () vec2 p)\n"
" (assign (constant bool (1)) (var_ref p) (expression vec2 - (var_ref p0) (var_ref p1)))\n"
" (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))\n"
"\n"
" (signature float\n"
" (parameters\n"
" (declare (in) vec3 p0)\n"
" (declare (in) vec3 p1))\n"
" ((declare () vec3 p)\n"
" (assign (constant bool (1)) (var_ref p) (expression vec3 - (var_ref p0) (var_ref p1)))\n"
" (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))\n"
"\n"
" (signature float\n"
" (parameters\n"
" (declare (in) vec4 p0)\n"
" (declare (in) vec4 p1))\n"
" ((declare () vec4 p)\n"
" (assign (constant bool (1)) (var_ref p) (expression vec4 - (var_ref p0) (var_ref p1)))\n"
" (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))\n"
"))\n"
};
static const char *builtins_110_dot = {
"((function dot\n"
" (signature float\n"
@@ -2174,6 +2210,7 @@ static const char *functions_for_110 [] = {
builtins_110_cos,
builtins_110_cross,
builtins_110_degrees,
builtins_110_distance,
builtins_110_dot,
builtins_110_equal,
builtins_110_exp,
+33
View File
@@ -0,0 +1,33 @@
((function distance
(signature float
(parameters
(declare (in) float p0)
(declare (in) float p1))
((declare () float p)
(assign (constant bool (1)) (var_ref p) (expression float - (var_ref p0) (var_ref p1)))
(return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))
(signature float
(parameters
(declare (in) vec2 p0)
(declare (in) vec2 p1))
((declare () vec2 p)
(assign (constant bool (1)) (var_ref p) (expression vec2 - (var_ref p0) (var_ref p1)))
(return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))
(signature float
(parameters
(declare (in) vec3 p0)
(declare (in) vec3 p1))
((declare () vec3 p)
(assign (constant bool (1)) (var_ref p) (expression vec3 - (var_ref p0) (var_ref p1)))
(return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))
(signature float
(parameters
(declare (in) vec4 p0)
(declare (in) vec4 p1))
((declare () vec4 p)
(assign (constant bool (1)) (var_ref p) (expression vec4 - (var_ref p0) (var_ref p1)))
(return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))
))