3 * Copyright (C) 2006-2007 Tim Moore
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation; either version 2 of the
8 * License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22 #ifndef SIMGEAR_RENDER_CONSTANTS_HXX
23 #define SIMGEAR_RENDER_CONSTANTS_HXX
24 // Constants used in the scene graph, both node masks and render bins.
28 TERRAIN_BIT = (1 << 0),
29 MAINMODEL_BIT = (1 << 1),
30 CASTSHADOW_BIT = (1 << 2),
31 RECEIVESHADOW_BIT = (1 << 3),
33 PANEL2D_BIT = (1 << 5),
35 // Different classes of lights turned on by node masks
36 GROUNDLIGHTS0_BIT = (1 << 7),
37 GROUNDLIGHTS1_BIT = (1 << 8),
38 GROUNDLIGHTS2_BIT = (1 << 9),
39 RUNWAYLIGHTS_BIT = (1 << 10),
40 LIGHTS_BITS = (GROUNDLIGHTS0_BIT | GROUNDLIGHTS1_BIT | GROUNDLIGHTS2_BIT
43 BACKGROUND_BIT = (1 << 11),
44 // Everything else that isn't terrain. Initially for clouds;
45 // eventually for other models?
49 // Theory of bin numbering:
51 // Normal opaque objects are assigned bin 0.
53 // Random objects like trees may have transparency, but there are too
54 // many to depth sort individually. By drawing them after the terrain
55 // we can at least keep the sky under the ground from poking through.
57 // Point lights blend with the terrain to simulate attenuation but
58 // should completely obscure any transparent geometry behind
59 // them. Also, they should be visible through semi-transparent cloud
60 // layers, so they are rendered before the cloud layers.
62 // Clouds layers can't be depth sorted because they are too big, so
63 // they are rendered before other transparent objects. The layer
64 // partial ordering is handled in the clouds code.
66 // OSG and its file loaders throw all transparent objects into bin 10.
69 RANDOM_OBJECTS_BIN = 2,
72 TRANSPARENT_BIN = 10 // assigned by OSG