brender-v1.3.2/core/inc/light.h
2022-05-03 13:10:51 -07:00

91 lines
1.6 KiB
C

/*
* Copyright (c) 1993-1995 by Argonaut Technologies Limited. All rights reserved.
*
* $Id: light.h 1.3 1998/06/17 16:11:46 jon Exp $
* $Locker: $
*
* Definitons for a light
*/
#ifndef _LIGHT_H_
#define _LIGHT_H_
enum {
/*
* Type of light
*/
BR_LIGHT_TYPE = 0x0003,
BR_LIGHT_POINT = 0x0000,
BR_LIGHT_DIRECT = 0x0001,
BR_LIGHT_SPOT = 0x0002,
BR_LIGHT_AMBIENT = 0x0003,
/*
* Flag indicating that calculations are done in view space
*/
BR_LIGHT_VIEW = 0x0004,
/*
* Flag indicating that linear falloff should be used
*/
BR_LIGHT_LINEAR_FALLOFF = 0x0008,
};
/*
* Definition of cutoff volumes - vertex is lit if it falls within any of
* a number of convex volumes, and partially lit if it falls within the
* falloff distance from any
*/
typedef struct br_light_volume {
br_scalar falloff_distance;
br_convex_region *regions;
br_uint_32 nregions;
} br_light_volume;
typedef struct br_light {
/*
* Optional identifier
*/
char *identifier;
/*
* Type of light
*/
br_uint_8 type;
/*
* Colour of light (if renderer supports it)
*/
br_colour colour;
/*
* Attenuation of light with distance - constant, linear, and quadratic
* l & q only apply to point and spot lights
*/
br_scalar attenuation_c;
br_scalar attenuation_l;
br_scalar attenuation_q;
/*
* Cone angles for spot light
*/
br_angle cone_outer;
br_angle cone_inner;
/*
* Sphere radii for linear falloff and cutoff of normally attenuated lights
*/
br_scalar radius_outer;
br_scalar radius_inner;
/*
* Cutoff volumes
*/
br_light_volume volume;
void * user;
} br_light;
#endif