Exemplo n.º 1
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            // Get control (0-1):
            double control = ControlModule.GetWrapped(x, y, wrap);

            int count = Sources.Length - 1;

            if (count == 0)
            {
                return(control);
            }
            else if (count == 1)
            {
                return(Sources[1].GetWrapped(x, y, wrap));
            }

            // Reduce count (such that it ranges from 0->count-1):
            count--;

            // Map to being relative to the points:
            control *= (double)count;

            int index = (int)control;

            if (index < 0)
            {
                // Sample it:
                return(Sources[1].GetWrapped(x, y, wrap));
            }
            else if (index >= count)
            {
                // Sample there:
                return(Sources[count + 1].GetWrapped(x, y, wrap));
            }
            else
            {
                // Make relative:
                control -= (double)index;
            }

            // Control is now 0-1 relative to Sources[index+1].

            // Get current:
            TextureNode current = Sources[index + 1];

            if (control == 0)
            {
                // Just read it:
                return(current.GetWrapped(x, y, wrap));
            }

            // Note that index is never equal to (actual count-1), therefore next is just:
            TextureNode next = Sources[index + 2];

            // Blend:
            double a = current.GetWrapped(x, y, wrap);
            double b = next.GetWrapped(x, y, wrap);

            return(a + ((b - a) * control));
        }
Exemplo n.º 2
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            // Read coords:
            double lookX = (XModule == null)?0:XModule.GetWrapped(x, y, wrap);
            double lookY = (YModule == null)?0:YModule.GetWrapped(x, y, wrap);

            // Read:
            return(SourceModule.GetWrapped(lookX, lookY, wrap));
        }
Exemplo n.º 3
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            // Act like intensity:
            double sum = RedModule.GetWrapped(x, y, wrap);

            sum += GreenModule.GetWrapped(x, y, wrap);
            sum += BlueModule.GetWrapped(x, y, wrap);

            return(sum / 3.0);
        }
Exemplo n.º 4
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            double toNearest = ToNearestModule.GetWrapped(x, y, wrap);

            if (toNearest == 0)
            {
                return(0);
            }

            return(toNearest * System.Math.Floor(SourceModule.GetWrapped(x, y, wrap) / toNearest));
        }
Exemplo n.º 5
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            double deg = DegreeModule.GetWrapped(x, y, wrap);

            if (deg == 0)
            {
                return(0);
            }

            return(System.Math.Pow(SourceModule.GetWrapped(x, y, wrap), 1.0 / deg));
        }
Exemplo n.º 6
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            if (SourceModule == null)
            {
                return(0);
            }

            double baseValue = SourceModule.GetWrapped(x, y, wrap);
            double sat       = 1f + SaturationModule.GetWrapped(x, y, wrap);

            return(baseValue * sat);
        }
Exemplo n.º 7
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            if (SourceModule == null)
            {
                return(0);
            }

            double baseValue = SourceModule.GetWrapped(x, y, wrap);
            double contrast  = 1.0 + ContrastModule.GetWrapped(x, y, wrap);

            return(((baseValue - 0.5) * contrast) + 0.5);
        }
Exemplo n.º 8
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            if (SourceModule == null)
            {
                return(0);
            }

            double baseValue = SourceModule.GetWrapped(x, y, wrap);
            double luminance = 1.0 + LuminanceModule.GetWrapped(x, y, wrap);

            return(baseValue * luminance);
        }
Exemplo n.º 9
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            if (SourceModule == null)
            {
                return(0);
            }

            double baseValue = SourceModule.GetWrapped(x, y, wrap);
            double hue       = 1f + HueModule.GetWrapped(x, y, wrap);

            return(baseValue * hue);
        }
Exemplo n.º 10
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            if (SourceModule == null)
            {
                return(0);
            }

            double baseValue  = SourceModule.GetWrapped(x, y, wrap);
            double brightness = BrightnessModule.GetWrapped(x, y, wrap);

            return(baseValue + brightness);
        }
Exemplo n.º 11
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            if (SourceModule == null)
            {
                return(0);
            }

            double baseValue = SourceModule.GetWrapped(x, y, wrap);
            double hue       = HueModule.GetWrapped(x, y, wrap);

            // Cycle the hue:
            return((baseValue + hue) % 1f);
        }
Exemplo n.º 12
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            // Read value:
            double value = SourceModule.GetWrapped(x, y, wrap);

            // Read min of range:
            double min = BlackModule.GetWrapped(x, y, wrap);

            // Divide by range:
            value /= (WhiteModule.GetWrapped(x, y, wrap) - min);

            // Offset:
            return(value + min);
        }
