## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

# Lighting
[Crystal Space 3D Engine]

## Classes

struct | iBaseHalo
| This is the basic interface for all types of halos. More...
struct | iCrossHalo
| This is a halo which resembles a cross. More...
struct | iFlareHalo
| This is a halo which resembles a (solar) flare. More...
struct | iLight
| The iLight interface is the SCF interface for the csLight class. More...
struct | iLightCallback
| Set a callback which is called when this light color is changed. More...
struct | iLightingProcessData
| The iLightingProcessData interface can be implemented by a mesh object so that it can attach additional information for the lighting process. More...
struct | iLightingProcessInfo
| The iLightingProcessInfo interface holds information for the lighting system. More...
struct | iLightIterator
| Iterator to iterate over all static lights in the engine. More...
struct | iLightIterator
| Iterator to iterate over all static lights in the engine. More...
struct | iLightList
| This structure represents a list of lights. More...
struct | iLightManager
| An engine (3D or iso) can implement this interface for the benefit of mesh objects so that they can request lighting information from the engine. More...
struct | iLightSectorInfluence
| A light-sector influence (LSI). More...
struct | iNovaHalo
| This is a halo which resembles a nova. More...
struct | iShadowBlock
| A block of shadows represent the shadows that are casted by one iShadowCaster object. More...
struct | iShadowBlockList
| This is a list of shadow blocks. More...
struct | iShadowCaster
| An object that can cast shadows. More...
struct | iShadowIterator
| A shadow iterator allows someone to iterate over all shadows in a iShadowBlock or iShadowBlockList. More...
struct | iShadowReceiver
| An object that is interested in getting shadow information. More...

## Light flags

#define | CS_LIGHT_ACTIVEHALO 0x80000000
| If this flag is set, the halo for this light is active and is in the engine's queue of active halos.

## Attenuation modes

Attenuation controls how the brightness of a light fades with distance. Apart from the attenuation mode there are one to tree constants, which change meaning depending on attenuation mode. There are five attenuation formulas: (distance is distance between point for which lighting is computed and the light)

- no attenuation = light * 1
- linear attenuation = light * (1 - distance / constant1)
- inverse attenuation = light / distance
- realistic attenuation = light / distance^2
- CLQ, Constant Linear Quadratic = light / (constant1 + constant2*distance + constant3*distance^2)

enum | csLightAttenuationMode { CS_ATTN_NONE = 0, CS_ATTN_LINEAR = 1, CS_ATTN_INVERSE = 2, CS_ATTN_REALISTIC = 3, CS_ATTN_CLQ = 4 }

## Light Dynamic Types

enum | csLightDynamicType { CS_LIGHT_DYNAMICTYPE_STATIC = 1, CS_LIGHT_DYNAMICTYPE_PSEUDO = 2, CS_LIGHT_DYNAMICTYPE_DYNAMIC = 3 }

## Defines

#define | CS_DEFAULT_LIGHT_LEVEL 20
| Light level that is used when there is no light on the texture.
#define | CS_NORMAL_LIGHT_LEVEL 128
| Light level that corresponds to a normally lit texture.

## Enumerations

enum | csHaloType { cshtCross, cshtNova, cshtFlare }
| The possible halo-types. More...
enum | csLightType { CS_LIGHT_POINTLIGHT, CS_LIGHT_DIRECTIONAL, CS_LIGHT_SPOTLIGHT }
| Type of lightsource. More...

## Define Documentation

#define CS_DEFAULT_LIGHT_LEVEL 20

| Light level that is used when there is no light on the texture. Definition at line 89 of file light.h.

#define CS_LIGHT_ACTIVEHALO 0x80000000

| If this flag is set, the halo for this light is active and is in the engine's queue of active halos. When halo become inactive, this flag is reset. Definition at line 57 of file light.h.

#define CS_NORMAL_LIGHT_LEVEL 128

| Light level that corresponds to a normally lit texture. Definition at line 91 of file light.h.

## Enumeration Type Documentation

enum csHaloType

The possible halo-types.

Enumerator:

  cshtCross | Cross halo.
  cshtNova | Nova halo.
  cshtFlare | Flare halo.

Definition at line 36 of file halo.h.

enum csLightAttenuationMode

Enumerator:

  CS_ATTN_NONE | no attenuation: light * 1
  CS_ATTN_LINEAR | linear attenuation: light * (1 - distance / constant1)
  CS_ATTN_INVERSE | inverse attenuation: light / distance
  CS_ATTN_REALISTIC | realistic attenuation: light / distance^2
  CS_ATTN_CLQ | CLQ, Constant Linear Quadratic: light / (constant1 + constant2*distance + constant3*distance^2).

Definition at line 106 of file light.h.

enum csLightDynamicType

Enumerator:

  CS_LIGHT_DYNAMICTYPE_STATIC | A fully static light. Unless you are using shaders/renderloop that treat all lights as dynamic this light cannot move and cannot change color. Shadows are accurate and precalculated (if you use lightmaps).
  CS_LIGHT_DYNAMICTYPE_PSEUDO | A pseudo-dynamic light. Unless you are using shaders/renderloop that treat all lights as dynamic this light cannot move but it can change color. Shadows are accurate and precalculated (if you use lightmaps).
  CS_LIGHT_DYNAMICTYPE_DYNAMIC | A fully dynamic light. No shadows are calculated unless you use a shader/renderloop that does that in hardware.

Definition at line 63 of file light.h.

enum csLightType

Type of lightsource.

There are currently three types of lightsources:

- Point lights - have a position. Shines in all directions.
- Directional lights - have a direction and radius. Shines along it's major axis. The direction is 0,0,1.
- Spot lights - have both position and direction. Shines with full strength along major axis and out to the hotspot angle. Between hotspot and outer angle it will falloff, outside outer angle there shines no light. The direction is 0,0,1.

Enumerator:

  CS_LIGHT_POINTLIGHT | Point light.
  CS_LIGHT_DIRECTIONAL | Directional light.
  CS_LIGHT_SPOTLIGHT | Spot light.

Definition at line 136 of file light.h.