Difference between revisions of "UHSL2RGB"
Void Singer (talk | contribs) m (new) |
Void Singer (talk | contribs) m (~correction of stupid mistake) |
||
Line 49: | Line 49: | ||
|content= | |content= | ||
* To convert RGB or HSL values from other software to percentage based, simply divide each value by it's range | * To convert RGB or HSL values from other software to percentage based, simply divide each value by it's range | ||
** | ** range is determined by subtracting the lower bound from the upper bound. | ||
* To convert RGB or HSL percentages to your preferred format, multiply the value by the preferred range. | * To convert RGB or HSL percentages to your preferred format, multiply the value by the preferred range. | ||
}} | }} | ||
{{void-box | {{void-box |
Revision as of 20:30, 16 December 2011
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials | User-Defined Functions | Void's User Page |
User-Defined Function: vector uHSL2RGB( vector vColHSL );
Returns a percentage based vector that is vColHSL converted to a RGB.
- vColHSL: source color as percentages of range.
Code:
- LSO: 420 bytes
- MONO: 1536 bytes
<lsl>vector uHSL2RGB( vector vColHSL ){ //-- <H, S, L> vector vColRGB; if (vColHSL.y){ vColRGB.x = (1.0 - llFabs( 2 * vColHSL.z - 1.0 )) * vColHSL.y; //-- C vColHSL.x = vColHSL.x * 6.0; //-- H' vColRGB.y = vColRGB.x * (1.0 - llFabs( (integer)vColHSL.x % 2 + (vColHSL.x - (integer)vColHSL.x) - 1.0 )); //-- X vColRGB = llList2Vector( [<vColRGB.x, vColRGB.y, vColRGB.z>, <vColRGB.y, vColRGB.x, vColRGB.z>, <vColRGB.z, vColRGB.x, vColRGB.y>, <vColRGB.z, vColRGB.y, vColRGB.x>, <vColRGB.y, vColRGB.z, vColRGB.x>, <vColRGB.x, vColRGB.z, vColRGB.y>], (integer)vColHSL.x % 6 ) + (vColHSL.z - 0.5 * vColRGB.x) * <1.0, 1.0, 1.0>; }else{ vColRGB.x = vColRGB.y = vColRGB.z = vColHSL.z; //-- greyscale } return vColRGB; } /*//-- Anti-License Text --//*/ /*// Contributed Freely to the Public Domain without limitation. //*/ /*// 2011 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/ /*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/
/*//-- --//*/</lsl>Caveats
- This function does not check input HSL validity.
- expected values are in percentage of range (value / range)
- HSL is kept percentage based here for best compatibility with image mapping
Notes
- To convert RGB or HSL values from other software to percentage based, simply divide each value by it's range
- range is determined by subtracting the lower bound from the upper bound.
- To convert RGB or HSL percentages to your preferred format, multiply the value by the preferred range.