```Object
common:Generic
common:Transfer
```

`class Transfer:DefaultGradientTransfer`

Provides the same gradient transfer options as Ultra Fractal's built-in gradient options.

This transfer function emulates the normal gradient transfer method. It's designed primarily for conversion of a positive float to a final gradient index (also positive float) but does not mod it from 0 to 1 making it potentially useful for other transform purposes. Note that it deliberately returns negative values unchanged to ensure normal gradient behaviour. David Makin, May 2008

Ultra Fractal Source
``` class DefaultGradientTransfer(Transfer) {
; Provides the same gradient transfer options as Ultra Fractal's built-in gradient options.
; <p>
; This transfer function emulates the normal gradient transfer method.
; It's designed primarily for conversion of a positive float to a final
; gradient index (also positive float) but does not mod it from 0 to 1
; making it potentially useful for other transform purposes.
; Note that it deliberately returns negative values unchanged
; to ensure normal gradient behaviour.
; David Makin, May 2008

public:
float func Iterate(float pr)
if (pr < 0.0)
return @p_offset*0.0025
endif
float x = pr * @p_zscale
if (@p_xfer == "Sqr")
x = 2*sqr(x)
elseif (@p_xfer == "Sqrt")
x = 0.5*sqrt(x)
elseif (@p_xfer == "Cube")
x = 3*x^3
elseif (@p_xfer == "CubeRoot")
x = (x^(1/3))/3
elseif (@p_xfer == "Log")
x = log(1+x)
elseif (@p_xfer == "Exp")
if (x >= 100)
x = exp(100)
else
x = exp(x)
endif
elseif (@p_xfer == "Sin")
x = abs(sin(x))
elseif (@p_xfer == "ArcTan")
x = abs(atan(x))
elseif (@p_xfer == "Cos")
x = 1+cos(x)
elseif (@p_xfer == "LogTan")
x = log(1+abs(tan(x)))
elseif (@p_xfer == "LogLog")
x = log(1+log(1+x))
elseif (@p_xfer == "InvArcTan")
x = 0.0005*((2.0*#pi/atan(x))^2.0 - 1)
endif
return 0.0025*@p_offset + x * @p_zscale2
endfunc

default:

default = 101
hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used."
endparam

param p_xfer
caption = "Transfer Function"
default = 0
enum = "Linear" "Sqr" "Sqrt" "Cube" "CubeRoot" "Log" "Exp" "Sin" "ArcTan" "Cos" "LogTan" "LogLog" "InvArcTan"
hint = "This function will be applied to the value."
endparam
param p_zscale
caption = "Pre-Scale (Density)"
default = 1.0
exponential = true
hint = "Applied prior to the 'Transfer Function'."
endparam
param p_zscale2
caption = "Post-Scale"
default = 1.0
exponential = true
hint = "Applied after the 'Transfer Function'."
endparam
param p_offset
caption = "Offset"
default = 0.0
hint = "This is meant as a gradient index offset, so the value you give is actually divided by 400 in use."
endparam
}
```

Constructor Summary
`DefaultGradientTransfer()`

Method Summary
` float` `Iterate(float pr)`
call this to process another value in the sequence

Methods inherited from class common:Transfer
`Init, IterateSilent`

Methods inherited from class common:Generic
`GetParent`

Methods inherited from class Object

Constructor Detail

`public DefaultGradientTransfer()`
`public float Iterate(float pr)`
Description copied from class: `Transfer`
`Iterate` in class `Transfer`