noise functions

This commit is contained in:
Brian 2007-01-28 19:01:35 -07:00
parent f94e4f216f
commit 7aece10039
9 changed files with 214 additions and 139 deletions

View file

@ -150,6 +150,10 @@ static const struct instruction_info InstInfo[MAX_OPCODE] = {
{ OPCODE_MIN, "MIN", 2 },
{ OPCODE_MOV, "MOV", 1 },
{ OPCODE_MUL, "MUL", 2 },
{ OPCODE_NOISE1, "NOISE1", 1 },
{ OPCODE_NOISE2, "NOISE2", 1 },
{ OPCODE_NOISE3, "NOISE3", 1 },
{ OPCODE_NOISE4, "NOISE4", 1 },
{ OPCODE_PK2H, "PK2H", 1 },
{ OPCODE_PK2US, "PK2US", 1 },
{ OPCODE_PK4B, "PK4B", 1 },

View file

@ -172,6 +172,10 @@ typedef enum prog_opcode {
OPCODE_MIN, /* X X X X X */
OPCODE_MOV, /* X X X X X */
OPCODE_MUL, /* X X X X X */
OPCODE_NOISE1, /* X */
OPCODE_NOISE2, /* X */
OPCODE_NOISE3, /* X */
OPCODE_NOISE4, /* X */
OPCODE_PK2H, /* X */
OPCODE_PK2US, /* X */
OPCODE_PK4B, /* X */

View file

@ -1699,123 +1699,107 @@ vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord) {
// AUTHOR: Stefan Gustavson (stegu@itn.liu.se), Nov 26, 2005
//
float noise1 (float x) {
float a;
__asm float_noise1 a, x;
return a;
float noise1(const float x)
{
__asm float_noise1 __retVal, x;
}
float noise1 (vec2 x) {
float a;
__asm float_noise2 a, x;
return a;
float noise1(const vec2 x)
{
__asm float_noise2 __retVal, x;
}
float noise1 (vec3 x) {
float a;
__asm float_noise3 a, x;
return a;
float noise1(const vec3 x)
{
__asm float_noise3 __retVal, x;
}
float noise1 (vec4 x) {
float a;
__asm float_noise4 a, x;
return a;
float noise1(const vec4 x)
{
__asm float_noise4 __retVal, x;
}
vec2 noise2 (float x) {
return vec2 (
noise1 (x),
noise1 (x + 19.34)
);
vec2 noise2(const float x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + 19.34);
}
vec2 noise2 (vec2 x) {
return vec2 (
noise1 (x),
noise1 (x + vec2 (19.34, 7.66))
);
vec2 noise2(const vec2 x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + vec2(19.34, 7.66));
}
vec2 noise2 (vec3 x) {
return vec2 (
noise1 (x),
noise1 (x + vec3 (19.34, 7.66, 3.23))
);
vec2 noise2(const vec3 x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + vec3(19.34, 7.66, 3.23));
}
vec2 noise2 (vec4 x) {
return vec2 (
noise1 (x),
noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77))
);
vec2 noise2(const vec4 x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + vec4(19.34, 7.66, 3.23, 2.77));
}
vec3 noise3 (float x) {
return vec3 (
noise1 (x),
noise1 (x + 19.34),
noise1 (x + 5.47)
);
vec3 noise3(const float x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + 19.34);
__retVal.z = noise1(x + 5.47);
}
vec3 noise3 (vec2 x) {
return vec3 (
noise1 (x),
noise1 (x + vec2 (19.34, 7.66)),
noise1 (x + vec2 (5.47, 17.85))
);
vec3 noise3(const vec2 x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + vec2(19.34, 7.66));
__retVal.z = noise1(x + vec2(5.47, 17.85));
}
vec3 noise3 (vec3 x) {
return vec3 (
noise1 (x),
noise1 (x + vec3 (19.34, 7.66, 3.23)),
noise1 (x + vec3 (5.47, 17.85, 11.04))
);
vec3 noise3(const vec3 x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + vec3(19.34, 7.66, 3.23));
__retVal.z = noise1(x + vec3(5.47, 17.85, 11.04));
}
vec3 noise3 (vec4 x) {
return vec3 (
noise1 (x),
noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77)),
noise1 (x + vec4 (5.47, 17.85, 11.04, 13.19))
);
vec3 noise3(const vec4 x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + vec4(19.34, 7.66, 3.23, 2.77));
__retVal.z = noise1(x + vec4(5.47, 17.85, 11.04, 13.19));
}
vec4 noise4 (float x) {
return vec4 (
noise1 (x),
noise1 (x + 19.34),
noise1 (x + 5.47),
noise1 (x + 23.54)
);
vec4 noise4(const float x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + 19.34);
__retVal.z = noise1(x + 5.47);
__retVal.w = noise1(x + 23.54);
}
vec4 noise4 (vec2 x) {
return vec4 (
noise1 (x),
noise1 (x + vec2 (19.34, 7.66)),
noise1 (x + vec2 (5.47, 17.85)),
noise1 (x + vec2 (23.54, 29.11))
);
vec4 noise4(const vec2 x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + vec2 (19.34, 7.66));
__retVal.z = noise1(x + vec2 (5.47, 17.85));
__retVal.w = noise1(x + vec2 (23.54, 29.11));
}
vec4 noise4 (vec3 x) {
return vec4 (
noise1 (x),
noise1 (x + vec3 (19.34, 7.66, 3.23)),
noise1 (x + vec3 (5.47, 17.85, 11.04)),
noise1 (x + vec3 (23.54, 29.11, 31.91))
);
vec4 noise4(const vec3 x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + vec3(19.34, 7.66, 3.23));
__retVal.z = noise1(x + vec3(5.47, 17.85, 11.04));
__retVal.w = noise1(x + vec3(23.54, 29.11, 31.91));
}
vec4 noise4 (vec4 x) {
return vec4 (
noise1 (x),
noise1 (x + vec4 (19.34, 7.66, 3.23, 2.77)),
noise1 (x + vec4 (5.47, 17.85, 11.04, 13.19)),
noise1 (x + vec4 (23.54, 29.11, 31.91, 37.48))
);
vec4 noise4(const vec4 x)
{
__retVal.x = noise1(x);
__retVal.y = noise1(x + vec4(19.34, 7.66, 3.23, 2.77));
__retVal.z = noise1(x + vec4(5.47, 17.85, 11.04, 13.19));
__retVal.w = noise1(x + vec4(23.54, 29.11, 31.91, 37.48));
}

View file

@ -717,54 +717,68 @@
100,0,0,0,1,8,58,115,104,97,100,111,119,50,68,0,18,115,97,109,112,108,101,114,0,0,58,118,101,99,51,
0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,
59,116,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,
100,0,59,113,0,49,0,0,0,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,97,0,
0,0,4,102,108,111,97,116,95,110,111,105,115,101,49,0,18,97,0,0,18,120,0,0,0,8,18,97,0,0,0,1,0,9,0,
110,111,105,115,101,49,0,1,0,0,10,120,0,0,0,1,3,2,0,9,1,97,0,0,0,4,102,108,111,97,116,95,110,111,
105,115,101,50,0,18,97,0,0,18,120,0,0,0,8,18,97,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,11,
120,0,0,0,1,3,2,0,9,1,97,0,0,0,4,102,108,111,97,116,95,110,111,105,115,101,51,0,18,97,0,0,18,120,0,
0,0,8,18,97,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,12,120,0,0,0,1,3,2,0,9,1,97,0,0,0,4,102,
108,111,97,116,95,110,111,105,115,101,52,0,18,97,0,0,18,120,0,0,0,8,18,97,0,0,0,1,0,10,0,110,111,
105,115,101,50,0,1,0,0,9,120,0,0,0,1,8,58,118,101,99,50,0,58,110,111,105,115,101,49,0,18,120,0,0,0,
0,58,110,111,105,115,101,49,0,18,120,0,17,49,57,0,51,52,0,0,46,0,0,0,0,0,0,1,0,10,0,110,111,105,
115,101,50,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,
58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,
0,46,0,0,0,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,50,0,58,
110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,
49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,0,46,0,0,0,0,0,0,1,0,10,0,110,111,105,
115,101,50,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,50,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,
58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,
17,51,0,50,51,0,0,0,17,50,0,55,55,0,0,0,0,46,0,0,0,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,9,
120,0,0,0,1,8,58,118,101,99,51,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,
49,0,18,120,0,17,49,57,0,51,52,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,17,53,0,52,55,0,0,
46,0,0,0,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,51,0,58,110,
111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,49,
57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,
50,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,0,46,0,0,0,0,0,0,1,0,11,0,110,111,105,115,101,51,0,
1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,
105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,
51,0,0,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,53,0,52,55,0,0,0,17,
49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,0,46,0,0,0,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,
0,12,120,0,0,0,1,8,58,118,101,99,51,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,
115,101,49,0,18,120,0,58,118,101,99,52,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,
0,0,0,17,50,0,55,55,0,0,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,53,
0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,17,49,51,0,49,57,0,0,0,0,46,0,0,0,0,0,
0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,9,120,0,0,0,1,8,58,118,101,99,52,0,58,110,111,105,115,
101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,17,49,57,0,51,52,0,0,46,0,0,0,58,110,
111,105,115,101,49,0,18,120,0,17,53,0,52,55,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,17,
50,51,0,53,52,0,0,46,0,0,0,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,10,120,0,0,0,1,8,58,118,
101,99,52,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,
101,99,50,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,
120,0,58,118,101,99,50,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,0,46,0,0,0,58,110,111,105,115,
101,49,0,18,120,0,58,118,101,99,50,0,17,50,51,0,53,52,0,0,0,17,50,57,0,49,49,0,0,0,0,46,0,0,0,0,0,
0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,52,0,58,110,111,105,115,
101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,49,57,0,51,52,0,
0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,
101,99,51,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,0,46,0,0,0,58,110,
111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,50,51,0,53,52,0,0,0,17,50,57,0,49,49,0,0,0,17,
51,49,0,57,49,0,0,0,0,46,0,0,0,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,12,120,0,0,0,1,8,58,
118,101,99,52,0,58,110,111,105,115,101,49,0,18,120,0,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,
100,0,59,113,0,49,0,0,0,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,1,0,9,120,0,0,0,1,4,102,108,111,
97,116,95,110,111,105,115,101,49,0,18,95,95,114,101,116,86,97,108,0,0,18,120,0,0,0,0,1,0,9,0,110,
111,105,115,101,49,0,1,1,0,10,120,0,0,0,1,4,102,108,111,97,116,95,110,111,105,115,101,50,0,18,95,
95,114,101,116,86,97,108,0,0,18,120,0,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,1,0,11,120,0,0,0,1,
4,102,108,111,97,116,95,110,111,105,115,101,51,0,18,95,95,114,101,116,86,97,108,0,0,18,120,0,0,0,0,
1,0,9,0,110,111,105,115,101,49,0,1,1,0,12,120,0,0,0,1,4,102,108,111,97,116,95,110,111,105,115,101,
52,0,18,95,95,114,101,116,86,97,108,0,0,18,120,0,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,1,0,9,
120,0,0,0,1,9,18,95,95,114,101,116,86,97,108,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,
20,0,9,18,95,95,114,101,116,86,97,108,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,17,49,57,0,
51,52,0,0,46,0,0,20,0,0,1,0,10,0,110,111,105,115,101,50,0,1,1,0,10,120,0,0,0,1,9,18,95,95,114,101,
116,86,97,108,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,95,95,114,101,116,86,
97,108,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,49,57,0,51,52,0,0,0,
17,55,0,54,54,0,0,0,0,46,0,0,20,0,0,1,0,10,0,110,111,105,115,101,50,0,1,1,0,11,120,0,0,0,1,9,18,95,
95,114,101,116,86,97,108,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,95,95,114,
101,116,86,97,108,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,49,57,0,51,
52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,0,46,0,0,20,0,0,1,0,10,0,110,111,105,115,101,50,0,
1,1,0,12,120,0,0,0,1,9,18,95,95,114,101,116,86,97,108,0,59,120,0,58,110,111,105,115,101,49,0,18,
120,0,0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,
118,101,99,52,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,17,50,0,55,55,0,0,0,
0,46,0,0,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,52,0,17,53,0,52,55,0,0,0,17,49,55,0,
56,53,0,0,0,17,49,49,0,48,52,0,0,0,17,49,51,0,49,57,0,0,0,0,46,0,0,0,58,110,111,105,115,101,49,0,
18,120,0,58,118,101,99,52,0,17,50,51,0,53,52,0,0,0,17,50,57,0,49,49,0,0,0,17,51,49,0,57,49,0,0,0,
17,51,55,0,52,56,0,0,0,0,46,0,0,0,0,0,0,0
0,46,0,0,20,0,0,1,0,11,0,110,111,105,115,101,51,0,1,1,0,9,120,0,0,0,1,9,18,95,95,114,101,116,86,97,
108,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,
121,0,58,110,111,105,115,101,49,0,18,120,0,17,49,57,0,51,52,0,0,46,0,0,20,0,9,18,95,95,114,101,116,
86,97,108,0,59,122,0,58,110,111,105,115,101,49,0,18,120,0,17,53,0,52,55,0,0,46,0,0,20,0,0,1,0,11,0,
110,111,105,115,101,51,0,1,1,0,10,120,0,0,0,1,9,18,95,95,114,101,116,86,97,108,0,59,120,0,58,110,
111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,121,0,58,110,111,105,
115,101,49,0,18,120,0,58,118,101,99,50,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,0,46,0,0,20,0,
9,18,95,95,114,101,116,86,97,108,0,59,122,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,
0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,0,46,0,0,20,0,0,1,0,11,0,110,111,105,115,101,51,0,1,1,
0,11,120,0,0,0,1,9,18,95,95,114,101,116,86,97,108,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,
0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,
101,99,51,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,0,46,0,0,20,0,9,18,95,
95,114,101,116,86,97,108,0,59,122,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,53,
0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,0,46,0,0,20,0,0,1,0,11,0,110,111,105,
115,101,51,0,1,1,0,12,120,0,0,0,1,9,18,95,95,114,101,116,86,97,108,0,59,120,0,58,110,111,105,115,
101,49,0,18,120,0,0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,121,0,58,110,111,105,115,101,49,0,
18,120,0,58,118,101,99,52,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,17,50,0,
55,55,0,0,0,0,46,0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,122,0,58,110,111,105,115,101,49,0,
18,120,0,58,118,101,99,52,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,17,
49,51,0,49,57,0,0,0,0,46,0,0,20,0,0,1,0,12,0,110,111,105,115,101,52,0,1,1,0,9,120,0,0,0,1,9,18,95,
95,114,101,116,86,97,108,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,95,95,114,
101,116,86,97,108,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,17,49,57,0,51,52,0,0,46,0,0,20,0,
9,18,95,95,114,101,116,86,97,108,0,59,122,0,58,110,111,105,115,101,49,0,18,120,0,17,53,0,52,55,0,0,
46,0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,119,0,58,110,111,105,115,101,49,0,18,120,0,17,50,
51,0,53,52,0,0,46,0,0,20,0,0,1,0,12,0,110,111,105,115,101,52,0,1,1,0,10,120,0,0,0,1,9,18,95,95,114,
101,116,86,97,108,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,0,20,0,9,18,95,95,114,101,116,
86,97,108,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,49,57,0,51,52,0,0,
0,17,55,0,54,54,0,0,0,0,46,0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,122,0,58,110,111,105,115,
101,49,0,18,120,0,58,118,101,99,50,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,0,46,0,0,20,0,9,18,
95,95,114,101,116,86,97,108,0,59,119,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,50,0,17,
50,51,0,53,52,0,0,0,17,50,57,0,49,49,0,0,0,0,46,0,0,20,0,0,1,0,12,0,110,111,105,115,101,52,0,1,1,0,
11,120,0,0,0,1,9,18,95,95,114,101,116,86,97,108,0,59,120,0,58,110,111,105,115,101,49,0,18,120,0,0,
0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,
99,51,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,0,46,0,0,20,0,9,18,95,95,
114,101,116,86,97,108,0,59,122,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,53,0,
52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,0,46,0,0,20,0,9,18,95,95,114,101,116,86,
97,108,0,59,119,0,58,110,111,105,115,101,49,0,18,120,0,58,118,101,99,51,0,17,50,51,0,53,52,0,0,0,
17,50,57,0,49,49,0,0,0,17,51,49,0,57,49,0,0,0,0,46,0,0,20,0,0,1,0,12,0,110,111,105,115,101,52,0,1,
1,0,12,120,0,0,0,1,9,18,95,95,114,101,116,86,97,108,0,59,120,0,58,110,111,105,115,101,49,0,18,120,
0,0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,121,0,58,110,111,105,115,101,49,0,18,120,0,58,118,
101,99,52,0,17,49,57,0,51,52,0,0,0,17,55,0,54,54,0,0,0,17,51,0,50,51,0,0,0,17,50,0,55,55,0,0,0,0,
46,0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,122,0,58,110,111,105,115,101,49,0,18,120,0,58,
118,101,99,52,0,17,53,0,52,55,0,0,0,17,49,55,0,56,53,0,0,0,17,49,49,0,48,52,0,0,0,17,49,51,0,49,57,
0,0,0,0,46,0,0,20,0,9,18,95,95,114,101,116,86,97,108,0,59,119,0,58,110,111,105,115,101,49,0,18,120,
0,58,118,101,99,52,0,17,50,51,0,53,52,0,0,0,17,50,57,0,49,49,0,0,0,17,51,49,0,57,49,0,0,0,17,51,55,
0,52,56,0,0,0,0,46,0,0,20,0,0,0

View file

@ -494,6 +494,11 @@ static slang_asm_info AsmInfo[] = {
{ "float_rcp", IR_RCP, 1, 1 },
{ "float_sine", IR_SIN, 1, 1 },
{ "float_cosine", IR_COS, 1, 1 },
{ "float_noise1", IR_NOISE1, 1, 1},
{ "float_noise2", IR_NOISE2, 1, 1},
{ "float_noise3", IR_NOISE3, 1, 1},
{ "float_noise4", IR_NOISE4, 1, 1},
{ NULL, IR_NOP, 0, 0 }
};
@ -1657,6 +1662,8 @@ _slang_gen_var_decl(slang_assemble_ctx *A, slang_variable *var)
/**
* Generate code for a selection expression: b ? x : y
* XXX in some cases we could implement a selection expression
* with an LRP instruction (use the boolean as the interpolant).
*/
static slang_ir_node *
_slang_gen_select(slang_assemble_ctx *A, slang_operation *oper)

View file

@ -89,6 +89,11 @@ static slang_ir_info IrInfo[] = {
{ IR_DDX, "IR_DDY", OPCODE_DDX, 4, 1 },
{ IR_SIN, "IR_SIN", OPCODE_SIN, 1, 1 },
{ IR_COS, "IR_COS", OPCODE_COS, 1, 1 },
{ IR_NOISE1, "IR_NOISE1", OPCODE_NOISE1, 1, 1 },
{ IR_NOISE2, "IR_NOISE2", OPCODE_NOISE2, 1, 1 },
{ IR_NOISE3, "IR_NOISE3", OPCODE_NOISE3, 1, 1 },
{ IR_NOISE4, "IR_NOISE4", OPCODE_NOISE4, 1, 1 },
/* other */
{ IR_SEQ, "IR_SEQ", OPCODE_NOP, 0, 0 },
{ IR_SCOPE, "IR_SCOPE", OPCODE_NOP, 0, 0 },
@ -994,6 +999,10 @@ emit(slang_var_table *vt, slang_ir_node *n, struct gl_program *prog)
case IR_COS:
case IR_DDX:
case IR_DDY:
case IR_NOISE1:
case IR_NOISE2:
case IR_NOISE3:
case IR_NOISE4:
/* binary */
case IR_ADD:
case IR_SUB:

View file

@ -84,6 +84,10 @@ typedef enum
IR_DDY, /* derivative w.r.t. Y */
IR_SIN, /* sine */
IR_COS, /* cosine */
IR_NOISE1, /* noise(x) */
IR_NOISE2, /* noise(x, y) */
IR_NOISE3, /* noise(x, y, z) */
IR_NOISE4, /* noise(x, y, z, w) */
IR_NOT, /* logical not */
IR_VAR, /* variable reference */
IR_VAR_DECL,/* var declaration */

View file

@ -32,6 +32,7 @@
#include "s_fragprog.h"
#include "s_span.h"
#include "slang_library_noise.h"
/* See comments below for info about this */
@ -1133,6 +1134,50 @@ execute_program( GLcontext *ctx,
}
}
break;
case OPCODE_NOISE1:
{
GLfloat a[4], result[4];
fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
result[0] =
result[1] =
result[2] =
result[3] = _slang_library_noise1(a[0]);
store_vector4( inst, machine, result );
}
break;
case OPCODE_NOISE2:
{
GLfloat a[4], result[4];
fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
result[0] =
result[1] =
result[2] =
result[3] = _slang_library_noise2(a[0], a[1]);
store_vector4( inst, machine, result );
}
break;
case OPCODE_NOISE3:
{
GLfloat a[4], result[4];
fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
result[0] =
result[1] =
result[2] =
result[3] = _slang_library_noise3(a[0], a[1], a[2]);
store_vector4( inst, machine, result );
}
break;
case OPCODE_NOISE4:
{
GLfloat a[4], result[4];
fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
result[0] =
result[1] =
result[2] =
result[3] = _slang_library_noise4(a[0], a[1], a[2], a[3]);
store_vector4( inst, machine, result );
}
break;
case OPCODE_NOP:
break;
case OPCODE_PK2H: /* pack two 16-bit floats in one 32-bit float */

View file

@ -766,6 +766,10 @@ static void (* const opcode_func[MAX_OPCODE+3])(struct arb_vp_machine *, union i
do_MIN,
do_MOV,
do_MUL,
do_NOP,/*NOISE1*/
do_NOP,/*NOISE2*/
do_NOP,/*NOISE3*/
do_NOP,/*NOISE4*/
do_NOP,/*PK2H*/
do_NOP,/*PK2US*/
do_NOP,/*PK4B*/