summaryrefslogtreecommitdiff
path: root/src/glsl/builtin_function.cpp
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2010-09-01 21:23:52 -0700
committerIan Romanick <ian.d.romanick@intel.com>2010-09-09 15:39:52 -0700
commit1f3c7d968c4313dbb71bc93306556cc9292d06ef (patch)
treeb596827a1cb1f9c797457603f521fd185a9dc044 /src/glsl/builtin_function.cpp
parent2b70dbfe091af5ae7c788e16275e1af2cb1c284c (diff)
glsl2: Implement noise[1234] built-in functions using ir_unop_noise
Diffstat (limited to 'src/glsl/builtin_function.cpp')
-rw-r--r--src/glsl/builtin_function.cpp281
1 files changed, 229 insertions, 52 deletions
diff --git a/src/glsl/builtin_function.cpp b/src/glsl/builtin_function.cpp
index 7e40cd7cc9..05b2bc4391 100644
--- a/src/glsl/builtin_function.cpp
+++ b/src/glsl/builtin_function.cpp
@@ -2054,82 +2054,259 @@ static const char *builtin_noise1 =
" (signature float\n"
" (parameters\n"
" (declare (in) float x))\n"
- " ((return (constant float (0)))))\n"
+ " ((return (expression float noise (var_ref x)))))\n"
" (signature float\n"
" (parameters\n"
" (declare (in) vec2 x))\n"
- " ((return (constant float (0)))))\n"
+ " ((return (expression float noise (var_ref x)))))\n"
" (signature float\n"
" (parameters\n"
" (declare (in) vec3 x))\n"
- " ((return (constant float (0)))))\n"
+ " ((return (expression float noise (var_ref x)))))\n"
" (signature float\n"
" (parameters\n"
" (declare (in) vec4 x))\n"
- " ((return (constant float (0)))))\n"
+ " ((return (expression float noise (var_ref x)))))\n"
"))\n"
""
;
static const char *builtin_noise2 =
"((function noise2\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ((return (constant vec2 (0 0)))))\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ((return (constant vec2 (0 0)))))\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ((return (constant vec2 (0 0)))))\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ((return (constant vec2 (0 0)))))\n"
+ " (signature vec2\n"
+ " (parameters (declare (in) vec4 p))\n"
+ " (\n"
+ " (declare () float a)\n"
+ " (declare () float b)\n"
+ " (declare () vec2 t)\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec4 + (var_ref p) (constant vec4 (601.0 313.0 29.0 277.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref t) (swiz xx (var_ref a)))\n"
+ " (assign (constant bool (1)) (y) (var_ref t) (swiz xx (var_ref b)))\n"
+ " (return (var_ref t))\n"
+ " ))\n"
+ "\n"
+ " (signature vec2\n"
+ " (parameters (declare (in) vec3 p))\n"
+ " (\n"
+ " (declare () float a)\n"
+ " (declare () float b)\n"
+ " (declare () vec2 t)\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec3 + (var_ref p) (constant vec3 (601.0 313.0 29.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref t) (swiz xx (var_ref a)))\n"
+ " (assign (constant bool (1)) (y) (var_ref t) (swiz xx (var_ref b)))\n"
+ " (return (var_ref t))\n"
+ " ))\n"
+ "\n"
+ " (signature vec2\n"
+ " (parameters\n"
+ " (declare (in ) vec2 p)\n"
+ " )\n"
+ " (\n"
+ " (declare () float a)\n"
+ " (declare () float b)\n"
+ " (declare () vec2 t)\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec2 + (var_ref p) (constant vec2 (601.0 313.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref t) (swiz xx (var_ref a)))\n"
+ " (assign (constant bool (1)) (y) (var_ref t) (swiz xx (var_ref b)))\n"
+ " (return (var_ref t))\n"
+ " ))\n"
+ "\n"
+ " (signature vec2\n"
+ " (parameters\n"
+ " (declare (in ) float p)\n"
+ " )\n"
+ " (\n"
+ " (declare () float a)\n"
+ " (declare () float b)\n"
+ " (declare () vec2 t)\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression float + (var_ref p) (constant float (601.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref t) (swiz xx (var_ref a)))\n"
+ " (assign (constant bool (1)) (y) (var_ref t) (swiz xx (var_ref b)))\n"
+ " (return (var_ref t))\n"
+ " ))\n"
"))\n"
""
;
static const char *builtin_noise3 =
"((function noise3\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ((return (constant vec3 (0 0 0)))))\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ((return (constant vec3 (0 0 0)))))\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ((return (constant vec3 (0 0 0)))))\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ((return (constant vec3 (0 0 0)))))\n"
+ " (signature vec3\n"
+ " (parameters (declare (in) vec4 p))\n"
+ " (\n"
+ " (declare () float a)\n"
+ " (declare () float b)\n"
+ " (declare () float c)\n"
+ " (declare () vec3 t)\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec4 + (var_ref p) (constant vec4 (601.0 313.0 29.0 277.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref c) (expression float noise (expression vec4 + (var_ref p) (constant vec4 (1559.0 113.0 1861.0 797.0)))))\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref t) (swiz xxx (var_ref a)))\n"
+ " (assign (constant bool (1)) (y) (var_ref t) (swiz xxx (var_ref b)))\n"
+ " (assign (constant bool (1)) (z) (var_ref t) (swiz xxx (var_ref c)))\n"
+ " (return (var_ref t))\n"
+ " ))\n"
+ "\n"
+ " (signature vec3\n"
+ " (parameters (declare (in) vec3 p))\n"
+ " (\n"
+ " (declare () float a)\n"
+ " (declare () float b)\n"
+ " (declare () float c)\n"
+ " (declare () vec3 t)\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec3 + (var_ref p) (constant vec3 (601.0 313.0 29.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref c) (expression float noise (expression vec3 + (var_ref p) (constant vec3 (1559.0 113.0 1861.0)))))\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref t) (swiz xxx (var_ref a)))\n"
+ " (assign (constant bool (1)) (y) (var_ref t) (swiz xxx (var_ref b)))\n"
+ " (assign (constant bool (1)) (z) (var_ref t) (swiz xxx (var_ref c)))\n"
+ " (return (var_ref t))\n"
+ " ))\n"
+ "\n"
+ " (signature vec3\n"
+ " (parameters (declare (in) vec2 p))\n"
+ " (\n"
+ " (declare () float a)\n"
+ " (declare () float b)\n"
+ " (declare () float c)\n"
+ " (declare () vec3 t)\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec2 + (var_ref p) (constant vec2 (601.0 313.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref c) (expression float noise (expression vec2 + (var_ref p) (constant vec2 (1559.0 113.0)))))\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref t) (swiz xxx (var_ref a)))\n"
+ " (assign (constant bool (1)) (y) (var_ref t) (swiz xxx (var_ref b)))\n"
+ " (assign (constant bool (1)) (z) (var_ref t) (swiz xxx (var_ref c)))\n"
+ " (return (var_ref t))\n"
+ " ))\n"
+ "\n"
+ " (signature vec3\n"
+ " (parameters (declare (in) float p))\n"
+ " (\n"
+ " (declare () float a)\n"
+ " (declare () float b)\n"
+ " (declare () float c)\n"
+ " (declare () vec3 t)\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression float + (var_ref p) (constant float (601.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref c) (expression float noise (expression float + (var_ref p) (constant float (1559.0)))))\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref t) (swiz xxx (var_ref a)))\n"
+ " (assign (constant bool (1)) (y) (var_ref t) (swiz xxx (var_ref b)))\n"
+ " (assign (constant bool (1)) (z) (var_ref t) (swiz xxx (var_ref c)))\n"
+ " (return (var_ref t))\n"
+ " ))\n"
"))\n"
""
;
static const char *builtin_noise4 =
"((function noise4\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ((return (constant vec4 (0 0 0 0)))))\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ((return (constant vec4 (0 0 0 0)))))\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ((return (constant vec4 (0 0 0 0)))))\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ((return (constant vec4 (0 0 0 0)))))\n"
+ " (signature vec4\n"
+ " (parameters (declare (in) vec4 p))\n"
+ " (\n"
+ " (declare () float _x)\n"
+ " (declare () float _y)\n"
+ " (declare () float _z)\n"
+ " (declare () float _w)\n"
+ " (declare () vec4 _r)\n"
+ "\n"
+ " (declare () vec4 _p)\n"
+ " (assign (constant bool (1)) (xyzw) (var_ref _p) (expression vec4 + (var_ref p) (constant vec4 (1559.0 113.0 1861.0 797.0))) )\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref _x) (expression float noise(var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref _y) (expression float noise(expression vec4 + (var_ref p) (constant vec4 (601.0 313.0 29.0 277.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref _z) (expression float noise(var_ref _p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref _w) (expression float noise(expression vec4 + (var_ref _p) (constant vec4 (601.0 313.0 29.0 277.0)))))\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref _r) (swiz xxxx (var_ref _x)))\n"
+ " (assign (constant bool (1)) (y) (var_ref _r) (swiz xxxx (var_ref _y)))\n"
+ " (assign (constant bool (1)) (z) (var_ref _r) (swiz xxxx (var_ref _z)))\n"
+ " (assign (constant bool (1)) (w) (var_ref _r) (swiz xxxx (var_ref _w)))\n"
+ " (return (var_ref _r))\n"
+ " ))\n"
+ "\n"
+ " (signature vec4\n"
+ " (parameters (declare (in) vec3 p))\n"
+ " (\n"
+ " (declare () float _x)\n"
+ " (declare () float _y)\n"
+ " (declare () float _z)\n"
+ " (declare () float _w)\n"
+ " (declare () vec4 _r)\n"
+ "\n"
+ " (declare () vec3 _p)\n"
+ " (assign (constant bool (1)) (xyz) (var_ref _p) (expression vec3 + (var_ref p) (constant vec3 (1559.0 113.0 1861.0))) )\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref _x) (expression float noise(var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref _y) (expression float noise(expression vec3 + (var_ref p) (constant vec3 (601.0 313.0 29.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref _z) (expression float noise(var_ref _p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref _w) (expression float noise(expression vec3 + (var_ref _p) (constant vec3 (601.0 313.0 29.0)))))\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref _r) (swiz xxxx (var_ref _x)))\n"
+ " (assign (constant bool (1)) (y) (var_ref _r) (swiz xxxx (var_ref _y)))\n"
+ " (assign (constant bool (1)) (z) (var_ref _r) (swiz xxxx (var_ref _z)))\n"
+ " (assign (constant bool (1)) (w) (var_ref _r) (swiz xxxx (var_ref _w)))\n"
+ " (return (var_ref _r))\n"
+ " ))\n"
+ "\n"
+ " (signature vec4\n"
+ " (parameters (declare (in) vec2 p))\n"
+ " (\n"
+ " (declare () float _x)\n"
+ " (declare () float _y)\n"
+ " (declare () float _z)\n"
+ " (declare () float _w)\n"
+ " (declare () vec4 _r)\n"
+ "\n"
+ " (declare () vec2 _p)\n"
+ " (assign (constant bool (1)) (xy) (var_ref _p) (expression vec2 + (var_ref p) (constant vec2 (1559.0 113.0))) )\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref _x) (expression float noise(var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref _y) (expression float noise(expression vec2 + (var_ref p) (constant vec2 (601.0 313.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref _z) (expression float noise(var_ref _p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref _w) (expression float noise(expression vec2 + (var_ref _p) (constant vec2 (601.0 313.0)))))\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref _r) (swiz xxxx (var_ref _x)))\n"
+ " (assign (constant bool (1)) (y) (var_ref _r) (swiz xxxx (var_ref _y)))\n"
+ " (assign (constant bool (1)) (z) (var_ref _r) (swiz xxxx (var_ref _z)))\n"
+ " (assign (constant bool (1)) (w) (var_ref _r) (swiz xxxx (var_ref _w)))\n"
+ " (return (var_ref _r))\n"
+ " ))\n"
+ "\n"
+ " (signature vec4\n"
+ " (parameters (declare (in) float p))\n"
+ " (\n"
+ " (declare () float _x)\n"
+ " (declare () float _y)\n"
+ " (declare () float _z)\n"
+ " (declare () float _w)\n"
+ " (declare () vec4 _r)\n"
+ "\n"
+ " (declare () float _p)\n"
+ " (assign (constant bool (1)) (xy) (var_ref _p) (expression float + (var_ref p) (constant float (1559.0))) )\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref _x) (expression float noise(var_ref p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref _y) (expression float noise(expression float + (var_ref p) (constant float (601.0 313.0 29.0 277.0)))))\n"
+ " (assign (constant bool (1)) (x) (var_ref _z) (expression float noise(var_ref _p)))\n"
+ " (assign (constant bool (1)) (x) (var_ref _w) (expression float noise(expression float + (var_ref _p) (constant float (601.0 313.0 29.0 277.0)))))\n"
+ "\n"
+ " (assign (constant bool (1)) (x) (var_ref _r) (swiz xxxx (var_ref _x)))\n"
+ " (assign (constant bool (1)) (y) (var_ref _r) (swiz xxxx (var_ref _y)))\n"
+ " (assign (constant bool (1)) (z) (var_ref _r) (swiz xxxx (var_ref _z)))\n"
+ " (assign (constant bool (1)) (w) (var_ref _r) (swiz xxxx (var_ref _w)))\n"
+ " (return (var_ref _r))\n"
+ " ))\n"
"))\n"
""
;