Difference between revisions of "PRIM POINT LIGHT"

From Second Life Wiki
Jump to: navigation, search
m (condensed example script)
m (fiddling)
Line 61: Line 61:
 
                 PRIM_POINT_LIGHT, TRUE, COLOR_ORANGE, 1.0, 10.0, 0.6]);
 
                 PRIM_POINT_LIGHT, TRUE, COLOR_ORANGE, 1.0, 10.0, 0.6]);
 
         }
 
         }
 +
    }
 +
}
 +
</lsl>
 +
 +
A compact version of the above:-
 +
<lsl>
 +
integer switch;
 +
default
 +
{
 +
    touch_start(integer total_number)
 +
    {
 +
        llSetPrimitiveParams(
 +
        [      PRIM_FULLBRIGHT, ALL_SIDES, switch = !switch,
 +
                PRIM_POINT_LIGHT, switch, <1, 0.5, 0.1> *  switch, 1, 10, 0.6 ] );     
 
     }
 
     }
 
}
 
}

Revision as of 11:42, 21 January 2014

Description

Constant: integer PRIM_POINT_LIGHT = 23;

The integer constant PRIM_POINT_LIGHT has the value 23

PRIM_POINT_LIGHT is used to configure the point light configuration of the prim

llSetPrimitiveParams

[ PRIM_POINT_LIGHT, integer boolean, vector color, float intensity, float radius, float falloff ]
• integer boolean TRUE enables, FALSE disables
• vector color color in RGB <R, G, B> (<0.0, 0.0, 0.0> = black, <1.0, 1.0, 1.0> = white)
• float intensity ranges from 0.0 to 1.0
• float radius ranges from 0.1 to 20.0
• float falloff ranges from 0.01 to 2.0

When used with llSetPrimitiveParams & llSetLinkPrimitiveParams & llSetLinkPrimitiveParamsFast

llGetPrimitiveParams

llGetPrimitiveParams([ PRIM_POINT_LIGHT ]);

Returns the list [ integer boolean, vector color, float intensity, float radius, float falloff ]

• integer boolean TRUE enables, FALSE disables
• vector color color in RGB <R, G, B> (<0.0, 0.0, 0.0> = black, <1.0, 1.0, 1.0> = white)
• float intensity ranges from 0.0 to 1.0
• float radius ranges from 0.1 to 20.0
• float falloff ranges from 0.01 to 2.0

Caveats

  • Viewers that do not have advanced lighting enabled can only render 6 lights at a time and projectors will be rendered as omnidirectional light sources. (OpenGL limitations allow for 8 light sources, SL appears to reserve one each for the Sun and Moon.)
    • Viewers that do have advanced lighting enabled can render as many lights as their graphics card allows; it is not hard-limited by the viewer.
  • Lights with a high intensity have a wash-out effect when overlapping. Keep this in mind when using multiple lights. Never create an abundance of lights to get around the 6 light maximum in basic lighting, as viewers with advanced lighting will be washed out and may suffer from client lag.
  • There are no LSL functions that allow you to set projector values (texture, FOV, focus, and ambiance).
All Issues ~ Search JIRA for related Bugs

Examples

<lsl> integer isLightTurnedOn;

default {

   touch_start(integer total_number)
   {

// toggle isLightTurnedOn between TRUE and FALSE

       isLightTurnedOn = !isLightTurnedOn;
       if (isLightTurnedOn)
       {
           llSetPrimitiveParams([
               PRIM_FULLBRIGHT, ALL_SIDES, FALSE,
               PRIM_POINT_LIGHT, FALSE, ZERO_VECTOR, 1.0, 10.0, 0.6]);
       }
       else
       {
           vector COLOR_ORANGE  = <1.000, 0.522, 0.106>;
           llSetPrimitiveParams([
               PRIM_FULLBRIGHT, ALL_SIDES, TRUE,
               PRIM_POINT_LIGHT, TRUE, COLOR_ORANGE, 1.0, 10.0, 0.6]);
       }
   }

} </lsl>

A compact version of the above:- <lsl> integer switch; default {

   touch_start(integer total_number)
   {
       llSetPrimitiveParams(
       [       PRIM_FULLBRIGHT, ALL_SIDES, switch = !switch,
               PRIM_POINT_LIGHT, switch, <1, 0.5, 0.1> *  switch, 1, 10, 0.6 ] );      
   }

} </lsl>

Deep Notes

Search JIRA for related Issues

Signature

integer PRIM_POINT_LIGHT = 23;