Difference between revisions of "Category:LSL Light"

From Second Life Wiki
Jump to navigation Jump to search
Line 13: Line 13:
An example - How to generate, switch and change light from LSL:
An example - How to generate, switch and change light from LSL:


 
<lsl-file>
----
<lsl>
// simple light source demonstrator
// simple light source demonstrator
// 8feb07 "tetsumo kuri"
// 8feb07 "tetsumo kuri"
Line 59: Line 57:
     }
     }
}
}
</lsl>
</lsl-file>

Revision as of 07:50, 9 February 2007

Light sources

Headline text

Controlling Light sources

Light in SL is determined by the OpenGL standard which allows for eight lights. Traditionally and practically, two sources are reserved for the Sun and Moon, leaving six for incidental lighting. All eight are really generated on the client-side video card, so different video card models may show the same scene slightly differently. If more than six user light sources are present in a scene, only the light from the closest six will show in the environment.

An example - How to generate, switch and change light from LSL:

<lsl-file> // simple light source demonstrator // 8feb07 "tetsumo kuri" // thanks to squee janitor for line to dissect

integer light_s = TRUE; // "_s" for status

default {

   state_entry()
   {
     //  llSetText("click me",<1,0,0.6>,.5);  // in case you like labels
   }
   touch_start(integer total_number)
   {
       if ( light_s )
       { 
           light_s = FALSE;
           // fullbright doesn't have anything to do with light in NEW(2006?) lighting model 
           // setting fullbright does look good though
           llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,FALSE]);
             
           llSetPrimitiveParams([PRIM_POINT_LIGHT, FALSE,   // if this is false, light is off,
                                    <0.0,1.0,0.0>,1.0, 10.0, 0.5]); // rest of params don't matter
       }            
       else
       {
           light_s = TRUE;
           //llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,TRUE]);   //leave fullbright commented for now
           llSetPrimitiveParams([PRIM_POINT_LIGHT,TRUE,
                                   <1.0,0.7,1.0>,  // light color vector range: 0.0-1.0 *3
                                   1.0,            // intensity    (0.0-1.0)
                                   10.0,           // radius       (.1-10.0)
                                   0.6 ]);         // falloff      (.01-1.0)
               
           // this could have been done in one line, like this     
           //llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,FALSE,PRIM_POINT_LIGHT,TRUE,<1.0,1.0,0.5>,20,1.0,0.5]);
           //      ... but thats kinda hard to take in...       
       }
       //llSay(0, " Click!");
   }

} </lsl-file>