diff options
Diffstat (limited to 'src/glsl/builtins')
82 files changed, 5132 insertions, 0 deletions
| diff --git a/src/glsl/builtins/110/abs b/src/glsl/builtins/110/abs new file mode 100644 index 0000000000..904845307c --- /dev/null +++ b/src/glsl/builtins/110/abs @@ -0,0 +1,21 @@ +((function abs +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float abs (var_ref arg0))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 abs (var_ref arg0))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 abs (var_ref arg0))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 abs (var_ref arg0))))) +)) diff --git a/src/glsl/builtins/110/all b/src/glsl/builtins/110/all new file mode 100644 index 0000000000..2cac0dfb68 --- /dev/null +++ b/src/glsl/builtins/110/all @@ -0,0 +1,16 @@ +((function all +   (signature bool +     (parameters +       (declare (in) bvec2 arg0)) +     ((return (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0)))))) + +   (signature bool +     (parameters +       (declare (in) bvec3 arg0)) +     ((return (expression bool && (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0)))))) + +   (signature bool +     (parameters +       (declare (in) bvec4 arg0)) +     ((return (expression bool && (expression bool && (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))) (swiz w (var_ref arg0)))))) +)) diff --git a/src/glsl/builtins/110/any b/src/glsl/builtins/110/any new file mode 100644 index 0000000000..f10e8a7b47 --- /dev/null +++ b/src/glsl/builtins/110/any @@ -0,0 +1,16 @@ +((function any +   (signature bool +     (parameters +       (declare (in) bvec2 arg0)) +     ((return (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0)))))) + +   (signature bool +     (parameters +       (declare (in) bvec3 arg0)) +     ((return (expression bool || (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0)))))) + +   (signature bool +     (parameters +       (declare (in) bvec4 arg0)) +     ((return (expression bool || (expression bool || (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))) (swiz w (var_ref arg0)))))) +)) diff --git a/src/glsl/builtins/110/asin b/src/glsl/builtins/110/asin new file mode 100644 index 0000000000..fe93337bff --- /dev/null +++ b/src/glsl/builtins/110/asin @@ -0,0 +1,112 @@ +((function asin +   (signature float +     (parameters +       (declare (in) float x)) +     ((return (expression float * +     	       (expression float - +	        (expression float * +		 (constant float (3.1415926)) +		 (constant float (0.5))) +		(expression float sqrt +		 (expression float - +		  (constant float (1.0)) +		  (expression float abs (var_ref x))))) +     	       (expression float + +     	        (constant float (1.5707288)) +	        (expression float * +     	         (expression float abs (var_ref x)) +     	         (expression float + +	          (constant float (-0.2121144)) +     	          (expression float * +     	           (constant float (0.0742610)) +	           (expression float abs (var_ref x)))))))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 x)) +     ((return (expression vec2 * +     	       (expression float - +	        (expression float * +		 (constant float (3.1415926)) +		 (constant float (0.5))) +		(expression vec2 sqrt +		 (expression vec2 - +		  (constant float (1.0)) +		  (expression vec2 abs (var_ref x))))) +     	       (expression vec2 + +     	        (constant float (1.5707288)) +	        (expression vec2 * +     	         (expression vec2 abs (var_ref x)) +     	         (expression vec2 + +	          (constant float (-0.2121144)) +     	          (expression vec2 * +     	           (constant float (0.0742610)) +	           (expression vec2 abs (var_ref x)))))))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 x)) +     ((return (expression vec3 * +     	       (expression vec3 - +	        (expression float * +		 (constant float (3.1415926)) +		 (constant float (0.5))) +		(expression vec3 sqrt +		 (expression vec3 - +		  (constant float (1.0)) +		  (expression vec3 abs (var_ref x))))) +     	       (expression vec3 + +     	        (constant float (1.5707288)) +	        (expression vec3 * +     	         (expression vec3 abs (var_ref x)) +     	         (expression vec3 + +	          (constant float (-0.2121144)) +     	          (expression vec3 * +     	           (constant float (0.0742610)) +	           (expression vec3 abs (var_ref x)))))))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 x)) +     ((return (expression vec4 * +     	       (expression vec4 - +	        (expression float * +		 (constant float (3.1415926)) +		 (constant float (0.5))) +		(expression vec4 sqrt +		 (expression vec4 - +		  (constant float (1.0)) +		  (expression vec4 abs (var_ref x))))) +     	       (expression vec4 + +     	        (constant float (1.5707288)) +	        (expression vec4 * +     	         (expression vec4 abs (var_ref x)) +     	         (expression vec4 + +	          (constant float (-0.2121144)) +     	          (expression vec4 * +     	           (constant float (0.0742610)) +	           (expression vec4 abs (var_ref x)))))))))) +) + + (function acos +   (signature float +     (parameters +       (declare (in) float x)) +     ((return (expression float - (constant float (1.5707963)) +                                  (call asin ((var_ref x))))))) +   (signature vec2 +     (parameters +       (declare (in) vec2 x)) +     ((return (expression vec2 - (constant float (1.5707963)) +                                 (call asin ((var_ref x))))))) +   (signature vec3 +     (parameters +       (declare (in) vec3 x)) +     ((return (expression vec3 - (constant float (1.5707963)) +                                 (call asin ((var_ref x))))))) +   (signature vec4 +     (parameters +       (declare (in) vec4 x)) +     ((return (expression vec4 - (constant float (1.5707963)) +                                 (call asin ((var_ref x))))))) +)) diff --git a/src/glsl/builtins/110/atan b/src/glsl/builtins/110/atan new file mode 100644 index 0000000000..e5542350b5 --- /dev/null +++ b/src/glsl/builtins/110/atan @@ -0,0 +1,154 @@ +((function atan +   (signature float +     (parameters +       (declare (in) float x)) +     ((return (call asin ((expression float * +			   (var_ref x) +			   (expression float rsq +			    (expression float + +			     (expression float * +			      (var_ref x) +			      (var_ref x)) +			     (constant float (1.0)))))))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 y_over_x)) +     ((return (call asin ((expression vec2 * +			   (var_ref y_over_x) +			   (expression vec2 rsq +			    (expression vec2 + +			     (expression vec2 * +			      (var_ref y_over_x) +			      (var_ref y_over_x)) +			     (constant float (1.0)))))))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 y_over_x)) +     ((return (call asin ((expression vec3 * +			   (var_ref y_over_x) +			   (expression vec3 rsq +			    (expression vec3 + +			     (expression vec3 * +			      (var_ref y_over_x) +			      (var_ref y_over_x)) +			     (constant float (1.0)))))))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 y_over_x)) +     ((return (call asin ((expression vec4 * +			   (var_ref y_over_x) +			   (expression vec4 rsq +			    (expression vec4 + +			     (expression vec4 * +			      (var_ref y_over_x) +			      (var_ref y_over_x)) +			     (constant float (1.0)))))))))) + +   (signature float +     (parameters +       (declare (in) float y) +       (declare (in) float x)) +     ((declare () float r) +      (if (expression bool > +	   (expression float abs (var_ref x)) +	   (constant float (.0001))) +       ((assign (constant bool (1)) +	 (var_ref r) (call atan ((expression float / +				  (var_ref y) +				  (var_ref x))))) +	(if (expression bool < +	     (var_ref x) +	     (constant float (0.0))) +	 ((assign (constant bool (1)) +	   (var_ref r) +	   (expression float + +	    (var_ref r) +	    (expression float * +	     (expression int sign (var_ref y)) +	     (constant float (3.1415926)))))) +	 ())) +       ()) +      (return (var_ref r)))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 y) +       (declare (in) vec2 x)) +     ((declare () vec2 r) +      (if (expression bool > +	   (expression vec2 abs (var_ref x)) +	   (constant float (.0001))) +       ((assign (constant bool (1)) +	 (var_ref r) (call atan ((expression vec2 / +				  (var_ref y) +				  (var_ref x))))) +	(if (expression bool < +	     (var_ref x) +	     (constant float (0.0))) +	 ((assign (constant bool (1)) +	   (var_ref r) +	   (expression vec2 + +	    (var_ref r) +	    (expression vec2 * +	     (expression int sign (var_ref y)) +	     (constant float (3.1415926)))))) +	 ())) +       ()) +      (return (var_ref r)))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 y) +       (declare (in) vec3 x)) +     ((declare () vec3 r) +      (if (expression bool > +	   (expression vec3 abs (var_ref x)) +	   (constant float (.0001))) +       ((assign (constant bool (1)) +	 (var_ref r) (call atan ((expression vec3 / +				  (var_ref y) +				  (var_ref x))))) +	(if (expression bool < +	     (var_ref x) +	     (constant float (0.0))) +	 ((assign (constant bool (1)) +	   (var_ref r) +	   (expression vec3 + +	    (var_ref r) +	    (expression vec3 * +	     (expression int sign (var_ref y)) +	     (constant float (3.1415926)))))) +	 ())) +       ()) +      (return (var_ref r)))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 y) +       (declare (in) vec4 x)) +     ((declare () vec4 r) +      (if (expression bool > +	   (expression vec4 abs (var_ref x)) +	   (constant float (.0001))) +       ((assign (constant bool (1)) +	 (var_ref r) (call atan ((expression vec4 / +				  (var_ref y) +				  (var_ref x))))) +	(if (expression bool < +	     (var_ref x) +	     (constant float (0.0))) +	 ((assign (constant bool (1)) +	   (var_ref r) +	   (expression vec4 + +	    (var_ref r) +	    (expression vec4 * +	     (expression int sign (var_ref y)) +	     (constant float (3.1415926)))))) +	 ())) +       ()) +      (return (var_ref r)))) + +)) diff --git a/src/glsl/builtins/110/ceil b/src/glsl/builtins/110/ceil new file mode 100644 index 0000000000..a26a775049 --- /dev/null +++ b/src/glsl/builtins/110/ceil @@ -0,0 +1,21 @@ +((function ceil +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float ceil (var_ref arg0))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 ceil (var_ref arg0))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 ceil (var_ref arg0))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 ceil (var_ref arg0))))) +)) diff --git a/src/glsl/builtins/110/clamp b/src/glsl/builtins/110/clamp new file mode 100644 index 0000000000..94c8e5ed16 --- /dev/null +++ b/src/glsl/builtins/110/clamp @@ -0,0 +1,62 @@ +((function clamp +   (signature float +     (parameters +       (declare (in) float arg0) +       (declare (in) float arg1) +       (declare (in) float arg2)) +     ((return (expression float max (expression float min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1) +       (declare (in) vec2 arg2)) +     ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1) +       (declare (in) vec3 arg2)) +     ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1) +       (declare (in) vec4 arg2)) +     ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2  arg0) +       (declare (in) float arg1) +       (declare (in) float arg2)) +     ((declare () vec2 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) (expression vec4 max (expression vec4 min (swiz x (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) (expression vec4 max (expression vec4 min (swiz y (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature vec3 +     (parameters +       (declare (in) vec3  arg0) +       (declare (in) float arg1) +       (declare (in) float arg2)) +     ((declare () vec3 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) (expression vec4 max (expression vec4 min (swiz x (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) (expression vec4 max (expression vec4 min (swiz y (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) (expression vec4 max (expression vec4 min (swiz z (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature vec4 +     (parameters +       (declare (in) vec4  arg0) +       (declare (in) float arg1) +       (declare (in) float arg2)) +     ((declare () vec4 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) (expression vec4 max (expression vec4 min (swiz x (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) (expression vec4 max (expression vec4 min (swiz y (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) (expression vec4 max (expression vec4 min (swiz z (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz w (var_ref result)) (expression vec4 max (expression vec4 min (swiz w (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (return (var_ref result)))) +)) diff --git a/src/glsl/builtins/110/cos b/src/glsl/builtins/110/cos new file mode 100644 index 0000000000..88f266eccb --- /dev/null +++ b/src/glsl/builtins/110/cos @@ -0,0 +1,21 @@ +((function cos +   (signature float +     (parameters +       (declare (in) float angle)) +     ((return (expression float cos (var_ref angle))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 angle)) +     ((return (expression vec2 cos (var_ref angle))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 angle)) +     ((return (expression vec3 cos (var_ref angle))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 angle)) +     ((return (expression vec4 cos (var_ref angle))))) +)) diff --git a/src/glsl/builtins/110/cross b/src/glsl/builtins/110/cross new file mode 100644 index 0000000000..deb2f952bf --- /dev/null +++ b/src/glsl/builtins/110/cross @@ -0,0 +1,17 @@ +((function cross +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((declare () vec3 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) +              (expression float - (expression float * (swiz y (var_ref arg0)) (swiz z (var_ref arg1))) +	                          (expression float * (swiz y (var_ref arg1)) (swiz z (var_ref arg0))))) +      (assign (constant bool (1)) (swiz y (var_ref t)) +              (expression float - (expression float * (swiz z (var_ref arg0)) (swiz x (var_ref arg1))) +	                          (expression float * (swiz z (var_ref arg1)) (swiz x (var_ref arg0))))) +      (assign (constant bool (1)) (swiz z (var_ref t)) +              (expression float - (expression float * (swiz x (var_ref arg0)) (swiz y (var_ref arg1))) +	                          (expression float * (swiz x (var_ref arg1)) (swiz y (var_ref arg0))))) +      (return (var_ref t)))) +)) diff --git a/src/glsl/builtins/110/degrees b/src/glsl/builtins/110/degrees new file mode 100644 index 0000000000..dc0d7b9e20 --- /dev/null +++ b/src/glsl/builtins/110/degrees @@ -0,0 +1,21 @@ +((function degrees +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float * (var_ref arg0) (constant float (57.295780)))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 * (var_ref arg0) (constant float (57.295780)))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 * (var_ref arg0) (constant float (57.295780)))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 * (var_ref arg0) (constant float (57.295780)))))) +)) diff --git a/src/glsl/builtins/110/distance b/src/glsl/builtins/110/distance new file mode 100644 index 0000000000..a2309c484f --- /dev/null +++ b/src/glsl/builtins/110/distance @@ -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)))))) +)) diff --git a/src/glsl/builtins/110/dot b/src/glsl/builtins/110/dot new file mode 100644 index 0000000000..a91a6d2c56 --- /dev/null +++ b/src/glsl/builtins/110/dot @@ -0,0 +1,25 @@ +((function dot +   (signature float +     (parameters +       (declare (in) float arg0) +       (declare (in) float arg1)) +     ((return (expression float dot (var_ref arg0) (var_ref arg1))))) + +   (signature float +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((return (expression float dot (var_ref arg0) (var_ref arg1))))) + +   (signature float +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((return (expression float dot (var_ref arg0) (var_ref arg1))))) + +   (signature float +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((return (expression float dot (var_ref arg0) (var_ref arg1))))) +)) diff --git a/src/glsl/builtins/110/equal b/src/glsl/builtins/110/equal new file mode 100644 index 0000000000..ae7ddc53bd --- /dev/null +++ b/src/glsl/builtins/110/equal @@ -0,0 +1,61 @@ +((function equal +   (signature bvec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool == (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec2 +     (parameters +       (declare (in) ivec2 arg0) +       (declare (in) ivec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) ivec3 arg0) +       (declare (in) ivec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) ivec4 arg0) +       (declare (in) ivec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool == (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/110/exp b/src/glsl/builtins/110/exp new file mode 100644 index 0000000000..a73bd6a7f8 --- /dev/null +++ b/src/glsl/builtins/110/exp @@ -0,0 +1,21 @@ +((function exp +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float exp (var_ref arg0))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 exp (var_ref arg0))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 exp (var_ref arg0))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 exp (var_ref arg0))))) +)) diff --git a/src/glsl/builtins/110/exp2 b/src/glsl/builtins/110/exp2 new file mode 100644 index 0000000000..a842d3fe65 --- /dev/null +++ b/src/glsl/builtins/110/exp2 @@ -0,0 +1,21 @@ +((function exp2 +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float exp2 (var_ref arg0))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 exp2 (var_ref arg0))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 exp2 (var_ref arg0))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 exp2 (var_ref arg0))))) +)) diff --git a/src/glsl/builtins/110/faceforward b/src/glsl/builtins/110/faceforward new file mode 100644 index 0000000000..d170397238 --- /dev/null +++ b/src/glsl/builtins/110/faceforward @@ -0,0 +1,37 @@ +((function faceforward +   (signature float +     (parameters +       (declare (in) float N) +       (declare (in) float I) +       (declare (in) float Nref)) +     ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0))) +          ((return (var_ref N))) +	  ((return (expression float neg (var_ref N))))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 N) +       (declare (in) vec2 I) +       (declare (in) vec2 Nref)) +     ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0))) +          ((return (var_ref N))) +	  ((return (expression vec2 neg (var_ref N))))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 N) +       (declare (in) vec3 I) +       (declare (in) vec3 Nref)) +     ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0))) +          ((return (var_ref N))) +	  ((return (expression vec3 neg (var_ref N))))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 N) +       (declare (in) vec4 I) +       (declare (in) vec4 Nref)) +     ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0))) +          ((return (var_ref N))) +	  ((return (expression vec4 neg (var_ref N))))))) +)) diff --git a/src/glsl/builtins/110/floor b/src/glsl/builtins/110/floor new file mode 100644 index 0000000000..8dd8052799 --- /dev/null +++ b/src/glsl/builtins/110/floor @@ -0,0 +1,21 @@ +((function floor +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float floor (var_ref arg0))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 floor (var_ref arg0))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 floor (var_ref arg0))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 floor (var_ref arg0))))) +)) diff --git a/src/glsl/builtins/110/fract b/src/glsl/builtins/110/fract new file mode 100644 index 0000000000..3995bfaf3f --- /dev/null +++ b/src/glsl/builtins/110/fract @@ -0,0 +1,34 @@ +((function fract +   (signature float +     (parameters +       (declare (in) float x)) +     ((return (expression float - (var_ref x) (expression float floor (var_ref x)))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 x)) +     ((declare () vec2 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x))))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x))))) +      (return (var_ref t)))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 x)) +     ((declare () vec3 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x))))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x))))) +      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float - (swiz z (var_ref x)) (expression float floor (swiz z (var_ref x))))) +      (return (var_ref t)))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 x)) +     ((declare () vec4 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x))))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x))))) +      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float - (swiz z (var_ref x)) (expression float floor (swiz z (var_ref x))))) +      (assign (constant bool (1)) (swiz w (var_ref t)) (expression float - (swiz w (var_ref x)) (expression float floor (swiz w (var_ref x))))) +      (return (var_ref t)))) +)) + diff --git a/src/glsl/builtins/110/greaterThan b/src/glsl/builtins/110/greaterThan new file mode 100644 index 0000000000..ae03030e49 --- /dev/null +++ b/src/glsl/builtins/110/greaterThan @@ -0,0 +1,61 @@ +((function greaterThan +   (signature bvec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec2 +     (parameters +       (declare (in) ivec2 arg0) +       (declare (in) ivec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) ivec3 arg0) +       (declare (in) ivec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) ivec4 arg0) +       (declare (in) ivec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/110/greaterThanEqual b/src/glsl/builtins/110/greaterThanEqual new file mode 100644 index 0000000000..204d5fd143 --- /dev/null +++ b/src/glsl/builtins/110/greaterThanEqual @@ -0,0 +1,61 @@ +((function greaterThanEqual +   (signature bvec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec2 +     (parameters +       (declare (in) ivec2 arg0) +       (declare (in) ivec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) ivec3 arg0) +       (declare (in) ivec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) ivec4 arg0) +       (declare (in) ivec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/110/inversesqrt b/src/glsl/builtins/110/inversesqrt new file mode 100644 index 0000000000..5b66d2b369 --- /dev/null +++ b/src/glsl/builtins/110/inversesqrt @@ -0,0 +1,21 @@ +((function inversesqrt +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float rsq (var_ref arg0))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 rsq (var_ref arg0))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 rsq (var_ref arg0))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 rsq (var_ref arg0))))) +)) diff --git a/src/glsl/builtins/110/length b/src/glsl/builtins/110/length new file mode 100644 index 0000000000..89ff7f3ef1 --- /dev/null +++ b/src/glsl/builtins/110/length @@ -0,0 +1,21 @@ +((function length +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0)))))) + +   (signature float +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0)))))) + +   (signature float +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0)))))) + +   (signature float +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0)))))) +)) diff --git a/src/glsl/builtins/110/lessThan b/src/glsl/builtins/110/lessThan new file mode 100644 index 0000000000..5c4254165c --- /dev/null +++ b/src/glsl/builtins/110/lessThan @@ -0,0 +1,61 @@ +((function lessThan +   (signature bvec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec2 +     (parameters +       (declare (in) ivec2 arg0) +       (declare (in) ivec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) ivec3 arg0) +       (declare (in) ivec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) ivec4 arg0) +       (declare (in) ivec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/110/lessThanEqual b/src/glsl/builtins/110/lessThanEqual new file mode 100644 index 0000000000..ccb955b8a7 --- /dev/null +++ b/src/glsl/builtins/110/lessThanEqual @@ -0,0 +1,61 @@ +((function lessThanEqual +   (signature bvec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec2 +     (parameters +       (declare (in) ivec2 arg0) +       (declare (in) ivec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) ivec3 arg0) +       (declare (in) ivec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) ivec4 arg0) +       (declare (in) ivec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/110/log b/src/glsl/builtins/110/log new file mode 100644 index 0000000000..d168abb5a7 --- /dev/null +++ b/src/glsl/builtins/110/log @@ -0,0 +1,21 @@ +((function log +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float log (var_ref arg0))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 log (var_ref arg0))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 log (var_ref arg0))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 log (var_ref arg0))))) +)) diff --git a/src/glsl/builtins/110/log2 b/src/glsl/builtins/110/log2 new file mode 100644 index 0000000000..b96c6276f0 --- /dev/null +++ b/src/glsl/builtins/110/log2 @@ -0,0 +1,21 @@ +((function log2 +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float log2 (var_ref arg0))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 log2 (var_ref arg0))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 log2 (var_ref arg0))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 log2 (var_ref arg0))))) +)) diff --git a/src/glsl/builtins/110/matrixCompMult b/src/glsl/builtins/110/matrixCompMult new file mode 100644 index 0000000000..cb5a2cb1f7 --- /dev/null +++ b/src/glsl/builtins/110/matrixCompMult @@ -0,0 +1,32 @@ +((function matrixCompMult +   (signature mat2 +     (parameters +       (declare (in) mat2 x) +       (declare (in) mat2 y)) +     ((declare () mat2 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +(return (var_ref z)))) + +   (signature mat3 +     (parameters +       (declare (in) mat3 x) +       (declare (in) mat3 y)) +     ((declare () mat3 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec3 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +(return (var_ref z)))) + +   (signature mat4 +     (parameters +       (declare (in) mat4 x) +       (declare (in) mat4 y)) +     ((declare () mat4 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec4 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3)))  (expression vec4 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3)))))  +(return (var_ref z)))) +)) + diff --git a/src/glsl/builtins/110/max b/src/glsl/builtins/110/max new file mode 100644 index 0000000000..c05545f3d9 --- /dev/null +++ b/src/glsl/builtins/110/max @@ -0,0 +1,64 @@ +((function max +   (signature float +     (parameters +       (declare (in) float arg0) +       (declare (in) float arg1)) +     ((return (expression float max (var_ref arg0) (var_ref arg1))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((return (expression vec2 max (var_ref arg0) (var_ref arg1))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((return (expression vec3 max (var_ref arg0) (var_ref arg1))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((return (expression vec4 max (var_ref arg0) (var_ref arg1))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2  arg0) +       (declare (in) float arg1)) +     ((declare () vec2 result) +      (assign (constant bool (1))   (swiz x (var_ref result)) +              (expression float max (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz y (var_ref result)) +              (expression float max (swiz y (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature vec3 +     (parameters +       (declare (in) vec3  arg0) +       (declare (in) float arg1)) +     ((declare () vec3 result) +      (assign (constant bool (1))   (swiz x (var_ref result)) +              (expression float max (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz y (var_ref result)) +              (expression float max (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz z (var_ref result)) +              (expression float max (swiz z (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature vec4 +     (parameters +       (declare (in) vec4  arg0) +       (declare (in) float arg1)) +     ((declare () vec4 result) +      (assign (constant bool (1))   (swiz x (var_ref result)) +              (expression float max (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz y (var_ref result)) +              (expression float max (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz z (var_ref result)) +              (expression float max (swiz z (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz w (var_ref result)) +              (expression float max (swiz w (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) +)) diff --git a/src/glsl/builtins/110/min b/src/glsl/builtins/110/min new file mode 100644 index 0000000000..31e7948940 --- /dev/null +++ b/src/glsl/builtins/110/min @@ -0,0 +1,64 @@ +((function min +   (signature float +     (parameters +       (declare (in) float arg0) +       (declare (in) float arg1)) +     ((return (expression float min (var_ref arg0) (var_ref arg1))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((return (expression vec2 min (var_ref arg0) (var_ref arg1))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((return (expression vec3 min (var_ref arg0) (var_ref arg1))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((return (expression vec4 min (var_ref arg0) (var_ref arg1))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2  arg0) +       (declare (in) float arg1)) +     ((declare () vec2 result) +      (assign (constant bool (1))   (swiz x (var_ref result)) +              (expression float min (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz y (var_ref result)) +              (expression float min (swiz y (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature vec3 +     (parameters +       (declare (in) vec3  arg0) +       (declare (in) float arg1)) +     ((declare () vec3 result) +      (assign (constant bool (1))   (swiz x (var_ref result)) +              (expression float min (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz y (var_ref result)) +              (expression float min (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz z (var_ref result)) +              (expression float min (swiz z (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature vec4 +     (parameters +       (declare (in) vec4  arg0) +       (declare (in) float arg1)) +     ((declare () vec4 result) +      (assign (constant bool (1))   (swiz x (var_ref result)) +              (expression float min (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz y (var_ref result)) +              (expression float min (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz z (var_ref result)) +              (expression float min (swiz z (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1))   (swiz w (var_ref result)) +              (expression float min (swiz w (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) +)) diff --git a/src/glsl/builtins/110/mix b/src/glsl/builtins/110/mix new file mode 100644 index 0000000000..032f29e5fa --- /dev/null +++ b/src/glsl/builtins/110/mix @@ -0,0 +1,50 @@ +((function mix +   (signature float +     (parameters +       (declare (in) float arg0) +       (declare (in) float arg1) +       (declare (in) float arg2)) +     ((return (expression float + (expression float * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression float * (var_ref arg1) (var_ref arg2)))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1) +       (declare (in) vec2 arg2)) +     ((return (expression vec2 + (expression vec2 * (var_ref arg0) (expression vec2 - (constant float (1.000000)) (var_ref arg2))) (expression vec2 * (var_ref arg1) (var_ref arg2)))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1) +       (declare (in) vec3 arg2)) +     ((return (expression vec3 + (expression vec3 * (var_ref arg0) (expression vec3 - (constant float (1.000000)) (var_ref arg2))) (expression vec3 * (var_ref arg1) (var_ref arg2)))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1) +       (declare (in) vec4 arg2)) +     ((return (expression vec4 + (expression vec4 * (var_ref arg0) (expression vec4 - (constant float (1.000000)) (var_ref arg2))) (expression vec4 * (var_ref arg1) (var_ref arg2)))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1) +       (declare (in) float arg2)) +     ((return (expression vec2 + (expression vec2 * (var_ref arg0) (expression vec2 - (constant float (1.000000)) (var_ref arg2))) (expression vec2 * (var_ref arg1) (var_ref arg2)))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1) +       (declare (in) float arg2)) +     ((return (expression vec3 + (expression vec3 * (var_ref arg0) (expression vec3 - (constant float (1.000000)) (var_ref arg2))) (expression vec3 * (var_ref arg1) (var_ref arg2)))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1) +       (declare (in) float arg2)) +     ((return (expression vec4 + (expression vec4 * (var_ref arg0) (expression vec4 - (constant float (1.000000)) (var_ref arg2))) (expression vec4 * (var_ref arg1) (var_ref arg2)))))) +)) diff --git a/src/glsl/builtins/110/mod b/src/glsl/builtins/110/mod new file mode 100644 index 0000000000..9e08bbc7ef --- /dev/null +++ b/src/glsl/builtins/110/mod @@ -0,0 +1,64 @@ +((function mod +   (signature float +     (parameters +       (declare (in) float arg0) +       (declare (in) float arg1)) +     ((return (expression float % (var_ref arg0) (var_ref arg1))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((return (expression vec2 % (var_ref arg0) (var_ref arg1))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((return (expression vec3 % (var_ref arg0) (var_ref arg1))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((return (expression vec4 % (var_ref arg0) (var_ref arg1))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2  arg0) +       (declare (in) float arg1)) +     ((declare () vec2 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression float % (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression float % (swiz y (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature vec3 +     (parameters +       (declare (in) vec3  arg0) +       (declare (in) float arg1)) +     ((declare () vec3 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression float % (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression float % (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) +              (expression float % (swiz z (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature vec4 +     (parameters +       (declare (in) vec4  arg0) +       (declare (in) float arg1)) +     ((declare () vec4 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression float % (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression float % (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) +              (expression float % (swiz z (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz w (var_ref result)) +              (expression float % (swiz w (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) +)) diff --git a/src/glsl/builtins/110/noise_fake b/src/glsl/builtins/110/noise_fake new file mode 100644 index 0000000000..bcfb17b04b --- /dev/null +++ b/src/glsl/builtins/110/noise_fake @@ -0,0 +1,76 @@ +((function noise1 +   (signature float +     (parameters +       (declare (in) float x)) +     ((return (constant float (0))))) +   (signature float +     (parameters +       (declare (in) vec2 x)) +     ((return (constant float (0))))) +   (signature float +     (parameters +       (declare (in) vec3 x)) +     ((return (constant float (0))))) +   (signature float +     (parameters +       (declare (in) vec4 x)) +     ((return (constant float (0))))) + ) + + (function noise2 +   (signature vec2 +     (parameters +       (declare (in) float x)) +     ((return (constant vec2 (0 0))))) +   (signature vec2 +     (parameters +       (declare (in) vec2 x)) +     ((return (constant vec2 (0 0))))) +   (signature vec2 +     (parameters +       (declare (in) vec3 x)) +     ((return (constant vec2 (0 0))))) +   (signature vec2 +     (parameters +       (declare (in) vec4 x)) +     ((return (constant vec2 (0 0))))) + ) + + (function noise3 +   (signature vec3 +     (parameters +       (declare (in) float x)) +     ((return (constant vec3 (0 0 0))))) +   (signature vec3 +     (parameters +       (declare (in) vec2 x)) +     ((return (constant vec3 (0 0 0))))) +   (signature vec3 +     (parameters +       (declare (in) vec3 x)) +     ((return (constant vec3 (0 0 0))))) +   (signature vec3 +     (parameters +       (declare (in) vec4 x)) +     ((return (constant vec3 (0 0 0))))) + ) + + (function noise4 +   (signature vec4 +     (parameters +       (declare (in) float x)) +     ((return (constant vec4 (0 0 0 0))))) +   (signature vec4 +     (parameters +       (declare (in) vec2 x)) +     ((return (constant vec4 (0 0 0 0))))) +   (signature vec4 +     (parameters +       (declare (in) vec3 x)) +     ((return (constant vec4 (0 0 0 0))))) +   (signature vec4 +     (parameters +       (declare (in) vec4 x)) +     ((return (constant vec4 (0 0 0 0))))) + ) +) diff --git a/src/glsl/builtins/110/normalize b/src/glsl/builtins/110/normalize new file mode 100644 index 0000000000..be88a9830d --- /dev/null +++ b/src/glsl/builtins/110/normalize @@ -0,0 +1,21 @@ +((function normalize +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0))))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0))))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0))))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0))))))) +)) diff --git a/src/glsl/builtins/110/not b/src/glsl/builtins/110/not new file mode 100644 index 0000000000..b696b06557 --- /dev/null +++ b/src/glsl/builtins/110/not @@ -0,0 +1,16 @@ +((function not +   (signature bvec2 +     (parameters +       (declare (in) bvec2 arg0)) +     ((return (expression bvec2 ! (var_ref arg0))))) + +   (signature bvec3 +     (parameters +       (declare (in) bvec3 arg0)) +     ((return (expression bvec3 ! (var_ref arg0))))) + +   (signature bvec4 +     (parameters +       (declare (in) bvec4 arg0)) +     ((return (expression bvec4 ! (var_ref arg0))))) +)) diff --git a/src/glsl/builtins/110/notEqual b/src/glsl/builtins/110/notEqual new file mode 100644 index 0000000000..c87efa317f --- /dev/null +++ b/src/glsl/builtins/110/notEqual @@ -0,0 +1,61 @@ +((function notEqual +   (signature bvec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression float != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression float != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression float != (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec2 +     (parameters +       (declare (in) ivec2 arg0) +       (declare (in) ivec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) ivec3 arg0) +       (declare (in) ivec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression int != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) ivec4 arg0) +       (declare (in) ivec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression int != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression int != (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/110/pow b/src/glsl/builtins/110/pow new file mode 100644 index 0000000000..a61bc4418e --- /dev/null +++ b/src/glsl/builtins/110/pow @@ -0,0 +1,25 @@ +((function pow +   (signature float +     (parameters +       (declare (in) float arg0) +       (declare (in) float arg1)) +     ((return (expression float pow (var_ref arg0) (var_ref arg1))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0) +       (declare (in) vec2 arg1)) +     ((return (expression vec2 pow (var_ref arg0) (var_ref arg1))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0) +       (declare (in) vec3 arg1)) +     ((return (expression vec3 pow (var_ref arg0) (var_ref arg1))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0) +       (declare (in) vec4 arg1)) +     ((return (expression vec4 pow (var_ref arg0) (var_ref arg1))))) +)) diff --git a/src/glsl/builtins/110/radians b/src/glsl/builtins/110/radians new file mode 100644 index 0000000000..6a0f5d2e21 --- /dev/null +++ b/src/glsl/builtins/110/radians @@ -0,0 +1,21 @@ +((function radians +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float * (var_ref arg0) (constant float (0.017453)))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 * (var_ref arg0) (constant float (0.017453)))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 * (var_ref arg0) (constant float (0.017453)))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 * (var_ref arg0) (constant float (0.017453)))))) +)) diff --git a/src/glsl/builtins/110/reflect b/src/glsl/builtins/110/reflect new file mode 100644 index 0000000000..8238fdc93f --- /dev/null +++ b/src/glsl/builtins/110/reflect @@ -0,0 +1,58 @@ +((function reflect +   (signature float +     (parameters +       (declare (in) float i) +       (declare (in) float n)) +     ((return (expression float - +	       (var_ref i) +	       (expression float * +		(constant float (2.0)) +		(expression float * +		 (expression float dot +		  (var_ref n) +		  (var_ref i)) +		 (var_ref n))))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 i) +       (declare (in) vec2 n)) +     ((return (expression vec2 - +	       (var_ref i) +	       (expression vec2 * +		(constant float (2.0)) +		(expression vec2 * +		 (expression float dot +		  (var_ref n) +		  (var_ref i)) +		 (var_ref n))))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 i) +       (declare (in) vec3 n)) +     ((return (expression vec3 - +	       (var_ref i) +	       (expression vec3 * +		(constant float (2.0)) +		(expression vec3 * +		 (expression float dot +		  (var_ref n) +		  (var_ref i)) +		 (var_ref n))))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 i) +       (declare (in) vec4 n)) +     ((return (expression vec4 - +	       (var_ref i) +	       (expression vec4 * +		(constant float (2.0)) +		(expression vec4 * +		 (expression float dot +		  (var_ref n) +		  (var_ref i)) +		 (var_ref n))))))) + +)) diff --git a/src/glsl/builtins/110/refract b/src/glsl/builtins/110/refract new file mode 100644 index 0000000000..e9b1475294 --- /dev/null +++ b/src/glsl/builtins/110/refract @@ -0,0 +1,102 @@ +((function refract +   (signature float +     (parameters +       (declare (in) float i) +       (declare (in) float n) +       (declare (in) float eta)) +     ((declare () float k) +      (assign (constant bool (1)) (var_ref k) +              (expression float - (constant float (1.0)) +	        (expression float * (var_ref eta) +	          (expression float * (var_ref eta) +		    (expression float - (constant float (1.0)) +		      (expression float *  +		        (expression float dot (var_ref n) (var_ref i)) +		        (expression float dot (var_ref n) (var_ref i)))))))) +      (if (expression bool < (var_ref k) (constant float (0.0))) +          ((return (constant float (0.0)))) +	  ((return (expression float - +	             (expression float * (var_ref eta) (var_ref i)) +		     (expression float * +		       (expression float + +		         (expression float * (var_ref eta) +			   (expression float dot (var_ref n) (var_ref i))) +		         (expression float sqrt (var_ref k))) +		       (var_ref n)))))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 i) +       (declare (in) vec2 n) +       (declare (in) float eta)) +     ((declare () float k) +      (assign (constant bool (1)) (var_ref k) +              (expression float - (constant float (1.0)) +	        (expression float * (var_ref eta) +	          (expression float * (var_ref eta) +		    (expression float - (constant float (1.0)) +		      (expression float *  +		        (expression float dot (var_ref n) (var_ref i)) +		        (expression float dot (var_ref n) (var_ref i)))))))) +      (if (expression bool < (var_ref k) (constant float (0.0))) +          ((return (constant vec2 (0.0 0.0)))) +	  ((return (expression vec2 - +	             (expression vec2 * (var_ref eta) (var_ref i)) +		     (expression vec2 * +		       (expression float + +		         (expression float * (var_ref eta) +			   (expression float dot (var_ref n) (var_ref i))) +		         (expression float sqrt (var_ref k))) +		       (var_ref n)))))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 i) +       (declare (in) vec3 n) +       (declare (in) float eta)) +     ((declare () float k) +      (assign (constant bool (1)) (var_ref k) +              (expression float - (constant float (1.0)) +	        (expression float * (var_ref eta) +	          (expression float * (var_ref eta) +		    (expression float - (constant float (1.0)) +		      (expression float *  +		        (expression float dot (var_ref n) (var_ref i)) +		        (expression float dot (var_ref n) (var_ref i)))))))) +      (if (expression bool < (var_ref k) (constant float (0.0))) +          ((return (constant vec3 (0.0 0.0)))) +	  ((return (expression vec3 - +	             (expression vec3 * (var_ref eta) (var_ref i)) +		     (expression vec3 * +		       (expression float + +		         (expression float * (var_ref eta) +			   (expression float dot (var_ref n) (var_ref i))) +		         (expression float sqrt (var_ref k))) +		       (var_ref n)))))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 i) +       (declare (in) vec4 n) +       (declare (in) float eta)) +     ((declare () float k) +      (assign (constant bool (1)) (var_ref k) +              (expression float - (constant float (1.0)) +	        (expression float * (var_ref eta) +	          (expression float * (var_ref eta) +		    (expression float - (constant float (1.0)) +		      (expression float *  +		        (expression float dot (var_ref n) (var_ref i)) +		        (expression float dot (var_ref n) (var_ref i)))))))) +      (if (expression bool < (var_ref k) (constant float (0.0))) +          ((return (constant vec4 (0.0 0.0)))) +	  ((return (expression vec4 - +	             (expression vec4 * (var_ref eta) (var_ref i)) +		     (expression vec4 * +		       (expression float + +		         (expression float * (var_ref eta) +			   (expression float dot (var_ref n) (var_ref i))) +		         (expression float sqrt (var_ref k))) +		       (var_ref n)))))))) + +)) diff --git a/src/glsl/builtins/110/sign b/src/glsl/builtins/110/sign new file mode 100644 index 0000000000..7d540de405 --- /dev/null +++ b/src/glsl/builtins/110/sign @@ -0,0 +1,34 @@ +((function sign +   (signature float +     (parameters +       (declare (in) float x)) +     ((return (expression float sign (var_ref x))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 x)) +     ((declare () vec2 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x)))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x)))) +      (return (var_ref t)))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 x)) +     ((declare () vec3 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x)))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x)))) +      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float sign (swiz z (var_ref x)))) +      (return (var_ref t)))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 x)) +     ((declare () vec4 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x)))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x)))) +      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float sign (swiz z (var_ref x)))) +      (assign (constant bool (1)) (swiz w (var_ref t)) (expression float sign (swiz w (var_ref x)))) +      (return (var_ref t)))) +)) + diff --git a/src/glsl/builtins/110/sin b/src/glsl/builtins/110/sin new file mode 100644 index 0000000000..e6009d8ef1 --- /dev/null +++ b/src/glsl/builtins/110/sin @@ -0,0 +1,21 @@ +((function sin +   (signature float +     (parameters +       (declare (in) float angle)) +     ((return (expression float sin (var_ref angle))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 angle)) +     ((return (expression vec2 sin (var_ref angle))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 angle)) +     ((return (expression vec3 sin (var_ref angle))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 angle)) +     ((return (expression vec4 sin (var_ref angle))))) +)) diff --git a/src/glsl/builtins/110/smoothstep b/src/glsl/builtins/110/smoothstep new file mode 100644 index 0000000000..b4255ba78f --- /dev/null +++ b/src/glsl/builtins/110/smoothstep @@ -0,0 +1,224 @@ +((function smoothstep +   (signature float +     (parameters +       (declare (in) float edge0) +       (declare (in) float edge1) +       (declare (in) float x)) +     ((declare () float t) + +      (assign (constant bool (1)) (var_ref t) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (var_ref x) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (return (expression float * (var_ref t) (expression float * (var_ref t) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (var_ref t)))))))) + +   (signature vec2 +     (parameters +       (declare (in) float edge0) +       (declare (in) float edge1) +       (declare (in) vec2 x)) +     ((declare () vec2 t) +      (declare () vec2 retval) + +      (assign (constant bool (1)) (swiz x (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t))))))) + +      (assign (constant bool (1)) (swiz y (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t))))))) +      (return (var_ref retval)) +      )) + +   (signature vec3 +     (parameters +       (declare (in) float edge0) +       (declare (in) float edge1) +       (declare (in) vec3 x)) +     ((declare () vec3 t) +      (declare () vec3 retval) + +      (assign (constant bool (1)) (swiz x (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t))))))) + +      (assign (constant bool (1)) (swiz y (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t))))))) + +      (assign (constant bool (1)) (swiz z (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz z (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz z (var_ref retval)) (expression float * (swiz z (var_ref t)) (expression float * (swiz z (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz z (var_ref t))))))) +      (return (var_ref retval)) +      )) + + +   (signature vec4 +     (parameters +       (declare (in) float edge0) +       (declare (in) float edge1) +       (declare (in) vec4 x)) +     ((declare () vec4 t) +      (declare () vec4 retval) + +      (assign (constant bool (1)) (swiz x (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t))))))) + +      (assign (constant bool (1)) (swiz y (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t))))))) + +      (assign (constant bool (1)) (swiz z (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz z (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz z (var_ref retval)) (expression float * (swiz z (var_ref t)) (expression float * (swiz z (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz z (var_ref t))))))) + +      (assign (constant bool (1)) (swiz w (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz w (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz w (var_ref retval)) (expression float * (swiz w (var_ref t)) (expression float * (swiz w (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz w (var_ref t))))))) +      (return (var_ref retval)) +      )) + +   (signature vec2 +     (parameters +       (declare (in) vec2 edge0) +       (declare (in) vec2 edge1) +       (declare (in) vec2 x)) +     ((declare () vec2 t) +      (declare () vec2 retval) + +      (assign (constant bool (1)) (swiz x (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz x (var_ref x)) (swiz x (var_ref edge0))) (expression float - (swiz x (var_ref edge1)) (swiz x (var_ref edge0)))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t))))))) + +      (assign (constant bool (1)) (swiz y (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz y (var_ref x)) (swiz y (var_ref edge0))) (expression float - (swiz y (var_ref edge1)) (swiz y (var_ref edge0)))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t))))))) +      (return (var_ref retval)) +      )) + +   (signature vec3 +     (parameters +       (declare (in) vec3 edge0) +       (declare (in) vec3 edge1) +       (declare (in) vec3 x)) +     ((declare () vec3 t) +      (declare () vec3 retval) + +      (assign (constant bool (1)) (swiz x (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz x (var_ref x)) (swiz x (var_ref edge0))) (expression float - (swiz x (var_ref edge1)) (swiz x (var_ref edge0)))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t))))))) + +      (assign (constant bool (1)) (swiz y (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz y (var_ref x)) (swiz y (var_ref edge0))) (expression float - (swiz y (var_ref edge1)) (swiz y (var_ref edge0)))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t))))))) + +      (assign (constant bool (1)) (swiz z (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz z (var_ref x)) (swiz z (var_ref edge0))) (expression float - (swiz z (var_ref edge1)) (swiz z (var_ref edge0)))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz z (var_ref retval)) (expression float * (swiz z (var_ref t)) (expression float * (swiz z (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz z (var_ref t))))))) +      (return (var_ref retval)) +      )) + + +   (signature vec4 +     (parameters +       (declare (in) vec4 edge0) +       (declare (in) vec4 edge1) +       (declare (in) vec4 x)) +     ((declare () vec4 t) +      (declare () vec4 retval) + +      (assign (constant bool (1)) (swiz x (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz x (var_ref x)) (swiz x (var_ref edge0))) (expression float - (swiz x (var_ref edge1)) (swiz x (var_ref edge0)))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t))))))) + +      (assign (constant bool (1)) (swiz y (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz y (var_ref x)) (swiz y (var_ref edge0))) (expression float - (swiz y (var_ref edge1)) (swiz y (var_ref edge0)))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t))))))) + +      (assign (constant bool (1)) (swiz z (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz z (var_ref x)) (swiz z (var_ref edge0))) (expression float - (swiz z (var_ref edge1)) (swiz z (var_ref edge0)))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz z (var_ref retval)) (expression float * (swiz z (var_ref t)) (expression float * (swiz z (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz z (var_ref t))))))) + +      (assign (constant bool (1)) (swiz w (var_ref t)) +              (expression float max +	                  (expression float min +	                              (expression float / (expression float - (swiz w (var_ref x)) (swiz w (var_ref edge0))) (expression float - (swiz w (var_ref edge1)) (swiz w (var_ref edge0)))) +	                              (constant float (1.0))) +	                  (constant float (0.0)))) +      (assign (constant bool (1)) (swiz w (var_ref retval)) (expression float * (swiz w (var_ref t)) (expression float * (swiz w (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz w (var_ref t))))))) +      (return (var_ref retval)) +      )) + +)) + diff --git a/src/glsl/builtins/110/sqrt b/src/glsl/builtins/110/sqrt new file mode 100644 index 0000000000..0302d164ae --- /dev/null +++ b/src/glsl/builtins/110/sqrt @@ -0,0 +1,21 @@ +((function sqrt +   (signature float +     (parameters +       (declare (in) float arg0)) +     ((return (expression float sqrt (var_ref arg0))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 arg0)) +     ((return (expression vec2 sqrt (var_ref arg0))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 arg0)) +     ((return (expression vec3 sqrt (var_ref arg0))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 arg0)) +     ((return (expression vec4 sqrt (var_ref arg0))))) +)) diff --git a/src/glsl/builtins/110/step b/src/glsl/builtins/110/step new file mode 100644 index 0000000000..1cc2b51f8f --- /dev/null +++ b/src/glsl/builtins/110/step @@ -0,0 +1,68 @@ +((function step +   (signature float +     (parameters +       (declare (in) float edge) +       (declare (in) float x)) +     ((return (expression float b2f (expression bool < (var_ref x) (var_ref edge)))))) + +   (signature vec2 +     (parameters +       (declare (in) float edge) +       (declare (in) vec2 x)) +     ((declare () vec2 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge)))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge)))) +      (return (var_ref t)))) + +   (signature vec3 +     (parameters +       (declare (in) float edge) +       (declare (in) vec3 x)) +     ((declare () vec3 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge)))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge)))) +      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz z (var_ref x))(var_ref edge)))) +      (return (var_ref t)))) + +   (signature vec4 +     (parameters +       (declare (in) float edge) +       (declare (in) vec4 x)) +     ((declare () vec4 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge)))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge)))) +      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz z (var_ref x))(var_ref edge)))) +      (assign (constant bool (1)) (swiz w (var_ref t)) (expression float b2f (expression bool < (swiz w (var_ref x))(var_ref edge)))) +      (return (var_ref t)))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 edge) +       (declare (in) vec2 x)) +     ((declare () vec2 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(swiz x (var_ref edge))))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(swiz y (var_ref edge))))) +      (return (var_ref t)))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 edge) +       (declare (in) vec3 x)) +     ((declare () vec3 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(swiz x (var_ref edge))))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(swiz y (var_ref edge))))) +      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz z (var_ref x))(swiz z (var_ref edge))))) +      (return (var_ref t)))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 edge) +       (declare (in) vec4 x)) +     ((declare () vec4 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(swiz x (var_ref edge))))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(swiz y (var_ref edge))))) +      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(swiz z (var_ref edge))))) +      (assign (constant bool (1)) (swiz w (var_ref t)) (expression float b2f (expression bool < (swiz w (var_ref x))(swiz w (var_ref edge))))) +      (return (var_ref t)))) +)) + diff --git a/src/glsl/builtins/110/tan b/src/glsl/builtins/110/tan new file mode 100644 index 0000000000..3e04892a76 --- /dev/null +++ b/src/glsl/builtins/110/tan @@ -0,0 +1,21 @@ +((function tan +   (signature float +     (parameters +       (declare (in) float angle)) +     ((return (expression float / (expression float sin (var_ref angle)) (expression float cos (var_ref angle)))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 angle)) +     ((return (expression float / (expression float sin (var_ref angle)) (expression vec2 cos (var_ref angle)))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 angle)) +     ((return (expression float / (expression float sin (var_ref angle)) (expression vec3 cos (var_ref angle)))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 angle)) +     ((return (expression float / (expression float sin (var_ref angle)) (expression vec4 cos (var_ref angle)))))) +)) diff --git a/src/glsl/builtins/110/textures b/src/glsl/builtins/110/textures new file mode 100644 index 0000000000..c81b7e8ad4 --- /dev/null +++ b/src/glsl/builtins/110/textures @@ -0,0 +1,213 @@ +((function texture1D +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) float P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +) + (function texture1DLod +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) float P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +) + (function texture1DProj +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +) + (function texture1DProjLod +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +) + (function texture2D +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +) +(function texture2DLod +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +) + (function texture2DProj +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +) + (function texture2DProjLod +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +) + (function texture3D +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +) + (function texture3DLod +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +) + (function texture3DProj +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +) + (function texture3DProjLod +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +) + (function textureCube +   (signature vec4 +     (parameters +       (declare (in) samplerCube sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +) + (function textureCubeLod +   (signature vec4 +     (parameters +       (declare (in) samplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +) + (function shadow1D +   (signature vec4 +     (parameters +       (declare (in) sampler1DShadow sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) )))) + +) + (function shadow1DLod +   (signature vec4 +     (parameters +       (declare (in) sampler1DShadow sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) )))) + +) + (function shadow1DProj +   (signature vec4 +     (parameters +       (declare (in) sampler1DShadow sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) )))) + +) + (function shadow1DProjLod +   (signature vec4 +     (parameters +       (declare (in) sampler1DShadow sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref lod) )))) + +) + (function shadow2D +   (signature vec4 +     (parameters +       (declare (in) sampler2DShadow sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) )))) + +) + (function shadow2DLod +   (signature vec4 +     (parameters +       (declare (in) sampler2DShadow sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) )))) + +) + (function shadow2DProj +   (signature vec4 +     (parameters +       (declare (in) sampler2DShadow sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) )))) + +) + (function shadow2DProjLod +   (signature vec4 +     (parameters +       (declare (in) sampler2DShadow sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref lod) )))) + +)) diff --git a/src/glsl/builtins/110_fs/derivatives b/src/glsl/builtins/110_fs/derivatives new file mode 100644 index 0000000000..b79852ee1f --- /dev/null +++ b/src/glsl/builtins/110_fs/derivatives @@ -0,0 +1,73 @@ +((function dFdx +   (signature float +     (parameters +       (declare (in) float p)) +     ((return (expression float dFdx (var_ref p))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 p)) +     ((return (expression vec2 dFdx (var_ref p))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 p)) +     ((return (expression vec3 dFdx (var_ref p))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 p)) +     ((return (expression vec4 dFdx (var_ref p))))) + ) + + (function dFdy +   (signature float +     (parameters +       (declare (in) float p)) +     ((return (expression float dFdy (var_ref p))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 p)) +     ((return (expression vec2 dFdy (var_ref p))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 p)) +     ((return (expression vec3 dFdy (var_ref p))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 p)) +     ((return (expression vec4 dFdy (var_ref p))))) + ) + + (function fwidth +   (signature float +     (parameters +       (declare (in) float p)) +     ((return (expression float + +                (expression float abs (expression float dFdx (var_ref p))) +                (expression float abs (expression float dFdy (var_ref p))))))) + +   (signature vec2 +     (parameters +       (declare (in) vec2 p)) +     ((return (expression vec2 + +                (expression vec2 abs (expression vec2 dFdx (var_ref p))) +                (expression vec2 abs (expression vec2 dFdy (var_ref p))))))) + +   (signature vec3 +     (parameters +       (declare (in) vec3 p)) +     ((return (expression vec3 + +                (expression vec3 abs (expression vec3 dFdx (var_ref p))) +                (expression vec3 abs (expression vec3 dFdy (var_ref p))))))) + +   (signature vec4 +     (parameters +       (declare (in) vec4 p)) +     ((return (expression vec4 + +                (expression vec4 abs (expression vec4 dFdx (var_ref p))) +                (expression vec4 abs (expression vec4 dFdy (var_ref p))))))) +)) diff --git a/src/glsl/builtins/110_fs/textures b/src/glsl/builtins/110_fs/textures new file mode 100644 index 0000000000..38f3787e9e --- /dev/null +++ b/src/glsl/builtins/110_fs/textures @@ -0,0 +1,113 @@ +((function texture1D +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) float P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +) + (function texture1DProj +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +) + (function texture2D +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +) + (function texture2DProj +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +) + (function texture3D +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +) + (function texture3DProj +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +) + (function textureCube +   (signature vec4 +     (parameters +       (declare (in) samplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +) + (function shadow1D +   (signature vec4 +     (parameters +       (declare (in) sampler1DShadow sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) )))) + +) + (function shadow1DProj +   (signature vec4 +     (parameters +       (declare (in) sampler1DShadow sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref bias) )))) + +) + (function shadow2D +   (signature vec4 +     (parameters +       (declare (in) sampler2DShadow sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) )))) + +) + (function shadow2DProj +   (signature vec4 +     (parameters +       (declare (in) sampler2DShadow sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref bias) )))) + +)) diff --git a/src/glsl/builtins/110_vs/ftransform b/src/glsl/builtins/110_vs/ftransform new file mode 100644 index 0000000000..3a5e8ccecf --- /dev/null +++ b/src/glsl/builtins/110_vs/ftransform @@ -0,0 +1,7 @@ +((function ftransform +   (signature vec4 +     (parameters) +    ((return (expression vec4 * +	      (var_ref gl_ModelViewProjectionMatrix) +	      (var_ref gl_Vertex))))) +)) diff --git a/src/glsl/builtins/120/matrixCompMult b/src/glsl/builtins/120/matrixCompMult new file mode 100644 index 0000000000..69331e2652 --- /dev/null +++ b/src/glsl/builtins/120/matrixCompMult @@ -0,0 +1,61 @@ +((function matrixCompMult +   (signature mat2x3 +     (parameters +       (declare (in) mat2x3 x) +       (declare (in) mat2x3 y)) +     ((declare () mat2x3 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +(return (var_ref z)))) + +   (signature mat3x2 +     (parameters +       (declare (in) mat3x2 x) +       (declare (in) mat3x2 y)) +     ((declare () mat3x2 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec2 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +(return (var_ref z)))) + +   (signature mat2x4 +     (parameters +       (declare (in) mat2x4 x) +       (declare (in) mat2x4 y)) +     ((declare () mat2x4 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +(return (var_ref z)))) + +   (signature mat4x2 +     (parameters +       (declare (in) mat4x2 x) +       (declare (in) mat4x2 y)) +     ((declare () mat4x2 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec2 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3)))  (expression vec2 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3)))))  +(return (var_ref z)))) + +   (signature mat3x4 +     (parameters +       (declare (in) mat3x4 x) +       (declare (in) mat3x4 y)) +     ((declare () mat3x4 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec4 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +(return (var_ref z)))) + +   (signature mat4x3 +     (parameters +       (declare (in) mat4x3 x) +       (declare (in) mat4x3 y)) +     ((declare () mat4x3 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec3 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3)))  (expression vec3 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3)))))  +(return (var_ref z)))) +)) diff --git a/src/glsl/builtins/120/outerProduct b/src/glsl/builtins/120/outerProduct new file mode 100644 index 0000000000..b401ba0233 --- /dev/null +++ b/src/glsl/builtins/120/outerProduct @@ -0,0 +1,92 @@ +((function outerProduct +   (signature mat2 +     (parameters +       (declare (in) vec2 u) +       (declare (in) vec2 v)) +     ((declare () mat2 m) +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0)))  (expression vec2 * (var_ref v) (swiz x (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1)))  (expression vec2 * (var_ref v) (swiz y (var_ref u))))  +(return (var_ref m)))) + +   (signature mat2x3 +     (parameters +       (declare (in) vec2 u) +       (declare (in) vec3 v)) +     ((declare () mat2x3 m) +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0)))  (expression vec3 * (var_ref v) (swiz x (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1)))  (expression vec3 * (var_ref v) (swiz y (var_ref u))))  +(return (var_ref m)))) + +   (signature mat2x4 +     (parameters +       (declare (in) vec2 u) +       (declare (in) vec4 v)) +     ((declare () mat2x4 m) +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0)))  (expression vec4 * (var_ref v) (swiz x (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1)))  (expression vec4 * (var_ref v) (swiz y (var_ref u))))  +(return (var_ref m)))) + +   (signature mat3x2 +     (parameters +       (declare (in) vec3 u) +       (declare (in) vec2 v)) +     ((declare () mat3x2 m) +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0)))  (expression vec2 * (var_ref v) (swiz x (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1)))  (expression vec2 * (var_ref v) (swiz y (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2)))  (expression vec2 * (var_ref v) (swiz z (var_ref u))))  +(return (var_ref m)))) + +   (signature mat3 +     (parameters +       (declare (in) vec3 u) +       (declare (in) vec3 v)) +     ((declare () mat3 m) +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0)))  (expression vec3 * (var_ref v) (swiz x (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1)))  (expression vec3 * (var_ref v) (swiz y (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2)))  (expression vec3 * (var_ref v) (swiz z (var_ref u))))  +(return (var_ref m)))) + +   (signature mat3x4 +     (parameters +       (declare (in) vec3 u) +       (declare (in) vec4 v)) +     ((declare () mat3x4 m) +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0)))  (expression vec4 * (var_ref v) (swiz x (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1)))  (expression vec4 * (var_ref v) (swiz y (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2)))  (expression vec4 * (var_ref v) (swiz z (var_ref u))))  +(return (var_ref m)))) + +   (signature mat4x2 +     (parameters +       (declare (in) vec4 u) +       (declare (in) vec2 v)) +     ((declare () mat4x2 m) +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0)))  (expression vec2 * (var_ref v) (swiz x (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1)))  (expression vec2 * (var_ref v) (swiz y (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2)))  (expression vec2 * (var_ref v) (swiz z (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (3)))  (expression vec2 * (var_ref v) (swiz w (var_ref u))))  +(return (var_ref m)))) + +   (signature mat4x3 +     (parameters +       (declare (in) vec4 u) +       (declare (in) vec3 v)) +     ((declare () mat4x3 m) +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0)))  (expression vec3 * (var_ref v) (swiz x (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1)))  (expression vec3 * (var_ref v) (swiz y (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2)))  (expression vec3 * (var_ref v) (swiz z (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (3)))  (expression vec3 * (var_ref v) (swiz w (var_ref u))))  +(return (var_ref m)))) + +   (signature mat4 +     (parameters +       (declare (in) vec4 u) +       (declare (in) vec4 v)) +     ((declare () mat4 m) +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0)))  (expression vec4 * (var_ref v) (swiz x (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1)))  (expression vec4 * (var_ref v) (swiz y (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2)))  (expression vec4 * (var_ref v) (swiz z (var_ref u))))  +      (assign (constant bool (1)) (array_ref (var_ref m) (constant int (3)))  (expression vec4 * (var_ref v) (swiz w (var_ref u))))  +(return (var_ref m)))) +)) + diff --git a/src/glsl/builtins/120/transpose b/src/glsl/builtins/120/transpose new file mode 100644 index 0000000000..416a0ee467 --- /dev/null +++ b/src/glsl/builtins/120/transpose @@ -0,0 +1,139 @@ +((function transpose +   (signature mat2 +     (parameters +       (declare (in) mat2 m)) +     ((declare () mat2 t) +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1)))))  +(return (var_ref t)))) + +   (signature mat3x2 +     (parameters +       (declare (in) mat2x3 m)) +     ((declare () mat3x2 t) +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1)))))  +(return (var_ref t)))) + +   (signature mat4x2 +     (parameters +       (declare (in) mat2x4 m)) +     ((declare () mat4x2 t) +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (1)))))  +(return (var_ref t)))) + +   (signature mat2x3 +     (parameters +       (declare (in) mat3x2 m)) +     ((declare () mat2x3 t) +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2)))))  +(return (var_ref t)))) + +   (signature mat3 +     (parameters +       (declare (in) mat3 m)) +     ((declare () mat3 t) +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (2)))))  +(return (var_ref t)))) + +   (signature mat4x3 +     (parameters +       (declare (in) mat3x4 m)) +     ((declare () mat4x3 t) +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (2)))))  +(return (var_ref t)))) + +   (signature mat2x4 +     (parameters +       (declare (in) mat4x2 m)) +     ((declare () mat2x4 t) +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (3)))))  +      (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (3)))))  +(return (var_ref t)))) + +   (signature mat3x4 +     (parameters +       (declare (in) mat4x3 m)) +     ((declare () mat3x4 t) +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (3)))))  +      (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (3)))))  +      (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (3)))))  +(return (var_ref t)))) + +   (signature mat4 +     (parameters +       (declare (in) mat4 m)) +     ((declare () mat4 t) +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (0)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (1)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (2)))))  +      (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (3)))))  +      (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (3)))))  +      (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (3)))))  +      (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (3)))))  +(return (var_ref t)))) +) + +) + diff --git a/src/glsl/builtins/130/clamp b/src/glsl/builtins/130/clamp new file mode 100644 index 0000000000..3aed22c20d --- /dev/null +++ b/src/glsl/builtins/130/clamp @@ -0,0 +1,123 @@ +((function clamp +   (signature int +     (parameters +       (declare (in) int arg0) +       (declare (in) int arg1) +       (declare (in) int arg2)) +     ((return (expression int max (expression int min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature ivec2 +     (parameters +       (declare (in) ivec2 arg0) +       (declare (in) ivec2 arg1) +       (declare (in) ivec2 arg2)) +     ((return (expression ivec2 max (expression ivec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature ivec3 +     (parameters +       (declare (in) ivec3 arg0) +       (declare (in) ivec3 arg1) +       (declare (in) ivec3 arg2)) +     ((return (expression ivec3 max (expression ivec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature ivec4 +     (parameters +       (declare (in) ivec4 arg0) +       (declare (in) ivec4 arg1) +       (declare (in) ivec4 arg2)) +     ((return (expression ivec4 max (expression ivec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature ivec2 +     (parameters +       (declare (in) ivec2 arg0) +       (declare (in) int arg1) +       (declare (in) int arg2)) +     ((declare () ivec2 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) (expression ivec4 max (expression ivec4 min (swiz x (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) (expression ivec4 max (expression ivec4 min (swiz y (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature ivec3 +     (parameters +       (declare (in) ivec3 arg0) +       (declare (in) int arg1) +       (declare (in) int arg2)) +     ((declare () ivec3 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) (expression ivec4 max (expression ivec4 min (swiz x (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) (expression ivec4 max (expression ivec4 min (swiz y (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) (expression ivec4 max (expression ivec4 min (swiz z (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature ivec4 +     (parameters +       (declare (in) ivec4 arg0) +       (declare (in) int arg1) +       (declare (in) int arg2)) +     ((declare () ivec4 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) (expression ivec4 max (expression ivec4 min (swiz x (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) (expression ivec4 max (expression ivec4 min (swiz y (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) (expression ivec4 max (expression ivec4 min (swiz z (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz w (var_ref result)) (expression ivec4 max (expression ivec4 min (swiz w (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature uint +     (parameters +       (declare (in) uint arg0) +       (declare (in) uint arg1) +       (declare (in) uint arg2)) +     ((return (expression uint max (expression uint min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature uvec2 +     (parameters +       (declare (in) uvec2 arg0) +       (declare (in) uvec2 arg1) +       (declare (in) uvec2 arg2)) +     ((return (expression uvec2 max (expression uvec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature uvec3 +     (parameters +       (declare (in) uvec3 arg0) +       (declare (in) uvec3 arg1) +       (declare (in) uvec3 arg2)) +     ((return (expression uvec3 max (expression uvec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature uvec4 +     (parameters +       (declare (in) uvec4 arg0) +       (declare (in) uvec4 arg1) +       (declare (in) uvec4 arg2)) +     ((return (expression uvec4 max (expression uvec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) + +   (signature uvec2 +     (parameters +       (declare (in) uvec2 arg0) +       (declare (in) uint arg1) +       (declare (in) uint arg2)) +     ((declare () uvec2 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) (expression uvec4 max (expression uvec4 min (swiz x (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) (expression uvec4 max (expression uvec4 min (swiz y (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature uvec3 +     (parameters +       (declare (in) uvec3 arg0) +       (declare (in) uint arg1) +       (declare (in) uint arg2)) +     ((declare () uvec3 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) (expression uvec4 max (expression uvec4 min (swiz x (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) (expression uvec4 max (expression uvec4 min (swiz y (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) (expression uvec4 max (expression uvec4 min (swiz z (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature uvec4 +     (parameters +       (declare (in) uvec4 arg0) +       (declare (in) uint arg1) +       (declare (in) uint arg2)) +     ((declare () uvec4 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) (expression uvec4 max (expression uvec4 min (swiz x (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) (expression uvec4 max (expression uvec4 min (swiz y (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) (expression uvec4 max (expression uvec4 min (swiz z (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz w (var_ref result)) (expression uvec4 max (expression uvec4 min (swiz w (var_ref arg0)) (var_ref arg2)) (var_ref arg1))) +      (return (var_ref result)))) +)) diff --git a/src/glsl/builtins/130/cosh b/src/glsl/builtins/130/cosh new file mode 100644 index 0000000000..45e0ae427d --- /dev/null +++ b/src/glsl/builtins/130/cosh @@ -0,0 +1,30 @@ +((function cosh +   (signature float +     (parameters +       (declare (in) float x)) +     ((return (expression float * (constant float (0.5)) +                (expression float + +		  (expression float exp (var_ref x)) +		  (expression float exp (expression float neg (var_ref x)))))))) +   (signature vec2 +     (parameters +       (declare (in) vec2 x)) +     ((return (expression vec2 * (constant vec2 (0.5)) +                (expression vec2 + +		  (expression vec2 exp (var_ref x)) +		  (expression vec2 exp (expression vec2 neg (var_ref x)))))))) +   (signature vec3 +     (parameters +       (declare (in) vec3 x)) +     ((return (expression vec3 * (constant vec3 (0.5)) +                (expression vec3 + +		  (expression vec3 exp (var_ref x)) +		  (expression vec3 exp (expression vec3 neg (var_ref x)))))))) +   (signature vec4 +     (parameters +       (declare (in) vec4 x)) +     ((return (expression vec4 * (constant vec4 (0.5)) +                (expression vec4 + +		  (expression vec4 exp (var_ref x)) +		  (expression vec4 exp (expression vec4 neg (var_ref x)))))))) +)) diff --git a/src/glsl/builtins/130/equal b/src/glsl/builtins/130/equal new file mode 100644 index 0000000000..079c3e97fb --- /dev/null +++ b/src/glsl/builtins/130/equal @@ -0,0 +1,31 @@ +((function equal +   (signature bvec2 +     (parameters +       (declare (in) uvec2 arg0) +       (declare (in) uvec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) uvec3 arg0) +       (declare (in) uvec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) uvec4 arg0) +       (declare (in) uvec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool == (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/130/greaterThan b/src/glsl/builtins/130/greaterThan new file mode 100644 index 0000000000..a9fb7b3a43 --- /dev/null +++ b/src/glsl/builtins/130/greaterThan @@ -0,0 +1,31 @@ +((function greaterThan +   (signature bvec2 +     (parameters +       (declare (in) uvec2 arg0) +       (declare (in) uvec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) uvec3 arg0) +       (declare (in) uvec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) uvec4 arg0) +       (declare (in) uvec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/130/greaterThanEqual b/src/glsl/builtins/130/greaterThanEqual new file mode 100644 index 0000000000..293c93c7cc --- /dev/null +++ b/src/glsl/builtins/130/greaterThanEqual @@ -0,0 +1,31 @@ +((function greaterThanEqual +   (signature bvec2 +     (parameters +       (declare (in) uvec2 arg0) +       (declare (in) uvec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) uvec3 arg0) +       (declare (in) uvec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) uvec4 arg0) +       (declare (in) uvec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/130/lessThan b/src/glsl/builtins/130/lessThan new file mode 100644 index 0000000000..d9f693fd63 --- /dev/null +++ b/src/glsl/builtins/130/lessThan @@ -0,0 +1,31 @@ +((function lessThan +   (signature bvec2 +     (parameters +       (declare (in) uvec2 arg0) +       (declare (in) uvec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) uvec3 arg0) +       (declare (in) uvec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) uvec4 arg0) +       (declare (in) uvec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/130/lessThanEqual b/src/glsl/builtins/130/lessThanEqual new file mode 100644 index 0000000000..494411b869 --- /dev/null +++ b/src/glsl/builtins/130/lessThanEqual @@ -0,0 +1,31 @@ +((function lessThanEqual +   (signature bvec2 +     (parameters +       (declare (in) uvec2 arg0) +       (declare (in) uvec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) uvec3 arg0) +       (declare (in) uvec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) uvec4 arg0) +       (declare (in) uvec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/130/max b/src/glsl/builtins/130/max new file mode 100644 index 0000000000..45a6089c9f --- /dev/null +++ b/src/glsl/builtins/130/max @@ -0,0 +1,127 @@ +((function max +   (signature int +     (parameters +       (declare (in) int arg0) +       (declare (in) int arg1)) +     ((return (expression int max (var_ref arg0) (var_ref arg1))))) + +   (signature ivec2 +     (parameters +       (declare (in) ivec2 arg0) +       (declare (in) ivec2 arg1)) +     ((return (expression ivec2 max (var_ref arg0) (var_ref arg1))))) + +   (signature ivec3 +     (parameters +       (declare (in) ivec3 arg0) +       (declare (in) ivec3 arg1)) +     ((return (expression ivec3 max (var_ref arg0) (var_ref arg1))))) + +   (signature ivec4 +     (parameters +       (declare (in) ivec4 arg0) +       (declare (in) ivec4 arg1)) +     ((return (expression ivec4 max (var_ref arg0) (var_ref arg1))))) + +   (signature ivec2 +     (parameters +       (declare (in) ivec2  arg0) +       (declare (in) int arg1)) +     ((declare () ivec2 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression int max (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression int max (swiz y (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature ivec3 +     (parameters +       (declare (in) ivec3  arg0) +       (declare (in) int arg1)) +     ((declare () ivec3 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression int max (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression int max (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) +              (expression int max (swiz z (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature ivec4 +     (parameters +       (declare (in) ivec4  arg0) +       (declare (in) int arg1)) +     ((declare () ivec4 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression int max (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression int max (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) +              (expression int max (swiz z (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz w (var_ref result)) +              (expression int max (swiz w (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature uint +     (parameters +       (declare (in) uint arg0) +       (declare (in) uint arg1)) +     ((return (expression uint max (var_ref arg0) (var_ref arg1))))) + +   (signature uvec2 +     (parameters +       (declare (in) uvec2 arg0) +       (declare (in) uvec2 arg1)) +     ((return (expression uvec2 max (var_ref arg0) (var_ref arg1))))) + +   (signature uvec3 +     (parameters +       (declare (in) uvec3 arg0) +       (declare (in) uvec3 arg1)) +     ((return (expression uvec3 max (var_ref arg0) (var_ref arg1))))) + +   (signature uvec4 +     (parameters +       (declare (in) uvec4 arg0) +       (declare (in) uvec4 arg1)) +     ((return (expression uvec4 max (var_ref arg0) (var_ref arg1))))) + +   (signature uvec2 +     (parameters +       (declare (in) uvec2  arg0) +       (declare (in) uint arg1)) +     ((declare () uvec2 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression uint max (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression uint max (swiz y (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature uvec3 +     (parameters +       (declare (in) uvec3  arg0) +       (declare (in) uint arg1)) +     ((declare () uvec3 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression uint max (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression uint max (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) +              (expression uint max (swiz z (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature uvec4 +     (parameters +       (declare (in) uvec4  arg0) +       (declare (in) uint arg1)) +     ((declare () uvec4 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression uint max (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression uint max (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) +              (expression uint max (swiz z (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz w (var_ref result)) +              (expression uint max (swiz w (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) +)) diff --git a/src/glsl/builtins/130/min b/src/glsl/builtins/130/min new file mode 100644 index 0000000000..d98ec1e79d --- /dev/null +++ b/src/glsl/builtins/130/min @@ -0,0 +1,127 @@ +((function min +   (signature int +     (parameters +       (declare (in) int arg0) +       (declare (in) int arg1)) +     ((return (expression int min (var_ref arg0) (var_ref arg1))))) + +   (signature ivec2 +     (parameters +       (declare (in) ivec2 arg0) +       (declare (in) ivec2 arg1)) +     ((return (expression ivec2 min (var_ref arg0) (var_ref arg1))))) + +   (signature ivec3 +     (parameters +       (declare (in) ivec3 arg0) +       (declare (in) ivec3 arg1)) +     ((return (expression ivec3 min (var_ref arg0) (var_ref arg1))))) + +   (signature ivec4 +     (parameters +       (declare (in) ivec4 arg0) +       (declare (in) ivec4 arg1)) +     ((return (expression ivec4 min (var_ref arg0) (var_ref arg1))))) + +   (signature ivec2 +     (parameters +       (declare (in) ivec2  arg0) +       (declare (in) int arg1)) +     ((declare () ivec2 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression int min (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression int min (swiz y (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature ivec3 +     (parameters +       (declare (in) ivec3  arg0) +       (declare (in) int arg1)) +     ((declare () ivec3 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression int min (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression int min (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) +              (expression int min (swiz z (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature ivec4 +     (parameters +       (declare (in) ivec4  arg0) +       (declare (in) int arg1)) +     ((declare () ivec4 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression int min (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression int min (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) +              (expression int min (swiz z (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz w (var_ref result)) +              (expression int min (swiz w (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature uint +     (parameters +       (declare (in) uint arg0) +       (declare (in) uint arg1)) +     ((return (expression uint min (var_ref arg0) (var_ref arg1))))) + +   (signature uvec2 +     (parameters +       (declare (in) uvec2 arg0) +       (declare (in) uvec2 arg1)) +     ((return (expression uvec2 min (var_ref arg0) (var_ref arg1))))) + +   (signature uvec3 +     (parameters +       (declare (in) uvec3 arg0) +       (declare (in) uvec3 arg1)) +     ((return (expression uvec3 min (var_ref arg0) (var_ref arg1))))) + +   (signature uvec4 +     (parameters +       (declare (in) uvec4 arg0) +       (declare (in) uvec4 arg1)) +     ((return (expression uvec4 min (var_ref arg0) (var_ref arg1))))) + +   (signature uvec2 +     (parameters +       (declare (in) uvec2  arg0) +       (declare (in) uint arg1)) +     ((declare () uvec2 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression uint min (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression uint min (swiz y (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature uvec3 +     (parameters +       (declare (in) uvec3  arg0) +       (declare (in) uint arg1)) +     ((declare () uvec3 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression uint min (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression uint min (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) +              (expression uint min (swiz z (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) + +   (signature uvec4 +     (parameters +       (declare (in) uvec4  arg0) +       (declare (in) uint arg1)) +     ((declare () uvec4 result) +      (assign (constant bool (1)) (swiz x (var_ref result)) +              (expression uint min (swiz x (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz y (var_ref result)) +              (expression uint min (swiz y (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz z (var_ref result)) +              (expression uint min (swiz z (var_ref arg0)) (var_ref arg1))) +      (assign (constant bool (1)) (swiz w (var_ref result)) +              (expression uint min (swiz w (var_ref arg0)) (var_ref arg1))) +      (return (var_ref result)))) +)) diff --git a/src/glsl/builtins/130/notEqual b/src/glsl/builtins/130/notEqual new file mode 100644 index 0000000000..81e6376bd9 --- /dev/null +++ b/src/glsl/builtins/130/notEqual @@ -0,0 +1,31 @@ +((function notEqual +   (signature bvec2 +     (parameters +       (declare (in) uvec2 arg0) +       (declare (in) uvec2 arg1)) +     ((declare () bvec2 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec3 +     (parameters +       (declare (in) uvec3 arg0) +       (declare (in) uvec3 arg1)) +     ((declare () bvec3 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (return (var_ref temp)))) + +   (signature bvec4 +     (parameters +       (declare (in) uvec4 arg0) +       (declare (in) uvec4 arg1)) +     ((declare () bvec4 temp) +      (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))  +      (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))  +      (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))  +      (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool != (swiz w (var_ref arg0))(swiz w (var_ref arg1))))  +      (return (var_ref temp)))) +)) diff --git a/src/glsl/builtins/130/sign b/src/glsl/builtins/130/sign new file mode 100644 index 0000000000..0bdc0e09d2 --- /dev/null +++ b/src/glsl/builtins/130/sign @@ -0,0 +1,34 @@ +((function sign +   (signature int +     (parameters +       (declare (in) int x)) +     ((return (expression int / (var_ref x) (expression int abs (var_ref x)))))) + +   (signature ivec2 +     (parameters +       (declare (in) ivec2 x)) +     ((declare () ivec2 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x)))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x)))) +      (return (var_ref t)))) + +   (signature ivec3 +     (parameters +       (declare (in) ivec3 x)) +     ((declare () ivec3 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x)))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x)))) +      (assign (constant bool (1)) (swiz z (var_ref t)) (expression int sign (swiz z (var_ref x)))) +      (return (var_ref t)))) + +   (signature ivec4 +     (parameters +       (declare (in) ivec4 x)) +     ((declare () ivec4 t) +      (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x)))) +      (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x)))) +      (assign (constant bool (1)) (swiz z (var_ref t)) (expression int sign (swiz z (var_ref x)))) +      (assign (constant bool (1)) (swiz w (var_ref t)) (expression int sign (swiz w (var_ref x)))) +      (return (var_ref t)))) +)) + diff --git a/src/glsl/builtins/130/sinh b/src/glsl/builtins/130/sinh new file mode 100644 index 0000000000..7ad4f58e20 --- /dev/null +++ b/src/glsl/builtins/130/sinh @@ -0,0 +1,30 @@ +((function sinh +   (signature float +     (parameters +       (declare (in) float x)) +     ((return (expression float * (constant float (0.5)) +                (expression float - +		  (expression float exp (var_ref x)) +		  (expression float exp (expression float neg (var_ref x)))))))) +   (signature vec2 +     (parameters +       (declare (in) vec2 x)) +     ((return (expression vec2 * (constant vec2 (0.5)) +                (expression vec2 - +		  (expression vec2 exp (var_ref x)) +		  (expression vec2 exp (expression vec2 neg (var_ref x)))))))) +   (signature vec3 +     (parameters +       (declare (in) vec3 x)) +     ((return (expression vec3 * (constant vec3 (0.5)) +                (expression vec3 - +		  (expression vec3 exp (var_ref x)) +		  (expression vec3 exp (expression vec3 neg (var_ref x)))))))) +   (signature vec4 +     (parameters +       (declare (in) vec4 x)) +     ((return (expression vec4 * (constant vec4 (0.5)) +                (expression vec4 - +		  (expression vec4 exp (var_ref x)) +		  (expression vec4 exp (expression vec4 neg (var_ref x)))))))) +)) diff --git a/src/glsl/builtins/130/tanh b/src/glsl/builtins/130/tanh new file mode 100644 index 0000000000..3b7271bf77 --- /dev/null +++ b/src/glsl/builtins/130/tanh @@ -0,0 +1,42 @@ +((function tanh +   (signature float +     (parameters +       (declare (in) float x)) +     ((return (expression float / +                (expression float - +		  (expression float exp (var_ref x)) +		  (expression float exp (expression float neg (var_ref x)))) +                (expression float + +		  (expression float exp (var_ref x)) +		  (expression float exp (expression float neg (var_ref x)))))))) +   (signature vec2 +     (parameters +       (declare (in) vec2 x)) +     ((return (expression vec2 / +                (expression vec2 - +		  (expression vec2 exp (var_ref x)) +		  (expression vec2 exp (expression vec2 neg (var_ref x)))) +                (expression vec2 + +		  (expression vec2 exp (var_ref x)) +		  (expression vec2 exp (expression vec2 neg (var_ref x)))))))) +   (signature vec3 +     (parameters +       (declare (in) vec3 x)) +     ((return (expression vec3 / +                (expression vec3 - +		  (expression vec3 exp (var_ref x)) +		  (expression vec3 exp (expression vec3 neg (var_ref x)))) +                (expression vec3 + +		  (expression vec3 exp (var_ref x)) +		  (expression vec3 exp (expression vec3 neg (var_ref x)))))))) +   (signature vec4 +     (parameters +       (declare (in) vec4 x)) +     ((return (expression vec4 / +                (expression vec4 - +		  (expression vec4 exp (var_ref x)) +		  (expression vec4 exp (expression vec4 neg (var_ref x)))) +                (expression vec4 + +		  (expression vec4 exp (var_ref x)) +		  (expression vec4 exp (expression vec4 neg (var_ref x)))))))) +)) diff --git a/src/glsl/builtins/130/texelFetch b/src/glsl/builtins/130/texelFetch new file mode 100644 index 0000000000..d51ce65a89 --- /dev/null +++ b/src/glsl/builtins/130/texelFetch @@ -0,0 +1,107 @@ +((function texelFetch +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) int P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) int P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) int P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) ivec2 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) ivec2 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) ivec2 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) ivec3 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler3D sampler) +       (declare (in) ivec3 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler3D sampler) +       (declare (in) ivec3 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1DArray sampler) +       (declare (in) ivec2 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1DArray sampler) +       (declare (in) ivec2 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1DArray sampler) +       (declare (in) ivec2 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2DArray sampler) +       (declare (in) ivec3 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2DArray sampler) +       (declare (in) ivec3 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2DArray sampler) +       (declare (in) ivec3 P)  +       (declare (in) int lod) ) +     ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) )))) + +)) diff --git a/src/glsl/builtins/130/texture b/src/glsl/builtins/130/texture new file mode 100644 index 0000000000..b170b58309 --- /dev/null +++ b/src/glsl/builtins/130/texture @@ -0,0 +1,110 @@ +((function texture +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) float P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) float P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) float P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler3D sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler3D sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature vec4 +     (parameters +       (declare (in) samplerCube sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isamplerCube sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usamplerCube sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1DArray sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1DArray sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1DArray sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2DArray sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2DArray sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2DArray sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +)) diff --git a/src/glsl/builtins/130/textureGrad b/src/glsl/builtins/130/textureGrad new file mode 100644 index 0000000000..0ef428c224 --- /dev/null +++ b/src/glsl/builtins/130/textureGrad @@ -0,0 +1,147 @@ +((function textureGrad +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) float P)  +       (declare (in) float dPdx)  +       (declare (in) float dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) float P)  +       (declare (in) float dPdx)  +       (declare (in) float dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) float P)  +       (declare (in) float dPdx)  +       (declare (in) float dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature vec4 +     (parameters +       (declare (in) samplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isamplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usamplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) )))) + +) +) diff --git a/src/glsl/builtins/130/textureLod b/src/glsl/builtins/130/textureLod new file mode 100644 index 0000000000..7d7059d848 --- /dev/null +++ b/src/glsl/builtins/130/textureLod @@ -0,0 +1,128 @@ +((function textureLod +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) float P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) float P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) float P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) samplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isamplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usamplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +)) diff --git a/src/glsl/builtins/130/textureProj b/src/glsl/builtins/130/textureProj new file mode 100644 index 0000000000..40ea1c2af6 --- /dev/null +++ b/src/glsl/builtins/130/textureProj @@ -0,0 +1,92 @@ +((function textureProj +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler3D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler3D sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () )))) + +)) diff --git a/src/glsl/builtins/130/textureProjGrad b/src/glsl/builtins/130/textureProjGrad new file mode 100644 index 0000000000..a0142c5e68 --- /dev/null +++ b/src/glsl/builtins/130/textureProjGrad @@ -0,0 +1,122 @@ +((function textureLod +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float dPdx)  +       (declare (in) float dPdy) ) +     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float dPdx)  +       (declare (in) float dPdy) ) +     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float dPdx)  +       (declare (in) float dPdy) ) +     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float dPdx)  +       (declare (in) float dPdy) ) +     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float dPdx)  +       (declare (in) float dPdy) ) +     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float dPdx)  +       (declare (in) float dPdy) ) +     ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) vec2 dPdx)  +       (declare (in) vec2 dPdy) ) +     ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) vec3 dPdx)  +       (declare (in) vec3 dPdy) ) +     ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) )))) + +)) diff --git a/src/glsl/builtins/130/textureProjLod b/src/glsl/builtins/130/textureProjLod new file mode 100644 index 0000000000..9f4ce1b493 --- /dev/null +++ b/src/glsl/builtins/130/textureProjLod @@ -0,0 +1,107 @@ +((function textureLod +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) )))) + +)) diff --git a/src/glsl/builtins/130_fs/texture b/src/glsl/builtins/130_fs/texture new file mode 100644 index 0000000000..0de981397f --- /dev/null +++ b/src/glsl/builtins/130_fs/texture @@ -0,0 +1,128 @@ +((function texture +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) float P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) float P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) float P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler3D sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) samplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isamplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usamplerCube sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +)) diff --git a/src/glsl/builtins/130_fs/textureProj b/src/glsl/builtins/130_fs/textureProj new file mode 100644 index 0000000000..b1d8f0a2f3 --- /dev/null +++ b/src/glsl/builtins/130_fs/textureProj @@ -0,0 +1,107 @@ +((function textureProj +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler1D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler2D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +   (signature vec4 +     (parameters +       (declare (in) sampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +   (signature ivec4 +     (parameters +       (declare (in) isampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +   (signature uvec4 +     (parameters +       (declare (in) usampler3D sampler) +       (declare (in) vec4 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) )))) + +)) diff --git a/src/glsl/builtins/ARB_texture_rectangle/textures b/src/glsl/builtins/ARB_texture_rectangle/textures new file mode 100644 index 0000000000..161d8c4a54 --- /dev/null +++ b/src/glsl/builtins/ARB_texture_rectangle/textures @@ -0,0 +1,16 @@ +((function texture2DRect +   (signature vec4 +     (parameters +       (declare (in) sampler2DRect sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +) + (function shadow2DRect +   (signature vec4 +     (parameters +       (declare (in) sampler2DRectShadow sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) )))) + +)) diff --git a/src/glsl/builtins/EXT_texture_array/textures b/src/glsl/builtins/EXT_texture_array/textures new file mode 100644 index 0000000000..8a91f90140 --- /dev/null +++ b/src/glsl/builtins/EXT_texture_array/textures @@ -0,0 +1,59 @@ +((function texture1DArray +   (signature vec4 +     (parameters +       (declare (in) sampler1DArray sampler) +       (declare (in) vec2 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +) + (function texture1DArrayLod +   (signature vec4 +     (parameters +       (declare (in) sampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +) + (function texture2DArray +   (signature vec4 +     (parameters +       (declare (in) sampler2DArray sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () )))) + +) + (function texture2DArrayLod +   (signature vec4 +     (parameters +       (declare (in) sampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) )))) + +) + (function shadow1DArray +   (signature vec4 +     (parameters +       (declare (in) sampler1DArrayShadow sampler) +       (declare (in) vec3 P) ) +     ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) )))) + +) + (function shadow1DArrayLod +   (signature vec4 +     (parameters +       (declare (in) sampler1DArrayShadow sampler) +       (declare (in) vec3 P)  +       (declare (in) float lod) ) +     ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) )))) + +) + (function shadow2DArray +   (signature vec4 +     (parameters +       (declare (in) sampler2DArrayShadow sampler) +       (declare (in) vec4 P) ) +     ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) 1 (swiz w (var_ref P)) )))) + +)) diff --git a/src/glsl/builtins/EXT_texture_array_fs/textures b/src/glsl/builtins/EXT_texture_array_fs/textures new file mode 100644 index 0000000000..74e184387a --- /dev/null +++ b/src/glsl/builtins/EXT_texture_array_fs/textures @@ -0,0 +1,27 @@ +((function texture1DArray +   (signature vec4 +     (parameters +       (declare (in) sampler1DArray sampler) +       (declare (in) vec2 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +) + (function texture2DArray +   (signature vec4 +     (parameters +       (declare (in) sampler2DArray sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) )))) + +) + (function shadow1DArray +   (signature vec4 +     (parameters +       (declare (in) sampler1DArrayShadow sampler) +       (declare (in) vec3 P)  +       (declare (in) float bias) ) +     ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) )))) + +)) diff --git a/src/glsl/builtins/tools/generate_builtins.pl b/src/glsl/builtins/tools/generate_builtins.pl new file mode 100755 index 0000000000..8b640ab8ff --- /dev/null +++ b/src/glsl/builtins/tools/generate_builtins.pl @@ -0,0 +1,123 @@ +#!/usr/bin/env perl + +sub process_version { +   my ($version) = @_; +   my @vars; +   print "/* $version builtins */\n\n"; + +   my @files = <builtins/$version/*>; +   foreach $file (@files) { +      push(@vars, process_file($file)); +   } + +   print "static const char *functions_for_$version [] = {\n"; +   foreach $var (@vars) { +      print "   $var,\n"; +   } +   print "};\n\n" +} + +sub process_file { +   my ($file) = @_; + +   # Change from builtins/110/foo to builtins_110_foo +   my $var = $file; $var =~ s!/!_!g; + +   print "static const char *$var = {\n"; +   open SRC, "<", "$file" or die $!; +   while (<SRC>) { +      s/\\/\\\\/g; +      s/\"/\\\"/g; +      s/\n/\\n/g; +      print "   \"$_\"\n"; +   } +   print "};\n\n"; +   close SRC or die $!; +   return $var; +} + +print << 'EOF'; +/* DO NOT MODIFY - automatically generated by generate_builtins.pl */ +/* + * Copyright © 2010 Intel Corporation + * + * 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 (including the next + * paragraph) 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 + * THE AUTHORS OR COPYRIGHT HOLDERS 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. + */ + +#include <stdio.h> +#include "glsl_parser_extras.h" +#include "ir_reader.h" + +void +read_builtins(_mesa_glsl_parse_state *st, exec_list *instructions, +	      const char **functions, unsigned count) +{ +   if (st->error) +      return; + +   for (unsigned i = 0; i < count; i++) { +      _mesa_glsl_read_ir(st, instructions, functions[i]); + +      if (st->error) { +	 printf("error reading builtin: %.35s ...\n", functions[i]); +         return; +      } +   } +} + +EOF + +@versions = sort(<builtins/[1-9A-Z]*>); +foreach $version (@versions) { +   $version =~ s!builtins/!!g; +   process_version($version); +} + +print << 'EOF'; +void +_mesa_glsl_initialize_functions(exec_list *instructions, +			        struct _mesa_glsl_parse_state *state) +{ +EOF + +foreach $version_xs (@versions) { +   $check = ""; +   if ($version_xs =~ /_vs/) { +      $check = "state->target == vertex_shader && "; +   } elsif ($version_xs =~ /_fs/) { +      $check = "state->target == fragment_shader && "; +   } +   $version = $version_xs; +   $version =~ s/_[vf]s//g; + +   if ($version =~ /^[1-9][0-9][0-9]/) { +      $check = "${check}state->language_version >= $version"; +   } else { +      # Not a version...an extension name +      $check = "${check}state->${version}_enable"; +   } +   print "   if ($check)\n"; +   print "      read_builtins(state, instructions,\n"; +   print "                    functions_for_$version_xs,\n"; +   print "                    sizeof(functions_for_$version_xs) / "; +   print "sizeof(const char *));\n\n" +} + +print "}\n"; diff --git a/src/glsl/builtins/tools/generate_matrixCompMultGLSL.py b/src/glsl/builtins/tools/generate_matrixCompMultGLSL.py new file mode 100755 index 0000000000..391ad110d3 --- /dev/null +++ b/src/glsl/builtins/tools/generate_matrixCompMultGLSL.py @@ -0,0 +1,28 @@ +#!/usr/bin/python + +def gen_matrix(x, y = 0): +    if y == 0: +        y = x +    type = "mat" + str(x) +    if x != y: +        type = type + "x" + str(y) +    print type + " matrixCompMult(" + type + " x, " + type + " y)\n{" +    print "    " + type + " z;" + +    for i in range(x): +        print "    z[" + str(i) + "] = x[" + str(i) + "] * y[" + str(i) + "];" +    print "    return z;\n}" + +print "#version 120" +# 1.10 +gen_matrix(2) +gen_matrix(3) +gen_matrix(4) + +# 1.20 +gen_matrix(2,3) # mat2x3 means 2 columns, 3 rows +gen_matrix(3,2) +gen_matrix(2,4) +gen_matrix(4,2) +gen_matrix(3,4) +gen_matrix(4,3) diff --git a/src/glsl/builtins/tools/generate_outerProductGLSL.py b/src/glsl/builtins/tools/generate_outerProductGLSL.py new file mode 100755 index 0000000000..48fb72197c --- /dev/null +++ b/src/glsl/builtins/tools/generate_outerProductGLSL.py @@ -0,0 +1,23 @@ +#!/usr/bin/python + +def gen(x, y): +    type = "mat" + str(x) +    if x != y: +        type = type + "x" + str(y) +    print type + " outerProduct(vec" + str(x) + " u, vec" + str(y) + " v)\n{" +    print "    " + type + " m;" + +    for i in range(x): +        print "    m[" + str(i) + "] = v * u[" + str(i) + "];" +    print "    return m;\n}" + +print "#version 120" +gen(2,2) +gen(2,3) # mat2x3 means 2 columns, 3 rows +gen(2,4) +gen(3,2) +gen(3,3) +gen(3,4) +gen(4,2) +gen(4,3) +gen(4,4) diff --git a/src/glsl/builtins/tools/generate_transposeGLSL.py b/src/glsl/builtins/tools/generate_transposeGLSL.py new file mode 100755 index 0000000000..8f669ce983 --- /dev/null +++ b/src/glsl/builtins/tools/generate_transposeGLSL.py @@ -0,0 +1,28 @@ +#!/usr/bin/python + +def gen(x, y): +    origtype = "mat" + str(x) +    trantype = "mat" + str(y) +    if x != y: +        origtype = origtype + "x" + str(y) +        trantype = trantype + "x" + str(x) +    print trantype + " transpose(" + origtype + " m)\n{" +    print "    " + trantype + " t;" + +    # The obvious implementation of transpose +    for i in range(x): +        for j in range(y): +            print "    t[" + str(j) + "][" + str(i) + "] =", +            print "m[" + str(i) + "][" + str(j) + "];" +    print "    return t;\n}" + +print "#version 120" +gen(2,2) +gen(2,3) # mat2x3 means 2 columns, 3 rows +gen(2,4) +gen(3,2) +gen(3,3) +gen(3,4) +gen(4,2) +gen(4,3) +gen(4,4) diff --git a/src/glsl/builtins/tools/texture_builtins.py b/src/glsl/builtins/tools/texture_builtins.py new file mode 100755 index 0000000000..23d5314916 --- /dev/null +++ b/src/glsl/builtins/tools/texture_builtins.py @@ -0,0 +1,298 @@ +#!/usr/bin/python + +from os import path +import sys + +def vec_type(g, size): +    if size == 1: +        if g == "i": +            return "int" +        elif g == "u": +            return "uint" +        return "float" +    return g + "vec" + str(size) + +# Get the base dimension - i.e. sampler3D gives 3 +# Array samplers also get +1 here since the layer is really an extra coordinate +def get_coord_dim(sampler_type): +    if sampler_type[0].isdigit(): +        coord_dim = int(sampler_type[0]) +    elif sampler_type.startswith("Cube"): +        coord_dim = 3 +    else: +        assert False ("coord_dim: invalid sampler_type: " + sampler_type) + +    if sampler_type.find("Array") != -1: +        coord_dim += 1 +    return coord_dim + +# Get the number of extra vector components (i.e. shadow comparitor) +def get_extra_dim(sampler_type, use_proj, unused_fields): +    extra_dim = unused_fields +    if sampler_type.find("Shadow") != -1: +        extra_dim += 1 +    if use_proj: +        extra_dim += 1 +    return extra_dim + +def generate_sigs(g, tex_inst, sampler_type, use_proj = False, unused_fields = 0): +    coord_dim = get_coord_dim(sampler_type) +    extra_dim = get_extra_dim(sampler_type, use_proj, unused_fields) + +    # Print parameters +    print "   (signature " + g + "vec4" +    print "     (parameters" +    print "       (declare (in) " + g + "sampler" + sampler_type + " sampler)" +    print "       (declare (in) " + vec_type("i" if tex_inst == "txf" else "", coord_dim + extra_dim) + " P)", +    if tex_inst == "txb": +        print "\n       (declare (in) float bias)", +    elif tex_inst == "txl": +        print "\n       (declare (in) float lod)", +    elif tex_inst == "txf": +        print "\n       (declare (in) int lod)", +    elif tex_inst == "txd": +        grad_type = vec_type("", coord_dim) +        print "\n       (declare (in) " + grad_type + " dPdx)", +        print "\n       (declare (in) " + grad_type + " dPdy)", + +    print ")\n     ((return (" + tex_inst + " (var_ref sampler)", + +    # Coordinate +    if extra_dim > 0: +        print "(swiz " + "xyzw"[:coord_dim] + " (var_ref P))", +    else: +        print "(var_ref P)", + +    # Offset +    print "(0 0 0)", + +    if tex_inst != "txf": +        # Projective divisor +        if use_proj: +            print "(swiz " + "xyzw"[coord_dim + extra_dim-1] + " (var_ref P))", +        else: +            print "1", + +        # Shadow comparitor +        if sampler_type == "2DArrayShadow": # a special case: +            print "(swiz w (var_ref P))",   # ...array layer is z; shadow is w +        elif sampler_type.endswith("Shadow"): +            print "(swiz z (var_ref P))", +        else: +            print "()", + +    # Bias/explicit LOD/gradient: +    if tex_inst == "txb": +        print "(var_ref bias)", +    elif tex_inst == "txl" or tex_inst == "txf": +        print "(var_ref lod)", +    elif tex_inst == "txd": +        print "((var_ref dPdx) (var_ref dPdy))", +    print "))))\n" + +def generate_fiu_sigs(tex_inst, sampler_type, use_proj = False, unused_fields = 0): +    generate_sigs("",  tex_inst, sampler_type, use_proj, unused_fields) +    generate_sigs("i", tex_inst, sampler_type, use_proj, unused_fields) +    generate_sigs("u", tex_inst, sampler_type, use_proj, unused_fields) + +builtins_dir = path.join(path.dirname(path.abspath(__file__)), "..") + +with open(path.join(builtins_dir, "130", "texture"), 'w') as sys.stdout: +    print "((function texture" +    generate_fiu_sigs("tex", "1D") +    generate_fiu_sigs("tex", "2D") +    generate_fiu_sigs("tex", "3D") +    generate_fiu_sigs("tex", "Cube") +    generate_fiu_sigs("tex", "1DArray") +    generate_fiu_sigs("tex", "2DArray") +    print "))" + +# txb variants are only allowed within a fragment shader (GLSL 1.30 p. 86) +with open(path.join(builtins_dir, "130_fs", "texture"), 'w') as sys.stdout: +    print "((function texture" +    generate_fiu_sigs("txb", "1D") +    generate_fiu_sigs("txb", "2D") +    generate_fiu_sigs("txb", "3D") +    generate_fiu_sigs("txb", "Cube") +    generate_fiu_sigs("txb", "1DArray") +    generate_fiu_sigs("txb", "2DArray") +    print "))" + +with open(path.join(builtins_dir, "130", "textureProj"), 'w') as sys.stdout: +    print "((function textureProj" +    generate_fiu_sigs("tex", "1D", True) +    generate_fiu_sigs("tex", "1D", True, 2) +    generate_fiu_sigs("tex", "2D", True) +    generate_fiu_sigs("tex", "2D", True, 1) +    generate_fiu_sigs("tex", "3D", True) +    print "))" + +with open(path.join(builtins_dir, "130_fs", "textureProj"), 'w') as sys.stdout: +    print "((function textureProj" +    generate_fiu_sigs("txb", "1D", True) +    generate_fiu_sigs("txb", "1D", True, 2) +    generate_fiu_sigs("txb", "2D", True) +    generate_fiu_sigs("txb", "2D", True, 1) +    generate_fiu_sigs("txb", "3D", True) +    print "))" + +with open(path.join(builtins_dir, "130", "textureLod"), 'w') as sys.stdout: +    print "((function textureLod" +    generate_fiu_sigs("txl", "1D") +    generate_fiu_sigs("txl", "2D") +    generate_fiu_sigs("txl", "3D") +    generate_fiu_sigs("txl", "Cube") +    generate_fiu_sigs("txl", "1DArray") +    generate_fiu_sigs("txl", "2DArray") +    print "))" + +with open(path.join(builtins_dir, "130", "texelFetch"), 'w') as sys.stdout: +    print "((function texelFetch" +    generate_fiu_sigs("txf", "1D") +    generate_fiu_sigs("txf", "2D") +    generate_fiu_sigs("txf", "3D") +    generate_fiu_sigs("txf", "1DArray") +    generate_fiu_sigs("txf", "2DArray") +    print "))" + +with open(path.join(builtins_dir, "130", "textureProjLod"), 'w') as sys.stdout: +    print "((function textureLod" +    generate_fiu_sigs("txl", "1D", True) +    generate_fiu_sigs("txl", "1D", True, 2) +    generate_fiu_sigs("txl", "2D", True) +    generate_fiu_sigs("txl", "2D", True, 1) +    generate_fiu_sigs("txl", "3D", True) +    print "))" + +with open(path.join(builtins_dir, "130", "textureGrad"), 'w') as sys.stdout: +    print "((function textureGrad" +    generate_fiu_sigs("txd", "1D") +    generate_fiu_sigs("txd", "2D") +    generate_fiu_sigs("txd", "3D") +    generate_fiu_sigs("txd", "Cube") +    generate_fiu_sigs("txd", "1DArray") +    generate_fiu_sigs("txd", "2DArray") +    print ")\n)" + +with open(path.join(builtins_dir, "130", "textureProjGrad"), 'w') as sys.stdout: +    print "((function textureLod" +    generate_fiu_sigs("txd", "1D", True) +    generate_fiu_sigs("txd", "1D", True, 2) +    generate_fiu_sigs("txd", "2D", True) +    generate_fiu_sigs("txd", "2D", True, 1) +    generate_fiu_sigs("txd", "3D", True) +    print "))" + +# ARB_texture_rectangle extension +with open(path.join(builtins_dir, "ARB_texture_rectangle", "textures"), 'w') as sys.stdout: +    print "((function texture2DRect" +    generate_sigs("", "tex", "2DRect") +    print ")\n (function shadow2DRect" +    generate_sigs("", "tex", "2DRectShadow") +    print "))" + +# EXT_texture_array extension +with open(path.join(builtins_dir, "EXT_texture_array", "textures"), 'w') as sys.stdout: +    print "((function texture1DArray" +    generate_sigs("", "tex", "1DArray") +    print ")\n (function texture1DArrayLod" +    generate_sigs("", "txl", "1DArray") +    print ")\n (function texture2DArray" +    generate_sigs("", "tex", "2DArray") +    print ")\n (function texture2DArrayLod" +    generate_sigs("", "txl", "2DArray") +    print ")\n (function shadow1DArray" +    generate_sigs("", "tex", "1DArrayShadow") +    print ")\n (function shadow1DArrayLod" +    generate_sigs("", "txl", "1DArrayShadow") +    print ")\n (function shadow2DArray" +    generate_sigs("", "tex", "2DArrayShadow") +    print "))" + +with open(path.join(builtins_dir, "EXT_texture_array_fs", "textures"), 'w') as sys.stdout: +    print "((function texture1DArray" +    generate_sigs("", "txb", "1DArray")  # MOVE TO _fs +    print ")\n (function texture2DArray" +    generate_sigs("", "txb", "2DArray")  # MOVE TO _fs +    print ")\n (function shadow1DArray" +    generate_sigs("", "txb", "1DArrayShadow") +    print "))" + +# Deprecated (110/120 style) functions with silly names: +with open(path.join(builtins_dir, "110", "textures"), 'w') as sys.stdout: +    print "((function texture1D" +    generate_sigs("", "tex", "1D") +    print ")\n (function texture1DLod" +    generate_sigs("", "txl", "1D") +    print ")\n (function texture1DProj" +    generate_sigs("", "tex", "1D", True) +    generate_sigs("", "tex", "1D", True, 2) +    print ")\n (function texture1DProjLod" +    generate_sigs("", "txl", "1D", True) +    generate_sigs("", "txl", "1D", True, 2) +    print ")\n (function texture2D" +    generate_sigs("", "tex", "2D") +    print ")\n(function texture2DLod" +    generate_sigs("", "txl", "2D") +    print ")\n (function texture2DProj" +    generate_sigs("", "tex", "2D", True) +    generate_sigs("", "tex", "2D", True, 1) +    print ")\n (function texture2DProjLod" +    generate_sigs("", "txl", "2D", True) +    generate_sigs("", "txl", "2D", True, 1) +    print ")\n (function texture3D" +    generate_sigs("", "tex", "3D") +    print ")\n (function texture3DLod" +    generate_sigs("", "txl", "3D") +    print ")\n (function texture3DProj" +    generate_sigs("", "tex", "3D", True) +    print ")\n (function texture3DProjLod" +    generate_sigs("", "txl", "3D", True) +    print ")\n (function textureCube" +    generate_sigs("", "tex", "Cube") +    print ")\n (function textureCubeLod" +    generate_sigs("", "txl", "Cube") +    print ")\n (function shadow1D" +    generate_sigs("", "tex", "1DShadow", False, 1) +    print ")\n (function shadow1DLod" +    generate_sigs("", "txl", "1DShadow", False, 1) +    print ")\n (function shadow1DProj" +    generate_sigs("", "tex", "1DShadow", True, 1) +    print ")\n (function shadow1DProjLod" +    generate_sigs("", "txl", "1DShadow", True, 1) +    print ")\n (function shadow2D" +    generate_sigs("", "tex", "2DShadow") +    print ")\n (function shadow2DLod" +    generate_sigs("", "txl", "2DShadow") +    print ")\n (function shadow2DProj" +    generate_sigs("", "tex", "2DShadow", True) +    print ")\n (function shadow2DProjLod" +    generate_sigs("", "txl", "2DShadow", True) +    print "))" + +with open(path.join(builtins_dir, "110_fs", "textures"), 'w') as sys.stdout: +    print "((function texture1D" +    generate_sigs("", "txb", "1D") +    print ")\n (function texture1DProj" +    generate_sigs("", "txb", "1D", True) +    generate_sigs("", "txb", "1D", True, 2) +    print ")\n (function texture2D" +    generate_sigs("", "txb", "2D") +    print ")\n (function texture2DProj" +    generate_sigs("", "txb", "2D", True) +    generate_sigs("", "txb", "2D", True, 1) +    print ")\n (function texture3D" +    generate_sigs("", "txb", "3D") +    print ")\n (function texture3DProj" +    generate_sigs("", "txb", "3D", True) +    print ")\n (function textureCube" +    generate_sigs("", "txb", "Cube") +    print ")\n (function shadow1D" +    generate_sigs("", "txb", "1DShadow", False, 1) +    print ")\n (function shadow1DProj" +    generate_sigs("", "txb", "1DShadow", True, 1) +    print ")\n (function shadow2D" +    generate_sigs("", "txb", "2DShadow") +    print ")\n (function shadow2DProj" +    generate_sigs("", "txb", "2DShadow", True) +    print "))" | 
