IDLgrLight objects have the following properties in addition to properties inherited from any superclasses. Properties with the word “Yes” in the “Get” column of the property table can be retrieved via IDLgrLight::GetProperty. Properties with the word “Yes” in the “Init” column of the property table can be set via IDLgrLight::Init. Properties with the word “Yes” in the “Set” column in the property table can be set via IDLgrLight::SetProperty.
Note: For a discussion of the property description tables shown below, see Modifying Object Property Descriptions.
Objects of this class have the following properties.
In addition, objects of this class inherit:
ALL
An anonymous structure that contains the values of all of the properties associated with the state of this object. State information about the object includes things like color, range, tick direction, etc., but not image, vertex, or connectivity data, or user values.
Note: The fields of this structure may change in subsequent releases of IDL.
Note: This structure returns ALPHA_CHANNEL, CLIP_PLANES, DEPTH_TEST_DISABLE, DEPTH_TEST_FUNCTION, DEPTH_WRITE_DISABLE, and [XYZ]RANGE properties that are consistent with other graphic objects. However, these properties are not used by the IDLgrLight object.
Property Type
|
Structure |
Name String
|
not displayed
|
Get: Yes |
Set: No |
Init: No |
Registered: No
|
ATTENUATION
A 3-element floating-point vector of the form [constant, linear, quadratic] that describes the factor by which light intensity is to fall with respect to distance from the light source. ATTENUATION applies only to Positional and Spot lights, as specified by the TYPE property. The overall attenuation factor is computed as follows:
attenuation = 1/(constant + linear*distance + quadratic*distance^2)
By default, the values are [1, 0, 0].
This property is registered as a user-defined property, but it is hidden by default.
Property Type
|
USERDEF |
Name String
|
Attenuation |
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: Yes
|
COLOR
A three-element byte vector specifying the RGB color of the light. The default is [255, 255, 255], which is a white light. The color of a light is ignored when graphics are sent to graphics destinations using the Indexed color model, in which case light intensities are scaled into the range of colors available on the graphics destination.
In a property sheet, this property appears as a color property.
Property Type
|
COLOR |
Name String
|
Color |
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: Yes
|
CONEANGLE
A floating-point value that specifies the angle (measured in degrees) of coverage for a spotlight. The default is 60.
Property Type
|
FLOAT |
Name String
|
Spotlight cone angle
|
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: Yes
|
DIRECTION
A three-element floating-point vector representing the direction in which a spotlight is to be pointed. The default is [0,0,-1].
Note: For directional lights, the light’s parallel rays follow a vector beginning at the position specified by LOCATION and ending at [0, 0, 0].
This property is registered as a user-defined property, but it is hidden by default.
Property Type
|
USERDEF |
Name String
|
Spotlight direction
|
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: Yes
|
FOCUS
A floating-point value that describes the attenuation of intensity for spotlights as the distance from the center of the cone of coverage increases. This factor is used as an exponent to the cosine of the angle between the direction of the spotlight and the direction from the light to the vertex being lighted. The default is 0.0.
Property Type
|
FLOAT |
Name String
|
Spotlight attenuation
|
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: Yes
|
HIDE
A Boolean value or enumerated list item that indicates whether this light should be enabled:
Value |
Property Sheet Value
|
Description |
0 |
True |
Enable light (the default)
|
1 |
False |
Disable light |
Note: If no lights are present in the view (or if all lights in the view are hidden), an ambient light will be provided by default.
Property Type
|
ENUMLIST |
Name String
|
Show |
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: Yes
|
INTENSITY
A floating-point value between 0.0 (darkest) and 1.0 (brightest) that indicates the intensity of the light. The default is 1.0.
Property Type
|
FLOAT |
Name String
|
Intensity |
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: Yes
|
LIGHT_INDEX
Use this property to allow a vertex shader program to identify individual light objects in a scene and to locate property information such as color or position associated with the light object. This property is only useful when the IDLgrShader object referenced by the SHADER property has a vertex shader program that does lighting calculations.
Set this property to a scalar integer between the values of -1 and 7, inclusive. If set to -1, IDL ignores this property. Otherwise, each light in a scene, up to the maximum number of 8, should have a unique index value. If any non-ambient light objects share LIGHT_INDEX property values, the object with a shared LIGHT_INDEX value encountered last in the scene deactivates all prior light objects with the same index value.
If you do not set this property, IDL automatically assigns an index value, but this value is unimportant unless you have a shader program performing lighting calculations. If your application is using a shader program, associate the light index with the OpenGL Shading Language (GLSL) light source. For example, if you set the LIGHT_INDEX property on an instance of a diffuse IDLgrLight object to the value of 3, the following GLSL shader language code retrieves the color of that light:
Vec4 diffuse_light_color = gl_LightSource[3].diffuse
where gl_LightSource is a built-in GLSL uniform variable.
Note: IDL does not store ambient lights in the gl_LightSource table. In a GLSL shader program, retrieve the color of the IDL ambient light using uniform variable gl_LightModelProperties.ambient, the built-in GLSL ambient light uniform variable.
Property Type
|
Integer |
Name String
|
not displayed
|
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: No
|
LOCATION
A floating-point vector of the form [x, y, z] describing the position of the light. By default, the position is [0, 0, 0]. IDL converts, maintains, and returns this data as double-precision floating-point.
This property is registered as a user-defined property, but it is hidden by default.
Property Type
|
USERDEF |
Name String
|
Location |
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: Yes
|
PALETTE
An object reference to a palette object (an instance of the IDLgrPalette object class) that specifies the red, green, and blue values of the color lookup table to be associated with the image if it is an indexed color image. This property is ignored if the image is a greyscale or RGB image.
Note: This table is only used when the destination is an RGB model device. The Indexed color model writes the indices directly to the device. In order to ensure that these colors are used when the image is displayed, this palette must be copied to the graphics destination’s palette for any graphics destination that uses the Indexed color model.
Note: Objects specified via this property are not automatically cleaned up when the IDLgrLight object is destroyed.
This property is registered as a user-defined property, but it is hidden by default.
Property Type
|
USERDEF |
Name String
|
Color palette |
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: Yes
|
PARENT
An object reference to the object that contains this object.
Property Type
|
Object reference
|
Name String
|
not displayed
|
Get: Yes |
Set: No |
Init: No |
Registered: No
|
REGISTER_PROPERTIES
A Boolean value that determines whether to register properties available for this object. If this property is set, all properties marked in this properties section as “Registered: Yes” will be registered for display in a property sheet. This property is useful mainly when creating iTools. By default, no properties are registered.
Property Type
|
Boolean |
Name String
|
not displayed
|
Get: No |
Set: No |
Init: Yes
|
Registered: No
|
SHADER
An object reference to an IDLgrShader object (or an object containing IDLgrShader as a superclass).
Note: IDLgrLight ignores this property.
Property Type
|
Object reference
|
Name String
|
not displayed
|
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: No
|
TYPE
An integer value or an enumerated list item that indicates the type of light. Valid values are:
Value |
Property Sheet Value
|
Description |
0 |
Ambient |
An ambient light is a universal light source, which has no direction or position. An ambient light illuminates every surface in the scene equally, which means that no edges are made visible by contrast. Ambient lights control the overall brightness and color of the entire scene. If no value is specified for the TYPE property, an ambient light is created.
|
1 |
Positional |
A positional light supplies divergent light rays, and will make the edges of surfaces visible by contrast if properly positioned. A positional light source can be located anywhere in the scene.
|
2 |
Directional |
A directional light supplies parallel light rays. The effect is that of a positional light source located at an infinite distance from scene.
|
3 |
Spotlight |
A spotlight illuminates only a specific area defined by the light’s position, direction, and the cone angle, or angle which the spotlight covers
|
Property Type
|
ENUMLIST |
Name String
|
Type |
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: Yes
|
XCOORD_CONV
A floating-point vector, [s0, s1], of scaling factors that convert X coordinates from data units to normalized units. The formula for the conversion is as follows:
NormalizedX = s0 + s1 * DataX
Recommended values are:
[(-Xmin)/(Xmax-Xmin), 1/(Xmax-Xmin)]
The default is [0.0, 1.0]. IDL converts, maintains, and returns this data as double-precision floating-point.
Property Type
|
Double-precision floating-point vector
|
Name String
|
not displayed
|
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: No
|
YCOORD_CONV
A floating-point vector, [s0, s1], of scaling factors that convert Y coordinates from data units to normalized units. The formula for the conversion is as follows:
NormalizedY = s0 + s1 * DataY
Recommended values are:
[(-Ymin)/(Ymax-Ymin), 1/(Ymax-Ymin)]
The default is [0.0, 1.0]. IDL converts, maintains, and returns this data as double-precision floating-point.
Property Type
|
Double-precision floating-point vector
|
Name String
|
not displayed
|
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: No
|
ZCOORD_CONV
A floating-point vector, [s0, s1], of scaling factors that convert Z coordinates from data units to normalized units. The formula for the conversion is as follows:
NormalizedZ = s0 + s1 * DataZ
Recommended values are:
[(-Zmin)/(Zmax-Zmin), 1/(Zmax-Zmin)]
The default is [0.0, 1.0]. IDL converts, maintains, and returns this data as double-precision floating-point.
Property Type
|
Double-precision floating-point vector
|
Name String
|
not displayed
|
Get: Yes |
Set: Yes |
Init: Yes
|
Registered: No
|