Exemplo n.º 13
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            double value = SourceModule.GetWrapped(x, y, wrap);
            double lower = LowerBound.GetWrapped(x, y, wrap);
            double upper = UpperBound.GetWrapped(x, y, wrap);

            if (value < lower)
            {
                return(lower);
            }
            else if (value > upper)
            {
                return(upper);
            }

            return(value);
        }
Exemplo n.º 14
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            // Get the angle to rotate by (rad):
            double deltaAngle = RotationModule.GetWrapped(x, y, wrap);

            // rotate the point x/y deltaAngle about 0.5/0.5
            x -= 0.5;
            y -= 0.5;

            // Get sin/cos:
            double cAngle = System.Math.Cos(deltaAngle);
            double sAngle = System.Math.Sin(deltaAngle);

            double tx = x * cAngle - y * sAngle;

            y = y * cAngle + x * sAngle;
            x = tx;

            x += 0.5;
            y += 0.5;

            return(SourceModule.GetWrapped(x, y, wrap));
        }
Exemplo n.º 15
0
 public override double GetWrapped(double x, double y, int wrap)
 {
     // Act like intensity:
     return(LightModule.GetWrapped(x, y, wrap));
 }
Exemplo n.º 16
0
        public override double GetWrapped(double x, double y, int wrap)
        {
            double controlValue = ControlModule.GetWrapped(x, y, wrap);
            double alpha;

            double lowerBound  = LowerBound.GetWrapped(x, y, wrap);
            double upperBound  = UpperBound.GetWrapped(x, y, wrap);
            double edgeFalloff = EdgeFalloff.GetWrapped(x, y, wrap);

            if (edgeFalloff > 0.0)
            {
                if (controlValue < (lowerBound - edgeFalloff))
                {
                    // The output value from the control module is below the selector
                    // threshold; return the output value from the first source module.
                    return(SourceModule1.GetWrapped(x, y, wrap));
                }
                else if (controlValue < (lowerBound + edgeFalloff))
                {
                    // The output value from the control module is near the lower end of the
                    // selector threshold and within the smooth curve. Interpolate between
                    // the output values from the first and second source modules.
                    double lowerCurve = (lowerBound - edgeFalloff);
                    double upperCurve = (lowerBound + edgeFalloff);
                    alpha = Loonim.Math.SCurve3((controlValue - lowerCurve) / (upperCurve - lowerCurve));
                    return(Loonim.Math.LinearInterpolate(SourceModule1.GetWrapped(x, y, wrap),
                                                         SourceModule2.GetWrapped(x, y, wrap), alpha));
                }
                else if (controlValue < (upperBound - edgeFalloff))
                {
                    // The output value from the control module is within the selector
                    // threshold; return the output value from the second source module.
                    return(SourceModule2.GetWrapped(x, y, wrap));
                }
                else if (controlValue < (upperBound + edgeFalloff))
                {
                    // The output value from the control module is near the upper end of the
                    // selector threshold and within the smooth curve. Interpolate between
                    // the output values from the first and second source modules.
                    double lowerCurve = (upperBound - edgeFalloff);
                    double upperCurve = (upperBound + edgeFalloff);
                    alpha = Loonim.Math.SCurve3(
                        (controlValue - lowerCurve) / (upperCurve - lowerCurve));
                    return(Loonim.Math.LinearInterpolate(SourceModule2.GetWrapped(x, y, wrap),
                                                         SourceModule1.GetWrapped(x, y, wrap),
                                                         alpha));
                }
                else
                {
                    // Output value from the control module is above the selector threshold;
                    // return the output value from the first source module.
                    return(SourceModule1.GetWrapped(x, y, wrap));
                }
            }
            else
            {
                if (controlValue < lowerBound || controlValue > upperBound)
                {
                    return(SourceModule1.GetWrapped(x, y, wrap));
                }
                else
                {
                    return(SourceModule2.GetWrapped(x, y, wrap));
                }
            }
        }
Exemplo n.º 17
0
 public override double GetWrapped(double x, double y, int wrap)
 {
     return(System.Math.Pow(BaseModule.GetWrapped(x, y, wrap), PowerModule.GetWrapped(x, y, wrap)));
 }
Exemplo n.º 18
0
 public override double GetWrapped(double x, double y, int wrap)
 {
     return(DividendModule.GetWrapped(x, y, wrap) % DivisorModule.GetWrapped(x, y, wrap));
 }
Exemplo n.º 19
0
 public override double GetWrapped(double x, double y, int wrap)
 {
     return(SourceModule.GetWrapped(x, y, wrap) + AlphaModule.GetWrapped(x, y, wrap));
 }
Exemplo n.º 20
0
 public override double GetWrapped(double x, double y, int wrap)
 {
     return(System.Math.Log(SourceModule.GetWrapped(x, y, wrap), BaseModule.GetWrapped(x, y, wrap)));
 }